2025-11-08 05:40:25
STM32的串口接收中断要关就得让CPU别去管这个事件了。就像你手机收不到短信提醒得先关通知一样,得在代码里给中断开关按个暂停键。具体操作是找到对应的NVIC寄存器,把那个中断优先级设成最低,或者直接关掉中断使能。比如F407的NVIC_ISPR里有个位,往里写1就屏蔽了接收中断。
为啥得这么干呢?因为中断是靠硬件自动触发的,不关的话CPU会一直被中断信号拽进来处理数据。比如你写了个串口读取程序,但中途想干点别的,不关中断的话新任务就插不进去了。查手册看到F407的NVIC优先级分组是4位,所以ISPR每个位置对应一个中断通道。假设你的UART4接收中断是第12个通道,往NVIC_ISPR12写1就关了。不过要注意得先开AHB1的GPIO时钟,比如GPIOA的时钟得在AHB1ENR里设个1。就像先得插电才能用手机一样,得先给串口供上电。记得清除中断标志,否则下次还会触发。
本题链接: