OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2680|回复: 3

CMSIS RTOS接口怎么实现禁止任务切换

[复制链接]

4

主题

290

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1130
金钱
1130
注册时间
2015-8-4
在线时间
107 小时
发表于 2016-5-30 17:25:26 | 显示全部楼层 |阅读模式
5金钱
      ARM推出自己的CMSIS RTOS接口,现在RTX、FreeRTOS都支持这种接口,程序移植方便不少,但是一直没有找到禁止任务切换的API。

比如以前我用RTX,在进入I2C外设通信(IO模拟I2C)时,我调用tsk_lock(); 等通信结束,再调用tsk_unlock();就可以使任务在I2C通信期间不被切换。

在CMSIS RTOS接口里面没有找到这样的实现呢,很是疑惑。如果碰到需要保护的这种场景怎么做呢?求教大神。

最佳答案

查看完整内容[请看2#楼]

自己找到了,在基于STM32F407移植的FreeRTOS下,cmsis_os.h里面的osThreadSuspendAll(); osThreadResumeAll();就是。 基于STM32F103移植的RTX下,cmsis_os.h里面的os_suspend(); os_resume();就是。 希望能帮助到有需要的朋友。 用于:简单IO模拟总线情况下,不能被任务调度干扰的时序操作。先suspend,总线操作完后再resume就行了。
活到老,学到老。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

290

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1130
金钱
1130
注册时间
2015-8-4
在线时间
107 小时
 楼主| 发表于 2016-5-30 17:25:27 | 显示全部楼层
自己找到了,在基于STM32F407移植的FreeRTOS下,cmsis_os.h里面的osThreadSuspendAll();    osThreadResumeAll();就是。
基于STM32F103移植的RTX下,cmsis_os.h里面的os_suspend(); os_resume();就是。
希望能帮助到有需要的朋友。
用于:简单IO模拟总线情况下,不能被任务调度干扰的时序操作。先suspend,总线操作完后再resume就行了。
活到老,学到老。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-6-1 22:11:05 | 显示全部楼层
帮顶
回复

使用道具 举报

4

主题

290

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1130
金钱
1130
注册时间
2015-8-4
在线时间
107 小时
 楼主| 发表于 2016-6-2 10:54:25 | 显示全部楼层
活到老,学到老。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 15:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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