嵌入式学习小组
直播中

王淑珍

7年用户 171经验值
私信 关注

freertos的软件定时器的回调函数里面能否调用其他API函数?

    freertos的软件定时器的回调函数里面能否调用其他API函数?
比如在回调函数里添加xSemaphoreGive(BinarySemaphore);  
/* 处理定时器1任务 */
        if(ultimerID == 1)
        {
                bsp_LedToggle(2);
                xSemaphoreGive(BinarySemaphore);  //这里添加时间到的通知信号量
        }
实验后发现使用:xSemaphoreGiveFromISR(BinarySemaphore,&xHigherPriorityTaskWoken)这个也能工作,这是为什么?

回帖(1)

周振夜

2020-7-28 08:24:51
xSemaphoreGiveFromISR实际上是一个宏,真正执行的是xQueueGiveFromISR,它同样的可以发信号量啊, 只不过进去的时候多了一个中断屏蔽,出来的时候恢复一下。另外xSemaphoreGiveFromISR和xSemaphoreGive相比,前者不能在中断里面释放互斥信号量,因为涉及到优先级继承,而中断不属于任务。
举报

更多回帖

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