本例讲解STM32的GPIO使用,通过按键控制LED灯亮灭
打开STM32CubeMX新建工程,选择STMF130ZET6芯片。选择外部高速晶振(HSE).
根据德飞莱M3开发板原理图,选择按键和LED引脚
PE4,PE3为按键输入管脚,选择GPIO_INPUT模式。
PB5,PE5为LED输出控制管脚,选择GPIO_OUTPUT模式。
点击Clock Configuration配置系统时钟为72M最高速度
在System view中点击GPIO,设置PB5,PE5默认电平为高电平,其他不变
点击Project Manager,新建工程,输入工程名,选择工程保存路径。IDE选择MDK-ARM V5.27
再点击Code generator,勾选Generate peripheral initialization as a pair of `.c\h` files per peripheral,为你所配置的相关外设(GPIO,TIM,USART....等)的初始化,单独生成.c.h文件存放。
最后点击CODE GENERATE生成代码,在跳出的提示框中点击open Project。
在USER CODE BEGIN 3和USER CODE END 3中添加下列代码
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4)==0)//检测是否按下去
{
HAL_Delay(10);//延生10毫秒
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_SET);//PE5高电平
if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4)==0)//再检测是否按下去
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET);//PB5低电平
}
}
if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_3)==0)//检测是否按下去
{
HAL_Delay(10);//延生10毫秒
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET);//PB5高电平
if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_3)==0)//再检测是否按下去
{
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_RESET);//PE5低电平
}
}
}
/* USER CODE END 3 */
点击进行编译,把程序下载到实验版内。按下不同按键,LED1~LED2灯显示不同的转态。以后写的程序我们可以在这个模板的基础上修改。