乐鑫技术交流
直播中

学电超人

13年用户 894经验值
擅长:微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制
私信 关注
[问答]

ESP32S2如何判断当前代码是否在中断?

想要移植使用rt-thread的软件包,做了接口适配。

但是比如事件组,在rt-thread里是一个统一接口无需判断是否在中断,FreeRTOS里是区分普通代码和中断代码调用不同的API。

所以问题是,我怎么判断当前代码是否在中断中执行?

Code: [Select all] [Expand/Collapse]
  • rt_err_t IRAM_ATTR rt_event_send(rt_event_t event, rt_uint32_t set)
  • {
  •     if (vPortGetiPSR())
  •     {
  •         BaseType_t xHigherPriorityTaskWoken;
  •         BaseType_t xResult;
  •         xHigherPriorityTaskWoken = pdFALSE;
  •         xResult = xEventGroupSetBitsFromISR(event->xHandler, set, &xHigherPriorityTaskWoken);
  •         if (xResult != pdFAIL)
  •         {
  •             /* If xHigherPriorityTaskWoken is now set to pdTRUE then a context
  •             switch should be requested.  The macro used is port specific and will
  •             be either portYIELD_FROM_ISR() or portEND_SWITCHING_ISR() - refer to
  •             the documentation page for the port being used. */
  •             portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
  •         }
  •     }
  •     else
  •     {
  •         xEventGroupSetBits(event->xHandler, set);
  •     }
  •     return  RT_EOK;
  • }

更多回帖

发帖
×
20
完善资料,
赚取积分