游学旅行网站建设策划书,海南网站建设公司,wordpress 修改栏目,做网站标配问题
最近把项目移植进FreeRTOS时#xff0c;发现开始任务都不能启动#xff1b;
机器是stm32f407#xff0c;使用的arm固件和FreeRTOS都是最新版本#xff1b;
裸机运行没有问题#xff0c;但是使用任务运行就运行不了#xff1b;
排查
首先尝试了教程用的点灯代码…问题
最近把项目移植进FreeRTOS时发现开始任务都不能启动
机器是stm32f407使用的arm固件和FreeRTOS都是最新版本
裸机运行没有问题但是使用任务运行就运行不了
排查
首先尝试了教程用的点灯代码发现可以正常运行然后使用我自己的代码点灯发现还是运行不了
自己代码比教程多了一些初始化程序猜测是初始化出了问题
一开始以为是延时函数或者是中断的问题但是当我使用了不会触发任务调度的延时允许了所有中断使用后问题还是没有解决
再把问题缩小在具体每个初始化程序中注释了一些初始化程序发现有时候可以运行有时候运行不了
通过逐个排除和网上查询资料最后发现应该是浮点运算的问题在我的mpu6050和触摸屏初始化程序里使用到了浮点运算注释这两个程序系统就能正常运行
检查了keil的设置没有问题已经选择了单精度的浮点支持
解决
最后发现应该是port.c文件的问题我原先使用的是FreeRTOS\Source\portable\RVDS\ARM_CM3里的port.c然而stm32的arm内核为m4所以应该选择FreeRTOS\Source\portable\RVDS\ARM_CM4F里的port.cARM_CM4F即表示m4内核支持浮点运算
修改后程序正常运行现在任务可以正常调度了
踩的坑
我是按照教程资料移植的教程资料描述不具体移植时我没有注意port.c文件的不同移植教程里使用的是针对stm32f107的代码
当stm32f407使用ARM_CM3里的port.c文件在不涉及浮点运算时运行是没有问题的但是一旦设计浮点运算系统就会卡死不运行具体原理也不清楚