STM32/STM8技术william hill官网
直播中

朱明明

13年用户 49经验值
擅长:控制/MCU
私信 关注
[资料]

【NUCLEO-F412ZG试用体验+准备工作

本帖最后由 222zhumingming 于 2016-11-26 16:28 编辑

前几天收到了电子发烧友发的短信,看后知道自己申请的ST NUCLEO-F412ZG开发板成功了,心里还是特别高兴;本人是一名电子爱好者,自从发现了有开发板试用这个板块,感觉这个事情做得特别好。罗嗦了这么多,言归正传开始STM32f412的开发。虽然板子还没收到,但是工程得准备一下。
       以前手里面都是stm32f1的板子,一直都想玩一玩,由于ARM的Cortex M4具有FPU单元,对运算性能提升很大,因此使用STM32F4系列,一定要使用FPU,否则就像使用M3系列开发一样了。对于ST NUCLEO-F412ZG开发板,板子上外设资源很少,需要自己扩展外设。首先得去ST官网下载ST NUCLEO-F412ZG开发板原理图,要熟悉一下板子接口。
对于STM32F4开发目前有两种方式,一种是标准库函数,另一种是STM32CubeMX开发。对于这两种开发各有利弊,这要看个人喜好了;这里面用标准库函数进行开发,使用最新库函数。
工程详细搭建这里就不讲了,网上有很多例程,搭建完后如下图:


STM32F4 硬件上要开启 FPU 是很简单的,需要开启一个协处理器控制寄存器(CPACR)的寄存器设置即可开启 STM32F4 的硬件 FPU,我们就是要设置 CP11 CP10 4 个位,复位后,这 4 个位的值都为 0,此时禁止访问协处理器(禁止了硬件FPU),我们将这 4 个位都设置为 1,即可完全访问协处理器(开启硬件FPU),此时便可以使用 STM32F4 内置的硬件 FPU 了。CPACR 寄存器这 4 个位的设置,我们在system_stm32f4xx_c 文件里面开启,代码如下:


此部分代码是系统初始化函数的部分内容,功能就是设置 CPACR 寄存器的 20~23 位为 1,以开启 STM32F4 的硬件 FPU 功能。从程序可以看出,只要我们定义了全局宏定义标识符__FPU_PRESENT以及__FPU_USED 为 1,那么就可以开启硬件 FPU。其中宏定义标识符__FPU_PRESENT用来确定处理器是否带 FPU功能,标识符__FPU_USED用来确定是否开启FPU 功能。实际上, 因为 F4 是带 FPU 功能的,所以在我们的 stm32f4xx.h 头文件里面,我们默认是定义了__FPU_PRESENT 为 1。大家可以打开文件搜索即可找到下面一行代码:#define __FPU_PRESENT 1
但是,仅仅只是说明处理器有 FPU 是不够的,我们还需要开启FPU 功能。开启 FPU 有两种方法,第一种是直接在头文件 STM32f4xx.h 中定义宏定义标识符__FPU_USED 的值为 1。也可以直接在 MDK 编译器上面设置,我们在MDK5 编译器里面然后在Target选项卡里面,设置Floating Point Hardware 为 Use Single Precision,

更多回帖

发帖
×
20
完善资料,
赚取积分