我正在使用以下CPU:Stellaris LM4F120H5QR微控制器。这个CPU包含一个MPU,我想知道这个东西。但是在内部非特权模式下,很多寄存器不再可访问,我似乎找不到一个寄存器,表明系统在一个中断内,并且可以从非特权模式中读取。
我需要这个,因为从中断调用时,代码可能采用不同的路径。如果我从非特权模式进行错误检查,系统将会立即跳转到访问错误。
那么如何检查是否从中断调用函数的方式在从非特权模式调用时不会产生错误?
答案 0 :(得分:0)
根据ARM's documentation,CONTROL
和ISR
寄存器可能就是您所需要的。
因此,使用CMSIS原型,代码可能如下所示:
if (__get_IPSR() || !(__get_CONTROL() & 0x1))
{
/* Privilged code */
}
else
{
/* Unprivileged code */
}
据我所知,读取这些内容甚至应该允许用户线程。