2025-11-08 05:40:31
STM32串口中断就是当串口收到数据时自动发出来的信号。就像快递到了门口会敲门一样,串口每接收到一个字节,硬件就会通知CPU来处理数据。这时候CPU就会暂停手头的工作,专门去读取收到的数据,处理完再接着干原来的事。程序不用一直守着看有没有数据,这样就不会让CPU一直忙于等待数据,还能同时干别的活。
为什么是这个答案呢?因为STM32的串口寄存器有个RXNE位,当这个位被置1时,就表示有数据可以读。就像手机收到短信会亮红灯一样,这个信号会触发中断请求。根据参考手册,开启中断需要把IMR寄存器的对应位设1,比如USCI_A的 bit 5。中断服务函数里要写好读取数据寄存器的代码,比如用USART_ReceiveData(USART1)这个指令,读出来的数据会存在RDR寄存器里。如果数据没及时读走,RXNE位又会变高,形成循环提醒。这样设计的好处是硬件自动管理数据流,软件只需处理关键步骤,就像自动回复短信一样省心。
模拟效果:
当数据来的时候,CPU就会自动发个中断信号。就像快递敲门一样,这时候程序暂停原来的事去处理数据。接收寄存器非空的时候,硬件会触发中断请求。根据参考手册,开启中断要设置IMR寄存器的bit5。中断服务函数里要读取RDR寄存器,比如用USART_ReceiveData指令。如果数据没及时读走,RXNE位又会变高,形成循环提醒。这样设计的好处是硬件自动管理数据流,软件只需处理关键步骤,就像自动回复短信一样省心。
本题链接: