Я новичок во встраиваемых системах. Я пытаюсь записать данные на UART2 STM32F103C8 (т. Е. синий Таблетка) и хотите видеть данные в одном из портов моего компьютера с помощью адаптера FTDI, который подключен к UART2 устройства плата STM32F103C8. Но на своей консоли я получаю какой-то случайный квадратный блок вместо символа, который хочу передать.
Вот мой код, написанный в IDE Keil.
#include "stm32f10x.h" // Device header
void usart2_init(void);
void USART_write(int data);
void delayMs(int delay);
int main(void)
{
usart2_init();
while(1)
{
USART_write('A');
delayMs(5000);
}
}
void usart2_init(void)
{
// Enable clock source for USART2
RCC->APB1ENR |= 0x20000; // 0b 0000 0000 0000 0010 0000 0000 0000 0000
RCC->APB2ENR |= 0x4;
GPIOA->CRL |= 0x900; // Set PA2 as TX pin (AF)
USART2->BRR = 0x341; // Setting Baudrate to 9600 @8 MHz.
USART2->CR1 |= 0x00008; // Enable TX only
USART2->CR1 |= 0x02000; // Enable USART module by setting bit 13 to 1 i
USART->CR1 register
}
void USART_write(int data)
{
// We need to wait until Tx buffer is empty for sending data.
while(!(USART2->SR & 0x0080)); // 0x0080
USART2->DR = (data & 0xFF);
}
void delayMs(int delay)
{
int i;
for( ; delay>0 ; delay--)
{
for(i=0; i<3195; i++)
{
}
}
}
Ниже я приложил скриншот во время отладки.
Нажмите здесь, чтобы увидеть снимок экрана.
Вы можете увидеть нежелательный квадратный блок вместо символа вместо символов, которые я хочу передать. На изображении вы также можете увидеть регистры UART и их значения. Я использую ST-LINK2 для загрузки прошивки .
Я упускаю какую-то информацию или делаю ошибку при работе с FTDI и Tera Term? Это моя конфигурация Tera Term:
- Скорость передачи = 9600
- Данные = 8 бит
- Четность = нет
- Стоповый бит = 1
- Поток управления = нет
Как я могу это исправить?