硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2757|回复: 4
收起左侧

[FreeRTOS] 软件定时器的回调函数里面调用其他API函数的问题咨询

[复制链接]

62

主题

77

回帖

263

积分

高级会员

积分
263
发表于 2018-3-9 18:09:32 | 显示全部楼层 |阅读模式
本帖最后由 freertos 于 2018-3-11 16:51 编辑

软件定时器的回调函数里面调用其他API函数
比如在回调函数里添加xSemaphoreGive(BinarySemaphore);  

/* 处理定时器1任务 */
        if(ulTimerID == 1)
        {
                bsp_LedToggle(2);
                xSemaphoreGive(BinarySemaphore);  //这里添加时间到的通知信号量
        }


实验后发现使用:xSemaphoreGiveFromISR(BinarySemaphore,&xHigherPriorityTaskWoken)这个也能工作,这是为什么?

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2018-3-9 18:34:06 | 显示全部楼层
QQ截图20180309183247.png
回复

使用道具 举报

62

主题

77

回帖

263

积分

高级会员

积分
263
 楼主| 发表于 2018-3-11 16:34:50 | 显示全部楼层

在定时器回调函数里面二值信号量用:xSemaphoreGiveFromISR还是xSemaphoreGive
回复

使用道具 举报

9

主题

160

回帖

187

积分

初级会员

积分
187
发表于 2018-3-11 20:14:41 | 显示全部楼层
freertos 发表于 2018-3-11 16:34
在定时器回调函数里面二值信号量用:xSemaphoreGiveFromISR还是xSemaphoreGive

注意看函数名称,看你调用的位置, 一个是普通任务中调用的,FromISR结尾的才是在中断中专用的
回复

使用道具 举报

62

主题

77

回帖

263

积分

高级会员

积分
263
 楼主| 发表于 2018-3-12 09:07:35 | 显示全部楼层
avita 发表于 2018-3-11 20:14
注意看函数名称,看你调用的位置, 一个是普通任务中调用的,FromISR结尾的才是在中断中专用的

我是说在定时器回调函数里面,用这2种都没问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-16 04:05 , Processed in 0.290202 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表