紫电2000 发表于 2017-5-22 14:32

freertos二值信号量问题

大家谁用过freertos系统啊,
我遇到这样一个问题,
就是按键时,产生一个信号量,然后
有一个任务一直等待这个信号量,
代码如下
//按键中断代码,里面产生信号量
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
       static BaseType_t xHigherPriorityTaskWoken;
        xHigherPriorityTaskWoken = pdFALSE;
                printf("button is working!\r\n");
       xSemaphoreGiveFromISR( BinarySemaphore, &xHigherPriorityTaskWoken );
        if((xHigherPriorityTaskWoken != pdFALSE))
        {
                portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
        }

}
//任务中等待信号量
void Task1(void *data)
{
        BaseType_t err=pdFALSE;

        while (1)
        {
                if(BinarySemaphore!=NULL)
                {
                        err=xSemaphoreTake(BinarySemaphore,0xFFFF);        //»ñÈ¡ÐźÅÁ¿
                }
                        if(err==pdTRUE)                       
                        {
                                printf("receive BinarySemaphore success!\r\n");
                        }

        }
}
现在问题是,中断中一直不产生信号量,
谁知道什么原因啊

airwill 发表于 2017-5-23 21:06

这么简单一段代码, 为啥不用调试器跟踪一下呢, 看看中断被触发执行了么?

LMCH 发表于 2017-5-27 09:12

觉得也该看看中断到底触发了没有

djyos 发表于 2017-5-27 10:26

你确认中断里能用printf函数?

freeelectron 发表于 2020-2-14 14:24

按键中断里面加打印看看中断产生了没?
页: [1]
查看完整版本: freertos二值信号量问题