这篇文章产生背景:其他人的文章太杂了,对我这种菜鸡无法接受;
参考文章:
stm32h743单片机嵌入式学习笔记7-FPU_stmh743vit4-CSDN博客
stm32F407 打开 FPU(浮点运算处理器)_stm32f407开启fpu-CSDN博客
STM32F4+CubeMX+Hal库下使能FPU_stm32cubemx 怎么配置开启fpu-CSDN博客
本人发布文章
2024.9.13
使用STM32G4系列使用cubemax产生工程;
重点:怎么打开FPU浮点硬件运算;
1、不需要多余的操作,不需要去定义宏,也不需要你去写什么打开操作;
重点1:
完毕!可以使用FPU了;我不知道为啥能搞一堆乱糟糟的东西;
触发原理:
不想了解的,可以不用看;
1、首先需要去寄存器打开这个FPU的硬件使能
这个打开在.S文件的上电复位就有,
原函数在
文件:system_stm32g4xx.c
void SystemInit(void)
原型:
cpp
void SystemInit(void)
{
/* FPU settings ------------------------------------------------------------*/
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
SCB->CPACR |= ((3UL << (10*2))|(3UL << (11*2))); /* set CP10 and CP11 Full Access */
#endif
/* Configure the Vector Table location add offset address ------------------*/
#if defined(USER_VECT_TAB_ADDRESS)
SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
#endif /* USER_VECT_TAB_ADDRESS */
}
编译后,编译后,编译后:三次且加粗:为什么需要编译,操作重点1后,没有编译,勾选后不生效;
跳转定义如下两个定义:能跳转,并且都是1,那么就打开FPU:SCB->CPACR这两个寄存器可以查手册;
__FPU_PRESENT
__FPU_USED
尽管跳转后是灰色的:但是跳转过来指示的行,定义是 1,而不是下面的0;所以已经宏开启,FPU已经开启了