楼主

[其他] 「2019」「RM圆桌」第十期 操作系统:RTOS

[复制链接]
步兵陈小豪右边童鞋
2019-4-8 19:03:53 显示全部楼层
大家晚上好!!! 今天由我来给大家介绍RTOS,如有错误,请大家多多谅解!
沙发

[其他] 「2019」「RM圆桌」第十期 操作系统:RTOS

[复制链接]
步兵陈小豪右边童鞋
2019-4-8 19:05:40 显示全部楼层
1、想问一下,在使用freertos 时,在中断配置上要注意什么,感觉freertos 会与定时器或者串口的中断冲突?
freeRTOS有一个管理中断最大优先级的宏定义  configLIBRAY_MAX_SYSCALLL_INTERRUPT_PRIORITY 当stm32的中断组设置为 NVIC_ProirityGroup_4的时候,freeRTOS会在进入临界区等一些操作的时候,屏蔽掉优先级低于 configLIBRAY_MAX_SYSCALLL_INTERRUPT_PRIORITY 的中断,退出临界区后会恢复。所以如果你想要一些中断不要被屏蔽的时候,设置优先级比这个高就可以,同时这些高优先级的中断里面不要有freeRTOS的相关函数, 而在在低优先级的中断使用带fromISR后缀的freeRTOS函数
板凳

[其他] 「2019」「RM圆桌」第十期 操作系统:RTOS

[复制链接]
步兵陈小豪右边童鞋
2019-4-8 19:06:09 显示全部楼层
2、通过任务之间的不停切换,其实本质是否跟开启定时器的原理差不多,相当于另辟一个线程?
不算是吧,还是跟定时器不太一样
地板

[其他] 「2019」「RM圆桌」第十期 操作系统:RTOS

[复制链接]
步兵陈小豪右边童鞋
2019-4-8 19:06:36 显示全部楼层
3、请问,程序写到什么程度可以上操作系统呢?我的程序(没有系统,主程序在定时器中断里)刚完成了基本功能,下一步要提升性能,要先优化算法吗?还是先升级RTOS?
   我觉得可以先试试操作系统,标准库的话,可以参考网上的一些教程进行移植,hal库的话,在cube上可以直接配置freeRTOS,入手的话,可以先使用任务切换的功能就可以,慢慢熟悉。使用操作系统的话,我觉得这样有助于你设计程序的架构逻辑等,有操作系统后进行开发,写程序还是有别于裸机开发。另外提升性能,我觉得你需要想清楚是什么样的性能,如果是控制性能,可能是研究好PID,参考上一期。
5#

[其他] 「2019」「RM圆桌」第十期 操作系统:RTOS

[复制链接]
步兵陈小豪右边童鞋
2019-4-8 19:07:22 显示全部楼层
4、在HAL库中,高优先级任务执行完后的osDelay的时间是不是就是下一级任务能执行的时间?这段时间过后又重新回到高优先级任务?
  当程序进入了osDelay后,就进行任务切换进入下一级了,过程是当前最高优先级任务运行到osDelay就进入阻塞态,就会进行就绪态中的最高优先级的任务,等待延迟时间结束后就进入了就绪态,如果它是最高优先级的话就能马上运行了
6#

[其他] 「2019」「RM圆桌」第十期 操作系统:RTOS

[复制链接]
步兵陈小豪右边童鞋
2019-4-8 19:08:31 显示全部楼层
5、应该怎样找到自己程序各种任务的优先级?比如现在主要有三个任务,底盘、云台和各种打印LED等较无关的,这些任务的优先级还有怎样才能让他们切换得更流畅(就是一种比较好的任务切换方法)

  一般是云台最高优先级,底盘其次,打印和led放最后。我是这样想的,底盘的运行模式会根据云台的模式有所不同,同时云台任务的周期比底盘的周期要短,故而云台要比底盘高。任务流畅的话,我觉得可能还是程序里面不要有太多无谓操作,减少时间延迟,如果用的是f4的芯片,芯片处理速度是足够的,像云台,底盘的任务,一般只是切换模式,计算PID这样的操作,CPU占有率基本上小于5%
7#

[其他] 「2019」「RM圆桌」第十期 操作系统:RTOS

[复制链接]
步兵陈小豪右边童鞋
2019-4-8 19:10:46 显示全部楼层
6、我看官方的程序,加入实时系统后是用遥控器控制的,我们想要程序自己控制,然后就在开始任务里面加了定时器计数判断,请问官方有什么更好的方法进行初始化吗?(由于要对陀螺仪进行误差处理,所以我们的初始化时间有点长,想减少一些时间)
  零漂校准吗?我觉得可以在陀螺仪处理任务中进行处理。
8#

[其他] 「2019」「RM圆桌」第十期 操作系统:RTOS

[复制链接]
步兵陈小豪右边童鞋
2019-4-8 19:12:28 显示全部楼层
本帖最后由 陈小豪右边童鞋 于 2019-4-8 19:37 编辑

7、请问软件定时器和普通定时器具体有什么区别吗?(个人认为RTOS就相当于可以设置无限个定时器,但又可以去除定时器相互打断的缺点)

RTOS是可以设置比较多的软件定时器,但它精度上不如硬件定时器,它最小定时周期不会小于systick的周期。
9#

[其他] 「2019」「RM圆桌」第十期 操作系统:RTOS

[复制链接]
步兵陈小豪右边童鞋
2019-4-8 19:13:47 显示全部楼层
8、在云台控制的任务函数中,不加临界区限制,有时会失控,加了便不会出现这种现象,但是其他任务也加了临界区限制(例如串口接收啥的,防止数据处理被打断),请问加入临界区限制的任务函数过多会有什么影响呢,如果对一些数据处理不加临界区限制,对整体影响大吗??(会不会和不加操作系统的程序基本相似)
还是加上吧,会浪费一些时间,但有时候一些比较莫名奇妙的数据处理的bug就是由于临界区没有处理好。
10#

[其他] 「2019」「RM圆桌」第十期 操作系统:RTOS

[复制链接]
步兵陈小豪右边童鞋
2019-4-8 19:15:14 显示全部楼层
9、加入RTOS后,对于步兵来说,如何彻底摆脱定时器,因为目前有一些数据处理对时间要求还是挺严格的,我加入RTOS后,P轴云台偶尔会处于无力状态然后自己上下转动,请问这和RTOS有关系吗?(会不会是P轴的处理被不断打断)

  我觉得可能是数据有问题吧,和RTOS关系不大,可以用别的板子抓一下can的log看看发送的控制指令是不是正确。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

触屏版 | 电脑版

Copyright © 2024 RoboMasters 版权所有 备案号 粤ICP备2022092332号

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