STM32主循环中都无法关闭中断

2019-07-14 14:27发布

STM32 关闭全局中断目前有几种方法:

void __enable_irq (void)
void __disable_irq (void)
uint32_t __get_PRIMASK (void)
void __set_PRIMASK (uint32_t value)
void __enable_fault_irq (void)
void __disable_fault_irq (void)
uint32_t __get_BASEPRI (void)
void __set_BASEPRI (uint32_t value)
uint32_t __get_FAULTMASK (void)
void __set_FAULTMASK (uint32_t value)

本人裸奔系统,在主程序的主循环中执行IIC(模拟的)命令时,用了上面所有的开启和关闭中断函数,都发现系统会宕机,频繁进入串口中断,而串口进中断值寄存器值为:


而正常情况下为:


只要IIC中开启中断,就会频繁进入串口中断,导致主循环无法执行,及时在串口中断中清除所有中断标识都不行!

请高手解答啊!
最近刚用STM32,发现这个应该算是一个BUG,怎么连主循环中都无法关闭中断呢,发现STM32的硬件BUG真是多啊!

有解决的办法吗?期待牛人啊!

看来STM32吹嘘的太多了!准备专用ti 的M3了,他的M3毕竟是ARM亲生的儿子哦!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
cmh4
1楼-- · 2019-07-15 19:30
 精彩回答 2  元偷偷看……
yvochen
2楼-- · 2019-07-16 00:29
这个问题,我在多任务处理时也碰到了,求教啊。。。。
yvochen
3楼-- · 2019-07-16 01:24
cmh4 发表于 2019-1-22 19:47
disable_irq关闭中断并等待中断处理完后返回, 而disable_irq_nosync立即返回. 在中断处理程序中应该使用disable_irq_nosync来关闭中断

你好,可以详细一点说明一下吗?
csw_ying
4楼-- · 2019-07-16 02:33
任何东西都不可能完美吧,有点缺陷什么的也正常,多想想办法

一周热门 更多>