freeRTOS Cortex-M读取中断号的函数,内嵌代码的解释
__STATIC_FORCEINLINE uint32_t __get_IPSR(void)
{
uint32_t result;
__ASM volatile ("MRS %0, ipsr" : "=r" (result) ); // 读取中断号PSR(IPSR)存入result, 0为无中断。
return(result);
}
在看到这段代码的时一直不明白这段内嵌汇编代码(__ASM volatile (“MRS %0, ipsr” : “=r” (result) ); )的含义,查看了内嵌代码的规则之后明白,参考文章
https://blog.csdn.net/weixin_29661213/article/details/112153346
void function()
{
int a =100, b =200, c =0;
asm ( "add %0,%1,%2" : "=r"(c) : "r"(a), "r"(b) : "memory" );
}
%0 对应变量c %1 对应变量a %2 对应变量b
|