Универсальный синхронный асинхронный приемник-передатчик (USART) предлагает гибкие средства полнодуплексного обмена данными с внешним оборудованием, требующим стандартного асинхронного формата последовательных данных NRZ. USART предлагает очень широкий диапазон скоростей передачи с использованием генератора дробных скоростей.
Программирование длины слова:
Для передачи данных по USART нам понадобится плата преобразования USB to TTL (к примеру на чипе CP2102):
На плате будем использовать пины PA9 и PA10. Соединяем Rx на Tx а Tx на Rx соответственно.
Также нам необходимо поставить программу отслеживания на COM порту от нашей плату. Воспользуемся программой Terminal1_9_b, есть на странице Загрузки.
Скачиваем, устанавливаем, запускаем и настраиваем на наш порт:

Создаем новый проект в Keil и подключаем следующие библиотеки:
Создаем файл main.c и вставляем код программы:
#include "stm32f10x.h"
#define F_CPU 72000000UL
int main(void)
{
SystemInit();
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_AFIOEN; // GPIOA Clock ON. Alter function clock ON
GPIOA->CRH &= ~GPIO_CRH_CNF9; // Clear CNF bit 9
GPIOA->CRH |= GPIO_CRH_CNF9_1; // Set CNF bit 9 to 10 - AFIO Push-Pull
GPIOA->CRH |= GPIO_CRH_MODE9_0; // Set MODE bit 9 to Mode 01 = 10MHz
RCC->APB2ENR |= RCC_APB2ENR_USART1EN; // USART1 Clock ON
USART1->BRR = 0xEA6; // Bodrate for 19200 on 72Mhz
USART1->CR1 |= USART_CR1_UE | USART_CR1_TE | USART_CR1_RE; // USART1 ON, TX ON, RX ON
USART1->DR = 10; // Send Byte!
// Config CRL
GPIOB->CRL &= ~GPIO_CRL_CNF5; // Clear CNF bit 5. Mode 00 - Push-Pull
GPIOB->CRL |= GPIO_CRL_MODE5_0; // Set bit MODE for pin 5. Mode 01 = Max Speed 10MHz
while(1)
{
}
}


