可以看到已经标好了这是 LD2[Green Led],已经设置好了GPIO_Output。
之后可能会碰到说你缺少Firmware,你可以选择让CubeMX自己下载,也可以把微云里的en.stm32cubef4.zip准备好,点CubeMX上方的Help->Manage embedded software packages:
之后点下方的From Local …,选择那个固件包,之后等着他安装就好了:
代码生成完毕后,我们可以直接打开Keil的工程文件,或者工程文件夹:
注意的是,CubeMX只帮我们生成了PA5的初始化文件,具体要对PA5做什么是要我们自己写的。
我们的Keil工程中用到了HAL库函数,为了写我们自己的代码,我们需要看一下HAL的手册。
HAL的手册在两个地方:刚才下载的固件包里,或者见下图(DELL是你自己的用户名):
我们要用PA5,即GPIOA_5,就需要找到关于GPIO输出的部分:
这个函数就是用来向GPIO pin写数据的函数,至于怎么用它,我们回到Keil,看到main.c文件:
这里引用了一个头文件,右键打开它,我们需要的接口都在里面定义好了:
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在原函数中设定了两个值:
SET可以看为高电平,RESET可以看为低电平。
在原理图中,我们知道要将PA5设置成高电平才能产生通过LD2的电流:
所以我们要点亮LD2,只需要在函数中加入一句
HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, SET);
要关闭LD2,则需要
HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, RESET);
这个函数用的是毫秒,如果我们要等1秒,就要HAL_Delay(1000);
此外闪烁还需要循环进行,我们就把我们自己的代码加入到main函数里while(1)的部分即可:
点击Keil界面里的魔术棒,点击Debugger界面,选择ST-LINK Debugger,再选择旁边的Setting:
在这里选择我们F401RE自带的ST-LINK V2-1,如果没有,你需要下载微云里的en.stsw-link009.zip,解压安装ST-LINK驱动:
选好之后,点击旁边的Flash Download,点Add:
这里有许多供我们选择,但我们要选适合我们的。
在F401所在的F4xx下,选择Flash Size最大的 512kB Flash,选择Add:
如果编译有Error,就按一下开发板上黑色的Reset键,再重试,如果还不行就重启Keil。
P.S. Load之后不会立马见到效果,而是需要按一次Reset键才能见到效果。