我是嵌入式系统的初学者。我正在尝试在 STM32F103C8(即Blue Pill板)的 UART2 上写入数据,并希望使用连接到STM32F103C8 板的UART2的FTDI适配器在我的计算机的一个端口中查看数据。但是在我的控制台上,我收到了一些随机的方块,而不是我想要传输的字符。
这是我用Keil IDE编写的代码。
#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
- 控制流 = 无
我怎样才能解决这个问题?