前言:咱们学习一门新语言的时候都是先从hello world入门,stm32也有本身的入门方式,那就是流水灯的配置。html
在配置以前咱们须要先配置好编译环境,咱们须要手动修改头文件中的一些内容。学习
一、首先咱们须要先建立一个新工程,前面我已经详细讲过怎么建立一个新工程了,在这里就不赘述了,不懂的朋友能够看看个人上一篇的随笔(stm32环境搭建)。spa
二、修改系统时钟,把文件system_stm32f4xx.c(Startup)文件中的PLL_M宏定义改成8,PLL_N若是不是336的话改为336,还有stm32f4xx.h文件中的HSE_VALUE的值改为80000003d
二、J-Link正确链接到开发板,安装驱动Setup_JLinkARM_V415e.execode
3)在工程选项的【Debug】标签,选中“J-LINK/J-TRACE Cortex”,接着点击“settings”,设置port为“sw”,频率为“5MHz”;而后点击【Flash Download】,勾选“Reset and Run”。最后点击“肯定”按钮退出。htm
四、经过查看原理图,找出四盏led灯的管脚名字,我这里分别为LED0、LED一、FSMC_D十、FSMC_D11,这里不一样的板子led的管脚的名字可能不一样。blog
五、知道led灯管脚的名字以后,再经过芯片原理图找到对应的led灯管脚名字的I/O口,从原理图可知,对应的I/O为PF九、PF十、PE13和PE14,不一样的硬件对应的I/O口不一样,须要本身找出本身硬件上的led对应的I/O口。ip
六、找出对应芯片上的I/O口以后,咱们就能够着手写代码了。若是不懂这么写的能够查阅官方的标准的外设库文件(Standard Peripherals Library),里面有配置I/0的模板例子,可是须要作适当的修改。如图即是标准外设库文件配置I/O的例子开发
七、具体代码以下led.c以下:get
#include "stm32f4xx.h" GPIO_InitTypeDef GPIO_InitStructure; void delay(void) { unsigned int i=0x500000; while(i--); } int main(void) { /* GPIOG Peripheral clock enable ,使能外设时钟GPIOF和GPIOE,也就是让GPIOF和GPIOE工做*/ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE); /* 配置PF9引脚为推挽输出模式 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; //第PF9和PF10号引脚 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //输出模式 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出模式,增长输出电流 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //引脚的的工做速度最高为100MHz,最低为2MHz,工做速度越高,功耗就越高 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //不须要上拉电阻 GPIO_Init(GPIOF, &GPIO_InitStructure); //初始化端口F GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14; //第PE13和PE14号引脚 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //输出模式 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出模式,增长输出电流 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //引脚的的工做速度最高为100MHz,最低为2MHz,工做速度越高,功耗就越高 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //不须要上拉电阻 GPIO_Init(GPIOE, &GPIO_InitStructure); //初始化端口E while(1) { GPIO_ResetBits(GPIOF,GPIO_Pin_9);//PF9引脚为低电平,led灯亮 delay(); GPIO_SetBits(GPIOF,GPIO_Pin_9); //PF9引脚为高电平,led灯灭 delay(); GPIO_ResetBits(GPIOF,GPIO_Pin_10);//PF10引脚为低电平,led灯亮 delay(); GPIO_SetBits(GPIOF,GPIO_Pin_10); //PF10引脚为高电平,led灯灭 delay(); GPIO_ResetBits(GPIOE,GPIO_Pin_13); //PE13引脚为低电平,led灭亮 delay(); GPIO_SetBits(GPIOE,GPIO_Pin_13); //PE13引脚为高电平,led灯灭 delay(); GPIO_ResetBits(GPIOE,GPIO_Pin_14); //PE14引脚为低电平,led灭亮 delay(); GPIO_SetBits(GPIOE,GPIO_Pin_14); //PE14引脚为高电平,led灯灭 delay(); } }
七、编译以后,经过仿真器下载到板子上就能够跑流水灯了。