Перейти к содержимому

#10. USART (CMSIS)

Универсальный синхронный асинхронный приемник-передатчик (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)
 {
 }
}
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x