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亲生的儿子哦!
我记得开启和关闭中断分别是两个函数配合使用吧?忘记了,
多任务系统告诉我们可以使用如下函数开启和屏蔽中断,你可以试试。。。。
__asm void CPU_IntDis (void)
{
CPSID I
BX LR
}
__asm void CPU_IntEn (void)
{
CPSIE I
BX LR
}
一周热门 更多>