计算机系统应用教程网站

网站首页 > 技术文章 正文

STM32串口通讯注意事项 stm32串口接收不定长数据

btikc 2024-10-12 11:44:37 技术文章 8 ℃ 0 评论

1.通过串口不断发送数据

库函数中的

void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);

函数不具备缓存作用,当我们需要连续不断发送一段数据时,我们需要等待前一次数据发送完成,放置数据丢失错误

void usart2_send_char(u8 _char){ /* 等待上一次发送完成*/

while( !(USART2->SR & (1 << USART2_SR_TC) )) ;

USART2->DR = _char ;

}

2.通过中断接受数据

通过中断中断接受数据时我们可以通过读取数据寄存器中的值使硬件自动清除挂起的接收中断标志位,为了防止其他外设功能的错误,我们应该对每一个中断都养成手动清除中断标志位的习惯。

void USART2_IRQHandler(void) {

u8 rec ;

if (USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) { rec = USART_ReceiveData(USART2) ; usart2_send_char(rec) ;

USART_ClearITPendingBit(USART2 , USART_IT_RXNE); }

}

同时,使用串口调试助手时应该注意发送区的\r\n(即换行),因为这个是不可见但是是有效的发送数据。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表