freertos二值信号量问题

[复制链接]
 楼主| 紫电2000 发表于 2017-5-22 14:32 | 显示全部楼层 |阅读模式
大家谁用过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 | 显示全部楼层
按键中断里面加打印看看中断产生了没?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

10

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部