Ім'я файлу: ППММ1.docx
Розширення: docx
Розмір: 53кб.
Дата: 29.12.2020
скачати

ХАРЬКОВСКИЙ НАЦИОНАЛЬНЫЙ УНИВЕРСИТЕТ РАДИОЭЛЕКТРОНИКИ


Кафедра КИТАМ


Отчет

по лабораторной работе № 1

по дисциплине «Проектирование устройств на микроконтролерах и ПЛИС. Микроконтроллеры»

на тему: «вивчення архітектури і принципів роботи портів вводу-виводу процесора stm32f407vgt»
Выполнили: Принял:

ст. гр. доц. каф. МТС

2018

1 Изучение архитектуры и принципа работы портов ввода вывода STM32F407VGT



    1. Цель работы:

Освоить аппаратные и программные принципы конфигурирования и работы с портами ввода-вывода.
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. Практическая часть


Таблица 1. – Дано




выход PCn

Число повторений N

T, c

световой эффект

Тактовая частота процесора

Вариант 1

PD12

3

1

Бегущий огоньок

100МГц


В ходе лабораторной работы была разработана программа которая по нажатию каждой кнопки высвечивала определенную комбинацию диодов, часть программы приведена ниже.

/* 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) увидеть определенную комбинацию миганий диодов.
скачати

© Усі права захищені
написати до нас