Подключаем такие модули библиотеки:
Функция инициализации USART1:
Функция передачи байта через USART:
Фунция передачи строки через USART:
Для использования необходимо провести инициализацию соответствующей функцией и отправить нужные байты.
#include "stm32f4xx.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_usart.h"
Объявим две структуры для хранения настроек периферии.
//Структуры для инициализации GPIOA и USART1
GPIO_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, USART1
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,
ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,
ENABLE);
//Инициализация вывода PA9 - USART1_Tx
GPIO_InitStruct.GPIO_Pin =
GPIO_Pin_9;
//Настройки вывода PA9
GPIO_InitStruct.GPIO_Speed =
GPIO_Speed_50MHz;
// скорость порта
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
//
режим альтернативной функции
GPIO_Init(GPIOA, &GPIO_InitStruct);
//
заданные настройки сохраняем в регистрах GPIOА
//Инициализация вывода PA10 - USART1_Rx
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10;
//
настройки вывода PA10
GPIO_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);
//Инициализация USART1
USART_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;
// включен передатчик и приемник USART1
USART_Init(USART1, &USART_InitStruct);
//
заданные настройки сохраняем в регистрах USART1
USART_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) {
}
Комментариев нет:
Отправить комментарий
ваше мнение...