STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯

先放这次需要的文件的网盘链接:https://share.weiyun.com/5pSVnjH

STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第1张图片

  • 前两个是Keil安装文件和破解机;
  • 第三个是ST-LINK的驱动,打开后右键管理员运行来安装;
  • 第四个是CubeMX的安装包;
  • 第五个是F401RE的原理图;
  • 第六个是F4xx系列的固件库。

先打开CubeMX,新建一个工程:

STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第2张图片

找到开发板(F401RE),点右边的Start Project

STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第3张图片

他会问要不要用默认模式,选
STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第4张图片

先看我们需要点亮的LED灯:LD2

STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第5张图片

LD2接到的是PA5,我们回到CubeMX查看这个PA5:
STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第6张图片

可以看到已经标好了这是 LD2[Green Led],已经设置好了GPIO_Output。

然后点左上角的Project->Generate Code:

STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第7张图片

我们给这个工程起名LD2_Blinky,设置好工程文件的地方后,选择Toolchain / IDE 为我们要使用的Keil MDK5,然后点击OK就行了:

STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第8张图片

之后可能会碰到说你缺少Firmware,你可以选择让CubeMX自己下载,也可以把微云里的en.stm32cubef4.zip准备好,点CubeMX上方的Help->Manage embedded software packages:
STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第9张图片

之后点下方的From Local …,选择那个固件包,之后等着他安装就好了:STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第10张图片

代码生成完毕后,我们可以直接打开Keil的工程文件,或者工程文件夹:
STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第11张图片

STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第12张图片

打开Keil的工程文件:
STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第13张图片

注意的是,CubeMX只帮我们生成了PA5的初始化文件,具体要对PA5做什么是要我们自己写的。
我们的Keil工程中用到了HAL库函数,为了写我们自己的代码,我们需要看一下HAL的手册。
HAL的手册在两个地方:刚才下载的固件包里,或者见下图(DELL是你自己的用户名):
STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第14张图片

在这里我们选一个帮助文档打开:
STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第15张图片

我们要用PA5,即GPIOA_5,就需要找到关于GPIO输出的部分:
STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第16张图片

这个函数就是用来向GPIO pin写数据的函数,至于怎么用它,我们回到Keil,看到main.c文件:
STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第17张图片

这里引用了一个头文件,右键打开它,我们需要的接口都在里面定义好了:
STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第18张图片

回到我们的函数:

void HAL_GPIO_WritePin  (GPIO_TypeDef *  GPIOx, uint16_t  GPIO_Pin, GPIO_PinState  PinState) 

第一个GPIOx就是我们的GPIO口A,它被定义为LD2_GPIO_Port;
第二个GPIO_Pin就是我们的第5位,它被定义为LD2_Pin;
第三个Pin_State在原函数中设定了两个值:
pin
SET可以看为高电平,RESET可以看为低电平。
在原理图中,我们知道要将PA5设置成高电平才能产生通过LD2的电流:
STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第19张图片

所以我们要点亮LD2,只需要在函数中加入一句
HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, SET);
要关闭LD2,则需要
HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, RESET);

为了造成闪烁效果,我们就需要在开关之间加入延时函数:

STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第20张图片
STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第21张图片

这个函数用的是毫秒,如果我们要等1秒,就要HAL_Delay(1000);
此外闪烁还需要循环进行,我们就把我们自己的代码加入到main函数里while(1)的部分即可:
STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第22张图片

之后配置好编译设置:

点击Keil界面里的魔术棒,点击Debugger界面,选择ST-LINK Debugger,再选择旁边的Setting
STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第23张图片

在这里选择我们F401RE自带的ST-LINK V2-1,如果没有,你需要下载微云里的en.stsw-link009.zip,解压安装ST-LINK驱动:
STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第24张图片

选好之后,点击旁边的Flash Download,点Add
STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第25张图片

这里有许多供我们选择,但我们要选适合我们的。
在F401所在的F4xx下,选择Flash Size最大的 512kB Flash,选择Add:
STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第26张图片

至此,我们已经配置完毕,点击Build编译,再Load进开发板:

STM32 F401RE + CubeMX + Keil5 + HAL 闪烁灯_第27张图片

如果编译有Error,就按一下开发板上黑色的Reset键,再重试,如果还不行就重启Keil。

P.S. Load之后不会立马见到效果,而是需要按一次Reset键才能见到效果。

你可能感兴趣的:(教程)