如题:stm32cubeIDE移植的UCOSIII,STemwin,用的stm32407芯片,定义float变量后进入硬件错误 之前是Keil5移植的时候也遇到了这个问题,然后是在启动文件中加了一段代码解决了。 这次因为启动文件也不一样了,不知道改怎么修改。 |
启动文件cubeide里面有和MDK内容有区别。
定义一个变量就会出错,有这么夸张吗?
有这么夸张,楼主需要修改一下.s文件,增加对硬件浮点计算的处理,错误中断是由于硬件浮点使用后,不能正确跳转回ucos系统导致。下面代码加到对应的startup_stm32f40xx.c中。位置就是上下;后面指定的位置。 ; Reset handler Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT SystemInit IMPORT __main LDR R0, =SystemInit BLX R0 IF {FPU} != "SoftVFP" ; Enable Floating Point Support at reset for FPU LDR.W R0, =0xE000ED88 ; Load address of CPACR register LDR R1, [R0] ; Read value at CPACR ORR R1, R1, #(0xF <<20) ; Set bits 20-23 to enable CP10 and CP11 coprocessors ; Write back the modified CPACR value STR R1, [R0] ; Wait for store to complete DSB ; Disable automatic FP register content ; Disable lazy context switch LDR.W R0, =0xE000EF34 ; Load address to FPCCR register LDR R1, [R0] AND R1, R1, #(0x3FFFFFFF) ; Clear the LSPEN and ASPEN bits STR R1, [R0] ISB ; Reset pipeline now the FPU is enabled ENDIF LDR R0, =__main BX R0 ENDP ; Dummy Exception Handlers (infinite loops which can be modified)
有这么夸张,楼主需要修改一下.s文件,增加对硬件浮点计算的处理,错误中断是由于硬件浮点使用后,不能正确 ...
使用的uCOSI-II和uCOS-III版本,最新版本都已经没有这个问题了
使用的uCOSI-II和uCOS-III版本,最新版本都已经没有这个问题了
我也是在测试ucos II的系统是发生的类似问题,具体最新版本的ucos我没有测试过。怀疑还是硬件浮点运算的问题。
我也是在测试ucos II的系统是发生的类似问题,具体最新版本的ucos我没有测试过。怀疑还是硬件浮点运算的 ...
那你可以试试最新版本的 uCOS-II V2.93.00 uCOS-III V3.08.00 测试是否还有你说的问题
那你可以试试最新版本的 uCOS-II V2.93.00 uCOS-III V3.08.00
我测试的是2.92,有这个问题。方便把这两个版本传上来试试。
我测试的是2.92,有这个问题。方便把这两个版本传上来试试。
http://github.com/SiliconLabs micrium的最新源码包可以免费下载使用