历史上的今天
今天是:2024年12月29日(星期日)
2018年12月29日 | STM32 禁用或开启总中断
2018-12-29 来源:eefocus
STM32在使用时有时需要禁用全局中断,比如MCU在升级过程中需禁用外部中断,防止升级过程中外部中断触发导致升级失败。
ARM MDK中提供了如下两个接口来禁用和开启总中断:
__disable_irq(); // 关闭总中断
__enable_irq(); // 开启总中断
但测试发现这样一个问题,在关闭总中断后,如果有中断触发,虽然此时不会引发中断,但在调用__enable_irq()开启总中断后,MCU会立即处理之前触发的中断。这说明__disable_irq()只是禁止CPU去响应中断,没有真正的去屏蔽中断的触发,中断发生后,相应的寄存器会将中断标志置位,在__enable_irq()开启中断后,由于相应的中断标志没有清空,因而还会触发中断。所以要想禁止所有中断,必须对逐个模块的中断进行Disable操作,由于每个模块中断源有很多,对逐个中断Disable的话比较复杂,较为简单的方法是通过XXX_ClearITPendingBit()清除中断标志或者直接通过XXX_DeInit()来清除寄存器的状态。这样在__enable_irq()开启总中断后,MCU就不会响应之前触发的中断了。
史海拾趣
|
因为在做一个和光通信有关的东西,将二进制信号编码后由光调制发射,然后用探测器接受,所以想知道一些些好用的光电探测器或红外接收管器,最好是体积小(集接收,放大,滤波,解调于一体的),灵敏度高的!!有急用,谢谢了!!… 查看全部问答> |
|
买了一个51的开发板,感觉51基本掌握,想到以后还是想学习AVR,毕竟AVR的性能比51要好,所以以后想外接一点东西改成AVR的开发板, 主要是看到网上有卖这个的,但是比较贵,所以想自己做,有没有人可以介绍下?… 查看全部问答> |
|
每次路过家里那个基站,总忍不住一探究竟,但是“有电危险”,被重重铁丝网包裹的东西,让人很难接近,于是和老公就猜想,里面是多么多么豪华的配置,宛如宫殿一般,重金早就的狭小空间,也忍不住想爬到最高处看看远处的风景。 今天闲逛,在C11 ...… 查看全部问答> |
|
我也来谈谈我在威客明星的这些日子 我做威客明星没有多久的时间,算算还不到一个月。我是我的一个同学叫我去做的,那时候我天天打游戏。没什么事干,过得挺颓废的。因为经常和同学聊天的原因(我这个同学是专搞电脑的,电脑技术没得说的),聊以前、 ...… 查看全部问答> |
|
用SPI接收数据,数据长度是变化的,在初始化的时候设置了RXFIFOsize为16,接收一次数据足够了,现在有个疑问,当数据长度达不到16个字节的时候,怎么知道这次数据接收已经完成了?我看了DATASHEET好像没有这方面的说明啊?CLK MOSI在空闲 ...… 查看全部问答> |
|
问题描述:使用FSMC访问外部存储器时,如果CPU与DMA同时向外部存储器发出请求,将会产生存储器访问错误。 这个问题已经在新版本的芯片中得到解决,请联系就近的代理商了解详情。… 查看全部问答> |
|
只找到了用cpu timer实现中断的例程, 哪位有用EV的timer实现中断的例程,给我看看吧,学习学习 随便什么中断,上溢下溢比较都可以, 看了TI的一个文档,讲了PIEIFR,PIEIER,PIEACK之类的, 没有看程序直观啊。 谢了。… 查看全部问答> |




