关于stm32系统定时任务的问题

Andrew_Qian 2017-10-10 11:39:55

在用stm32做一个飞控程序时。需要用到上面这种系统循环定时任务,有一个问题:
在System_Task_Loop函数里面,有1ms 、2ms、5ms的循环任务,但是他的这些定时是怎么得到的?是随便选取的还是计算得到的?就是他怎么知道在 1ms的时候做这个任务,在2ms的时候做另一个,而且没有3ms 的定时任务?还有就是什么情况下需要使用这种系统循环任务?
...全文
1111 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
7.83Hz 2019-07-11
  • 打赏
  • 举报
回复
1:1ms.2ms这些时间间隔,不是准确计算出来的,只是估算出来,一般无人机每秒调整姿态100次左右,少了机子不稳,多了马达也反应不过来。而读6050传感器一类的,次数多一些,读电池电量的,次数要少一些 2:那些函数里有什么,也没具体要求的,看你控制,一般10ms放电机控制的,如改变PWM的CCR值。。。 3:7楼兄弟,为什么不放主偱环,那是因为无人机多数会用到嵌入式系统,如RT Thread,这样更方便处理数据。这些小系统里的主循环while,也是有的,不过没一条代码,空着。那不是高大上的东西,工作久了,你也会爱上的
Meteora9 2019-07-03
  • 打赏
  • 举报
回复
我也不太懂为什么无人机、智能车这一类的任务要定时
为什么不能直接放在主循环呢
Andrew_Qian 2017-10-13
  • 打赏
  • 举报
回复
恩,首先谢谢你的回答,可能是我表述的不够清楚。其实我是想问,他是如何确定,在系统定时1ms后,在 task_1ms() 函数里面的内容?就是怎么确定在系统 1ms时做什么, 5ms 时做什么的?
C_Rabbit 2017-10-13
  • 打赏
  • 举报
回复
引用 5 楼 m0_37655357 的回复:
恩,首先谢谢你的回答,可能是我表述的不够清楚。其实我是想问,他是如何确定,在系统定时1ms后,在 task_1ms() 函数里面的内容?就是怎么确定在系统 1ms时做什么, 5ms 时做什么的?
Task_1Ms()是被调用的函数,应该是在程序的其他地方定义的,执行的内容就是函数内的内容。Task_5Ms()同理。 如果这是教学例程摘出来的程序段的话,也有可能Task_1Ms()里面是空的,就是不执行任何动作。
C_Rabbit 2017-10-12
  • 打赏
  • 举报
回复
它在其他部分,肯定会有对task_time.cnt_1ms这几个变量的递减。递减操作应该是1ms触发一次。再配合这里的赋值,就完成了1ms,2ms,5ms的定时了。 至于在中断函数里做什么,没听懂你想问什么。
Andrew_Qian 2017-10-12
  • 打赏
  • 举报
回复
恩恩,谢谢你的回答,但是他的这个 1 ms、2ms、5ms 定时是怎么得出来的?随意选的还是通过某种运算得出的?还有就是如何确定在 1ms 中断函数里做什么。
C_Rabbit 2017-10-11
  • 打赏
  • 举报
回复
刚才看漏了,也有可能不是用的滴答定时器,而是用的自建的1ms定时器累加,结构体task_time在1ms定时中断处理函数中进行相应的累加
C_Rabbit 2017-10-11
  • 打赏
  • 举报
回复
这是stm32的滴答定时器,一般是用库函数的时候用到的。 滴答定时器会在配置好后在后台直接自动运行计时,你这里贴的代码很明白了 比较滴答定时器的计时变量 1ms时执行Task_1Ms() 2ms时执行Task_2Ms() 5ms时执行Task_5Ms() 把要执行的命令放到对应的调用函数里去就可以了

27,383

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧