This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C1294NCPDT:WidgetMutexGet 被抢占了吗?

Guru**** 2618455 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/784370/tm4c1294ncpdt-widgetmutexget-being-preempted

器件型号:TM4C1294NCPDT

TivaWare 中的 grlib 在 widget.c 中具有以下互斥函数  ldrexb 指令之后、但在以下 CMP 指令之前发生中断、是否可能会失败?

#if defined (ewarm)|| defined (DOXYGEN)
uint32_t
WidgetMutexGet (uint8_t * pi8Mutex)
{
//
//如果可能,获取互斥量。
//
_asm (" mov R1、#1\n"
" ldrexb R2、[r0]\n"
"《议定书》缔约方会议 R2、#0\n"
"它 EQ \n"
" strexb R2、R1、[r0]\n"
" mov R0、R2\n");

//
//“Warning[Pe940]:在非空函数末尾缺少 return 语句”
//在此处被抑制以避免在内联汇编中放置一个"BX LR"
//上面加上多余的 return 语句。
//
#pragma diag_suppress=Pe940
}
#pragma diag_default=Pe940
#endif