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

共1条 1/1 1 跳转至

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

院士
2024-03-20 19:55:03     打赏

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

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

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

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

while(1)
{
    if(check fifo is empty?) == empty
    {
        break;    // FIFO clear done!
    }
    tmp = Usart_data_get(usart1);
    (unused)tmp;
}

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

LL_USART_RequestRxDataFlush(USART1);

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

亲爱的网友们,你们学会了吗?今天的分享就到这里了,我们下期再见!





关键词: USART     RXFRQ     STM32C0    

共1条 1/1 1 跳转至

回复

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