stm32cubeIDE移植的UCOSIII,stm32407芯片,定义float变量后进入...
如题:stm32cubeIDE移植的UCOSIII,STemwin,用的stm32407芯片,定义float变量后进入硬件错误之前是Keil5移植的时候也遇到了这个问题,然后是在启动文件中加了一段代码解决了。
这次因为启动文件也不一样了,不知道改怎么修改。
启动文件cubeide里面有和MDK内容有区别。 定义一个变量就会出错,有这么夸张吗? 有这么夸张,楼主需要修改一下.s文件,增加对硬件浮点计算的处理,错误中断是由于硬件浮点使用后,不能正确跳转回ucos系统导致。下面代码加到对应的startup_stm32f40xx.c中。位置就是上下;后面指定的位置。
; Reset handler
Reset_Handler PROC
EXPORTReset_Handler
IMPORTSystemInit
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, ; 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, ; 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,
AND R1,R1, #(0x3FFFFFFF); Clear the LSPEN and ASPEN bits
STR R1,
ISB ; Reset pipeline now the FPU is enabled
ENDIF
LDR R0, =__main
BX R0
ENDP
; Dummy Exception Handlers (infinite loops which can be modified) 安 发表于 2020-7-6 18:19
有这么夸张,楼主需要修改一下.s文件,增加对硬件浮点计算的处理,错误中断是由于硬件浮点使用后,不能正确 ...
使用的uCOSI-II和uCOS-III版本,最新版本都已经没有这个问题了 yklstudent-1794 发表于 2020-7-7 09:11
使用的uCOSI-II和uCOS-III版本,最新版本都已经没有这个问题了
我也是在测试ucos II的系统是发生的类似问题,具体最新版本的ucos我没有测试过。怀疑还是硬件浮点运算的问题。 安 发表于 2020-7-7 09:48
我也是在测试ucos II的系统是发生的类似问题,具体最新版本的ucos我没有测试过。怀疑还是硬件浮点运算的 ...
那你可以试试最新版本的
uCOS-II V2.93.00
uCOS-III V3.08.00
测试是否还有你说的问题 yklstudent-1794 发表于 2020-7-7 13:48
那你可以试试最新版本的
uCOS-II V2.93.00
uCOS-III V3.08.00
我测试的是2.92,有这个问题。方便把这两个版本传上来试试。 安 发表于 2020-7-7 17:10
我测试的是2.92,有这个问题。方便把这两个版本传上来试试。
http://github.com/SiliconLabs
micrium的最新源码包可以免费下载使用
页:
[1]