三. 如何解决问题
1. 查看手头 Keil 版本是否支持 FPU,最简单办法是进入 Keil 调试界面直接查看 0xE000ED88 地址单元数据, 如果为
0x00F00000, 则说明已经支持 FPU,如下图所示:
2. 如果0xE000ED88 地址数据为0x00000000,则需要做如下操作:
a. 在 system_stm32f4xx.c 文件中的 systeminit()函数里面添加如下代码
- /* FPU settings ------------------------------------------------------------*/
- #if ( FPU_PRESENT == 1) && ( FPU_USED == 1)
- SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */
- #endif
b. 在工程选项( Project->Options for target "XXXX")中的 C/C++选项卡的 Define 中加入如下的语句, 见下图所示:
- FPU_PRESENT=1, FPU_USED =1。
c. 这样编译时就加入了启动FPU 的代码, CPU 也就能正确高效的使用FPU 进行简单的加减乘除了。
|