初级会员
- 积分
- 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,跟裸机开发真是不同啊,出现了好多难以掌控的问题(功力不够,正在恶补中。。。),恳请路过的大神能够赐教一二,十分感谢!
|
|