STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化

STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化

STM32CubeMX对于一些使用STM32比较多的开发者比较熟悉,但对于刚接触STM32系列单片机的开发者就可能显得陌生一些。STM32CubeMX是一款由ST公司推出的帮助STM32开发者快速搭建STM32工程文件的图形编程软件。
STM32CubeMX的好处在于,开发者不用像以前一样自己编程来对单片机的寄存器进行操作,该过程不仅繁琐并且提高了用户代码的出错性,而使用STM32CubeMX该软件只需在软件里面对直观的芯片图形和配置选项即可完成对工程所用到的定时器,IO口,时钟,中断等配置,开发者只需要在工程中编写自己的功能逻辑代码即可。
值得一提的是,STM32CubeMX是使用HAL库函数来自动生成代码的,而以往我们使用正点原子探索者开发板(STM32F407ZG)它的教程是基于标准库的,大家注意区分这一点,HAL库和标准库的具体区别,博主由于也是刚接触这个概念,所以也不是太清楚,大致是HAL库相比标准库它不再关注于单片机底层寄存器的操作,而关注于单片机具体功能的实现。以往使用标准库函数需要几行代码的问题,可能HAL库只需要一个函数就解决了, HAL库像是单片机具体功能实施的函数库,而标准库更像是单片机寄存器操作的函数库。在这里,我将为大家演示如何创建一个STM32F407ZG芯片GPIO口初始化,并对开放者以前在标准库函数常用到的sys.c,delay.c,usart.c进行一些简单的修改,移植到HAL库函数中,使得其在HAL库函数中也能实现其功能应用。

一.开发准备过程

1.Keil5MDK编程软件(Keil.STM32F4xx_DFP.2.14.0版本固件库,太过古老的固件库可能会显示找不到芯片提示信息)。
2.STM32CubeMX(官网下载:https://www.st.com)
3.JDK8(STM32CubeMX是运行在JAVA环境上的,官网下载:https://www.oracle.com,JDK版本过高过低都不行,推荐JDK8)

二.STM32CubeMX使用参考

在这个例子中我将会将STM32的B0和B1两个IO口通过STM32CubeMX来配置成输出状态。

1.芯片选型

1.对于会没有在STM32CubeMX中安装HAL库的需要在软件中申请下载
STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化_第1张图片
STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化_第2张图片
2.芯片选型
这里我们选择STM32F407ZG
STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化_第3张图片
STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化_第4张图片

2.RCC时钟配置

这里我们需要将HSE(外部高速时钟)设置值为外部晶振输入状态
STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化_第5张图片
设置完后会发现右端芯片HSE晶振引脚变为绿色,表示配置完成
STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化_第6张图片

3.时钟树配置

STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化_第7张图片
配置要点如上图所示,由于博主使用的STM32单片机外部晶振为25MHz,所以最左侧的输入晶振为25MHz,经过25分频后变为1MHz,然后在PLL中*336在/2变为最终系统时钟为168MHz,这与以往标准库函数开发逻辑保持一致,然后就是AHB1和AHB2外设时钟的配置,目标是使其达到最大频率极限,如上图所示。

4.GPIO口配置

目的:将PB0和PB1设置为输出状态。
1.搜索PB0和PB1
输入PB0后会看到对应芯片引脚会进行黑色闪烁
STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化_第8张图片
点击芯片上的PB0引脚,选择output输出模式
STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化_第9张图片
然后选择右侧的GPIO选择项设置IO模式(推挽输出、上拉模式、IO时钟频率为veryHigh模式,将PB0设置一个宏定义:LED0)
STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化_第10张图片
至此,PBO的端口配置完成,PB1跟PB0配置步骤一模一样,不再阐述
STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化_第11张图片
IO口配置全部完成

5.生成代码

从上到下依次为:设置项目名称
设置代码存放位置
设置开发平台(使用Keil5,则选择:MDK-ARM,V5版本)
最后点击:Generate Code,生成代码,这样代码就生成完毕。
STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化_第12张图片
STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化_第13张图片

6.代码查看

1.main函数
STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化_第14张图片
推荐开发者将代码写入:USER CODE BEGIN和USER CODE END之间,这样在STM32CubeMX改变配置时就不会改变BEGIN和END之间内容
2.MX_GPIO_Init()
STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化_第15张图片
很容易看出IO口配置正确

二.sys.c,delay.c,usart.c在MX搭建工程中如何使用

本例子中sys.c,delay.c,usart.c函数是使用正点原子STM32F429系列单片机HAL库函数,修改内容非常简单,只需要将原sys.c函数中画框部分代码注释掉即可使用在STM32F407ZG中使用sys.c,delay.c,usart.c函数了
STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化_第16张图片
PS:
1.手动初始化HAL库函数时钟配置(STM32F407ZG)
STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化_第17张图片
STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化_第18张图片
2.当需要在MX生成的代码上手动进行其他相关外设的配置时,应该在stm32f4xx_hal_conf.h中对对应注释掉的宏定义使能常量进行解注释处理
STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化_第19张图片

例程:下载
STM32CubeMX:下载

你可能感兴趣的:(STM32学习,单片机,stm32)