OpenEdv-开源电子网
标题:
请问如何中断中给出二值信号量呀?
[打印本页]
作者:
nigulasizhaosi
时间:
2022-3-20 18:51
标题:
请问如何中断中给出二值信号量呀?
//定时器3中断服务函数
void TIM3_IRQHandler(void)
{
static BaseType_t xHigherPriorityTaskWoken;
if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET) //溢出中断
{
TIM_ClearITPendingBit(TIM3,TIM_IT_Update); //清除中断标志位
taskENTER_CRITICAL(); //是这样给嘛?
/*给出二值信号*/
if( pdPASS == xSemaphoreGiveFromISR( xBinarySemaphore, &xHigherPriorityTaskWoken ) )
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);//如果需要的话进行一次任务切换
taskENTER_CRITICAL();
}
}
作者:
nigulasizhaosi
时间:
2023-1-13 18:04
直接xSemaphoreGiveFromISR( xBinarySemaphore, &xHigherPriorityTaskWoken ) 就可以了,不需要加入临界区。此外,二值信号量要声明为外部变量
欢迎光临 OpenEdv-开源电子网 (http://47.111.11.73/)
Powered by Discuz! X3.4