这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 寄存器上新——USARTRQR的RXFRQ位的奇妙作用

共6条 1/1 1 跳转至

寄存器上新——USARTRQR的RXFRQ位的奇妙作用

菜鸟
2024-12-21 22:10:57     打赏

最近从ST官方顺了一块STM32C031开发板,在使用其部署Modbus-RTU从站时,认真阅读了STM32C031的技术开发手册,发现这款诞生于新时代的芯片,不单单仅在工艺上面采用了新产品线,而且设计理念上面也进行了更新。赞一下!

在阅读USART章节时,看到了USART_RQR寄存器及RXFRQ位的功能,这个新增功能非常适合我们对硬件操作。

在之前,ST公司的产品,如F103系列,串口外设没有FIFO,在接收数据时,每次均需要打断MCU正常工作,进行一次中断的压栈与出栈操作,浪费了一定性能。

对于其它品牌的MCU,设计了FIFO功能,但FIFO功能需要嵌入式软件工程师自己管理。对于年轻,初次使用硬件外设功能的工程师则是一种折磨,调试过程也是一种煎熬。具体来说,Usart硬件FIFO将会一直工作,并保存串口接收数据,但此数据有可能是脏数据,因此,在正式启用串口接收功能时,必须要先清除FIFO里面已有的数据。其它品牌的MCU则采用了最原始的方案——循环读取。

view plaincopy to clipboardprint?

  1. while(1)  

  2. {  

  3.     if(check fifo is empty?) == empty  

  4.     {  

  5.         break;    // FIFO clear done!  

  6.     }  

  7.     tmp = Usart_data_get(usart1);  

  8.     (unused)tmp;  

  9. }  

但现在STM32C031芯片则更像是吸取了前人的经验而重构出来的方案,仅需要置位一下:

view plaincopy to clipboardprint?

  1. LL_USART_RequestRxDataFlush(USART1);  

就是这样简单的一条语句即完成了上述复杂而阻塞的while()循环。这对于嵌入式软件开发人员简直方便的不要不要的。






关键词: 寄存器     USARTRQR    

专家
2024-12-21 22:13:26     打赏
2楼

感谢分享


专家
2024-12-21 22:18:06     打赏
3楼

感谢分享


专家
2024-12-21 22:19:37     打赏
4楼

感谢分享


专家
2024-12-22 07:37:04     打赏
5楼

看一下


专家
2024-12-22 09:13:11     打赏
6楼

感谢楼主分享


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]