STR71X系列ARM如果在主程序中关IRQ,会把中断挂起位清空,如果之前已经有中断产生,导致IRQ线已经拉低,可能导致中断堆栈出错。(STR71X。。原理与实践)这本书的P102页,第5段。
应该怎样做,才能比较好的关闭中断呢?在主程序中有一个函数需要暂时关中断。
目前想的方法:工作在系统模式,而不是用户模式,设一个函数使能或清零ARM内核的IRQ禁止位,达到关闭IRQ中断的目的。这种方法不是关闭EIC的IRQ_EN位,不清楚是否会导致EIC控制器产生错误。如果工作在用户模式,还需要SWI切换模式,再关IRQ,就比较麻烦了。
请教这样做过的高手。
|