OpenEdv-开源电子网

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

ucosii软件定时器偶现不执行回调函数

[复制链接]

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2020-7-3
在线时间
34 小时
发表于 2020-8-5 18:15:32 | 显示全部楼层 |阅读模式
5金钱
STM32F1+UCOSII,创建了2个软件定时器,4个用户任务,有个按键,按了后机器就启动(加热、电机之类的动作),现在偶尔会出现按了启动键之后固定时间(1分钟左右)出现用户任务可以正常执行,但是软件定时器失灵进不了回调函数的情况,偶现的问题,有时候想复现都难,实在没头绪了,求表哥表姐们指个方向,给个灵感,可能是哪方面的问题,应该从哪些角度自查?在此多谢了!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2020-7-3
在线时间
34 小时
 楼主| 发表于 2020-8-6 09:00:37 | 显示全部楼层
本帖最后由 lesliechia 于 2020-8-6 09:04 编辑

补充:运行1分钟后,OSTmrTime会停止自加,导致进不了定时器,可能是什么原因会造成的呢
回复

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2020-7-3
在线时间
34 小时
 楼主| 发表于 2020-8-6 10:56:50 | 显示全部楼层
0.发现将定时器创建时延迟时间参数由1改成10能解决问题(改成10后尝试多次没有复现,改为1很容易复现)1.定时器延迟时间参数依然为1,将硬件初始化函数里的长延时(能引起任务调度的延时)取消掉,也能解决问题(尝试多次没有复现)
2.定时器周期为1秒,加热任务delay_500ms,将加热任务的delay_500ms改为其他的值也能解决问题

插播一些其他问题,定时器初始化放在main函数中的OSInit()之前,通道输出默认电平竟然跟配置的相反,放在开始任务中就是正常的,后来索性所有硬件初始化函数都放在了开始任务中
又发现新的问题,在开始任务中printf打印不出东西(串口确定配置正确,在其他任务中打印是正常的),说的有点乱,总结一下最近遇到的问题

0.使用ucos,硬件初始化函数的放置位置有什么讲究吗?

1.软件定时器创建时延迟时间的改变跟标题中的问题可能有什么联系?
2.用户任务延时时间改变跟标题中的问题可能有什么联系?
3.开始任务中可以使用能引起任务调度的延时吗?
4.开始任务中printf为何会失效呢?
5.最低优先级的任务可以不使用延时释放CPU使用权吗?(定时器级联控制电机,发现最低优先级的任务不主动释放CPU使用权竟然会影响硬件定时器中断响应的及时性,直接导致电机位置走偏)

初次使用ucos,跟裸机开发真是不同啊,出现了好多难以掌控的问题(功力不够,正在恶补中。。。),恳请路过的大神能够赐教一二,十分感谢!


微信图片_20200806100411.png
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-5-29 12:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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