完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
为什么我用UCOS/II的软件定时器
1. tmr1=OSTmrCreate(10,10,OS_TMR_OPT_PERIODIC,(OS_TMR_CALLBACK)tmr1_callback,0,"tmr1",&err); //100ms执行一次 我把这个函数配置的这么多! 2. 我把os_cfg.h里面的 #define OS_TMR_CFG_tiCKS_PER_SEC 100u /* Rate at which timer management task runs (Hz) */ // 1s/100=10ms,往后使用的定时器... 配的这么多 我什么我写的电子时钟的比正常的表要慢10几倍啊? 也就是说我的定时器定时的是1s中断一次,却慢了10几倍啊? |
|
相关推荐
7个回答
|
|
先检查你的时钟配置正确了没有.
|
|
|
|
感觉楼主没有认真的阅读软件定时器,软件定时器需要信号量触发的,触发函数在这里
oid OSTimeTickHook (void) { #if OS_APP_HOOKS_EN > 0u App_TimeTickHook(); #endif #if OS_TMR_EN > 0u OSTmrCtr++; 特别注意这里,你的慢10倍估计是 OS_TICKS_PER_SEC / OS_TMR_CFG_TICKS_PER_SEC = 10ms 触发一次 if (OSTmrCtr >= (OS_TICKS_PER_SEC / OS_TMR_CFG_TICKS_PER_SEC)) { OSTmrCtr = 0; OSTmrSignal(); } #endif } |
|
|
|
谢谢各位了!
|
|
|
|
//原来是tcnt没有清零所以导致我的时间慢了10几倍,
//我没有清零他还是要变可能是因为tcnt被定义成了U8 //及unsigned int可能是加到溢出了,又从0开始加,所以感觉慢了 //十几倍!以后一定要注意小问题啊!但是小问题会导致大错误,浪费时间啊 !所以做事要细心啊! //呵呵! |
|
|
|
怎么弄的?我设置的10,50.100ms,500ms。
tmr1 = OSTmrCreate(10, 50, OS_TMR_OPT_PERIODIC,/* 500ms执行一次 */ (OS_TMR_CALLBACK) tmr1_callback, 0, (u8 *) tmr1, &err); 打开时有很多时候就好几秒才跑到回调函数,然后后面就是正常的。 tcnt时什么,需要清零吗?在哪里清零? |
|
|
|
需要查看“os_cfg.h ”里的“ #define OS_TMR_CFG_TICKS_PER_SEC ” 定义为 “100” 时,
tmr1 = OSTmrCreate(10, 50, OS_TMR_OPT_PERIODIC, (OS_TMR_CALLBACK) tmr1_callback, 0, (u8 *) tmr1, &err);//500mS执行一次 这条语句所期望的时间才能正常。 |
|
|
|
谢谢了。。。
|
|
|
|
只有小组成员才能发言,加入小组>>
798 浏览 0 评论
1155 浏览 1 评论
2531 浏览 5 评论
2863 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2713 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1087浏览 3评论
195浏览 2评论
461浏览 2评论
374浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
456浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 12:33 , Processed in 1.060561 second(s), Total 60, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号