Подключаем такие модули библиотеки:
Функция инициализации USART1:
Функция передачи байта через USART:
Фунция передачи строки через USART:
Для использования необходимо провести инициализацию соответствующей функцией и отправить нужные байты.
#include "stm32f4xx.h"#include "stm32f4xx_gpio.h"#include "stm32f4xx_rcc.h"#include "stm32f4xx_usart.h"
Объявим две структуры для хранения настроек периферии. //Структуры для инициализации GPIOA и USART1GPIO_InitTypeDef GPIO_InitStruct;USART_InitTypeDef USART_InitStruct;
Прототипы функций:void Usart1_Init(void); //Объявление функции инициализации периферииvoid Usart1_Send_symbol(uint8_t); //Объявление функции передачи символаvoid Usart1_Send_String(char* str); //Объявление функции передачи строкиФункция инициализации USART1:
void Usart1_Init() {//Включаем тактирование GPIOA, USART1RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//Инициализация вывода PA9 - USART1_TxGPIO_InitStruct.GPIO_Pin = GPIO_Pin_9; //Настройки вывода PA9GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; // скорость портаGPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF; // режим альтернативной функцииGPIO_Init(GPIOA, &GPIO_InitStruct); // заданные настройки сохраняем в регистрах GPIOА//Инициализация вывода PA10 - USART1_RxGPIO_InitStruct.GPIO_Pin = GPIO_Pin_10; // настройки вывода PA10GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF; // режим альтернативной функцииGPIO_Init(GPIOA, &GPIO_InitStruct); // заданные настройки сохраняем в регистрах GPIOАGPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);//Инициализация USART1USART_InitStruct.USART_BaudRate = 1200; // скорость обмена 1200 бодUSART_InitStruct.USART_WordLength = USART_WordLength_8b; // длина слова 8 битUSART_InitStruct.USART_StopBits = USART_StopBits_1; // 1 стоп-битUSART_InitStruct.USART_Parity = USART_Parity_No ; // без проверки четностиUSART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // без аппаратного контроляUSART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; // включен передатчик и приемник USART1USART_Init(USART1, &USART_InitStruct); // заданные настройки сохраняем в регистрах USART1USART_Cmd(USART1, ENABLE); // включаем USART1}
Функция передачи байта через USART:
void Usart1_Send_symbol(uint8_t data) {while(!(USART1->SR & USART_SR_TC)); // проверяем установку флага TC - завершения предыдущей передачиUSART1->DR = data; // записываем значение в регистр данных - передаем символ}Фунция передачи строки через USART:
void Usart1_Send_String(char* str) {uint8_t i=0;while(str[i]) {Usart1_Send_symbol(str[i]);i++;}// передаем сивол конца строкиUsart1_Send_symbol('\n');Usart1_Send_symbol('\r');}Для использования необходимо провести инициализацию соответствующей функцией и отправить нужные байты.
int main() {Usart1_Init(); //Вызов функции инициализации периферии//Передаем строку, сообщающую о готовности микроконтроллера к обмену даннымиUsart1_Send_String("I'm ready!");while(1) {}
Комментариев нет:
Отправить комментарий