ХАРЬКОВСКИЙ НАЦИОНАЛЬНЫЙ УНИВЕРСИТЕТ РАДИОЭЛЕКТРОНИКИ Кафедра КИТАМ Отчет по лабораторной работе № 1 по дисциплине «Проектирование устройств на микроконтролерах и ПЛИС. Микроконтроллеры» на тему: «вивчення архітектури і принципів роботи портів вводу-виводу процесора stm32f407vgt» Выполнили: Принял: ст. гр. доц. каф. МТС 2018 1 Изучение архитектуры и принципа работы портов ввода вывода STM32F407VGT Цель работы: Освоить аппаратные и программные принципы конфигурирования и работы с портами ввода-вывода. 1.2 Теоретическая часть Входи можна сконфігурувати як звичайні входи (No pull-up and no pull_down), з підтяжкою до живлення (Pull-up) чи з підтяжкою до землі (Pull-down). Виходи слід конфігурувати як звичайні виходи GPIO Mode – Output Push Pull. Також можливо обрати швидкодію виходів: Low, Medium, High, Very High При програмуванні ліній вводу виводу використовуються функції бібліотеки stm32f1xx_hal_gpio.c. Функція, що записує у пін GPIO_Pin деякого порта GPIOx «0» або «1». HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) PinState може приймати значення GPIO_PIN_RESET або GPIO_PIN_SET. Наприклад, подаємо на вихід РА1 логічну «1» HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET) Функція, що інверує пін GPIO_Pin деякого порта GPIOx HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) Функція, що зчитує стан деякого піна GPIO_Pin порта GPIOx HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) Электрическая принципиальная схема подключения кнопок и светодиодов до микроконтроллера приведена на рис.1 Рисунок 1 – Электрическая принципиальная схема подключения кнопок и светодиодов до микроконтроллера Практическая часть Таблица 1. – Дано
В ходе лабораторной работы была разработана программа которая по нажатию каждой кнопки высвечивала определенную комбинацию диодов, часть программы приведена ниже. /* USER CODE BEGIN WHILE */ for(uint32_t i=0;i<3;i++){ HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); HAL_Delay(1000); HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); HAL_Delay(1000); } while (1) { if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_6)==GPIO_PIN_RESET){ HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_SET); } else HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15, GPIO_PIN_RESET); if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_8)==GPIO_PIN_RESET){ // HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15, GPIO_PIN_SET); for(uint32_t i=0;i<4;i++){ HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); HAL_Delay(500); HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_13); HAL_Delay(500); HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_13); HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_14); HAL_Delay(500); HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_14); HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_15); HAL_Delay(500); HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_15); }} else HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15, GPIO_PIN_RESET); if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8)==GPIO_PIN_RESET){ HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_SET); } else HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15, GPIO_PIN_RESET); if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_10)==GPIO_PIN_RESET){ HAL_GPIO_WritePin(GPIOD, GPIO_PIN_15, GPIO_PIN_SET); } else HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15, GPIO_PIN_RESET); /*se HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15, GPIO_PIN_RESET); HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); HAL_Delay(500); HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_13); HAL_Delay(500); HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_13); HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_14); HAL_Delay(500); HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_14); HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_15); HAL_Delay(500); HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_15); */ /* USER CODE END WHILE */ ВЫВОДЫ В ходе лабораторной работы были освоены аппаратные и программные принципы конфигурирования и работы с портами ввода-вывода, также Электрическая принципиальная схема подключения кнопок и светодиодов к микроконтроллеру, после чего была разработана программа алгоритм которой позволил при нажатии любой кнопки (1-4) увидеть определенную комбинацию миганий диодов. |