解决移植cmsis-rtos-v1可能出现的问题
1.可能产生的中断优先级问题,freertos的默认设置,优先级低于5的是归freertos管理,也就是需要用到freertos函数的中断优先级不能低于5。在cubemx开启freertos的时候,freertos会提示修改优先级,修改后会导致gokit套件按键处理函数和设备注册无法运行。设备注册和按键处理是由tim2和uart2中断完成的,这两个函数并不需要用到freertos的函数,因此我们可以取消勾选使用freertos的功能,将中断优先级调回默认的0和1。如图2.如何扩大freertos的堆空间,如何调整任务的堆空间。
数据点多的可能需要占用较多的堆空间,分配过小的堆空间可能导致异常程序无法正常运行。
因为cmsis-v1版本并没有直接查看堆栈信息的接口,因此程序是否正常联网和运行就成了判断堆栈分配是否足够最直观的。
首先可以调大总共分配的堆空间,在freertos的配置选项可以调节。
对于任务的堆栈大小,我们可以点击task and queues,在任务选项里填写需要分配的堆空间大小
3.halrgb驱动导致程序运行异常。
机智云提供的cubemx版的hal grb驱动使用了systick生成精确的延时函数,但是freertos也依赖systick作为心跳,因此延时函数修改systick配置会影响freertos的运行。
解决方法:建议基于std的驱动修改成hal版,使用驱动自带的基于循环实现的延时,默认延时参数40可能导致rgb控制概率异常,修改为50即可。
页:
[1]