OpenEdv-开源电子网

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

uCOS下高速定时器问题。

[复制链接]

5

主题

10

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2016-5-25
在线时间
4 小时
发表于 2016-6-3 16:06:40 | 显示全部楼层 |阅读模式
问题描述:STM32F103平台,uCOS-III系统。现在有一个任务需要周期性执行,每0.4ms执行一次,周期时间小于uCOS系统Tick时间,所以不能采用uCOS系统的定时器来做。那该如何周期性的执行此任务呢??
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2014-3-29
在线时间
11 小时
发表于 2016-6-7 19:08:10 | 显示全部楼层
本帖最后由 GGaFish 于 2016-6-7 19:11 编辑

用STM自己的定时器,具体做法是:
1.需要周期执行的任务代码封装成一个函数func(),
2.定义一个信号量semForTimer,
3.设置定时器周期为你需要的时间,即0.4ms,启动定时器,
4.在定时器中断服务函数中,利用post函数发送信号量,
5.在task中,利用pend()函数等待信号量semForTimer,然后执行func(),

有个需要注意的问题是,stm32定时器一旦启动后,会立即进入一次中断,发送一次信号量,定时器任务就会被执行,
没有起到定时作用,解决方法是,任务中先pend()一次信号量,然后在进入for(;;),在for循环中pend(),再执行func(),这也是没有办法的办法。
如果你想到了更好的办法,请联系我。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-27 12:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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