STM32CUDE-STM32F407学习笔记2-按键操作

本文章属于学习笔记文章,如有抄袭请见谅
本人使用的开发板是野火骄阳stm32f407igtx开发板
本实验使用软件有:keil5、STM32CubeMX软件

学习本实验需要先学习stm32标准库,只需要学习前几章就行(GPIO口输出和输入、时钟配置,exti外部中断),本人是初学者,所以有错误欢迎大家指正。
软件安装参考野火教程,软件最好选择最新版本安装,我安装的官网上最新的keil5,好像是不需要破解,使用到目前没有什么阻碍。
学无止境,在学习时我有很多困惑会写出来,欢迎大家讨论

实验开始

  1. 承接上文(本次实验使用上个文章的代码就行实验,打开后缀.IOC文件)
    在这里插入图片描述

  2. 设置GPIO(野火骄阳stm32f407igtx芯片有四个led灯引脚分别为PA15,PE2,PG15,PB8,按键引脚为PA0,PC13,PG2,PG3,PG4,PG5,我们选用PA0作为触发引脚,选择为输入,之后直接生成代码)在这里插入图片描述在这里插入图片描述

  3. 添加函数(初始化两个引脚后,我们进入gpio.c添加按键扫描代码)

uint8_t Key_Scan(GPIO_TypeDef *GPIOx,uint16_t GPIO_PIN)
{
    if (HAL_GPIO_ReadPin(GPIOx,GPIO_PIN) == 1)
    {
        /* code */
        while (HAL_GPIO_ReadPin(GPIOx,GPIO_PIN) == 1);
        return 1;
    }
    else
    {
        return 0;
    }   
}

之后记得把初始化时led灯先关掉,在void MX_GPIO_Init(void)中添加代码HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);
4. 主函数编写(在mian.c中添加以下函数使用按键点亮led灯)

if (Key_Scan(KEY_GPIO_Port,KEY_Pin)==1)
{
	HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);

总结与不足

该实验只能一次性点亮led灯,可以在gpio.c中添加led反转代码,进行按键控制led灯亮灭

uint8_t led_qufan(GPIO_TypeDef *GPIOx,uint16_t GPIO_PIN)
{
if(HAL_GPIO_ReadPin(GPIOx,GPIO_PIN)==1)
	{
		HAL_GPIO_WritePin(GPIOx,GPIO_PIN,GPIO_PIN_RESET);
	}
else{
		HAL_GPIO_WritePin(GPIOx,GPIO_PIN,GPIO_PIN_SET);
}

}

之后将main.c中的while(1)中的代码改为

if (Key_Scan(KEY_GPIO_Port,KEY_Pin)==1)
{
	led_qufan(LED_GPIO_Port,LED_Pin);
}

实验效果是随按键灯亮灭。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值