你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
FREERTOS怎么使用定时器中断??开始任务就进入临界状态了
[复制链接]
呵呵1991
提问时间:2019-8-12 11:59 /
因为开始任务就进入临界状态了,所以,怎么才能实现定时器中断呢???
赞
0
收藏
0
评论
2
分享
发布时间:2019-8-12 11:59
举报
请先
登录
后回复
2个回答
tanic
回答时间:2019-8-14 10:43:58
a0a.1 0b0c
直接用就好,中断里面不调用os的API的话没啥要特别注意的,要用os的API的话用对应的API有FromISR后缀
评分
参与人数
1
蝴蝶豆
+2
收起
理由
STMCU
+ 2
查看全部评分
赞
0
评论
回复
支持
反对
哀歌与世无争
回答时间:2019-8-15 09:24:46
a0a.1 0b0c
FreeRTOS中断优先级分成两组:一组受 FreeRTOS管理,在临界区里会被屏蔽,另一组不受RTOS影响,永远都是使能的。configMAX_SYSCALL_INTERRUPT_PRIORITY在FreeRTOSConfig.h中配置,定义两组中断优先级的边界。逻辑优先级高于此值的中断不受RTOS影响。
例如定义:
#define configPRIO_BITS 4
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 15 //中断最低优先级
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 //系统可管理的最高中断优先级
#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
复制代码
那么优先级0-4的中断不会被FreeRTOS打断,因为进入临界区也只屏蔽可管理的中断5-15。
所以只要把定时器的优先级设置成高于MAX_SYSCALL_INTERRUPT_PRIORITY就行了,即使开始任务进入临界也能触发。
评分
参与人数
1
蝴蝶豆
+2
收起
理由
STMCU
+ 2
查看全部评分
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
评分
查看全部评分
例如定义:
所以只要把定时器的优先级设置成高于MAX_SYSCALL_INTERRUPT_PRIORITY就行了,即使开始任务进入临界也能触发。
评分
查看全部评分