STM32 CubeMX学习实验2:按键输入

一、工程配置

1.打开工程模板,没有工程模板的同学可参考主页《点亮led》,根据开发板原理图对按键引脚配置。

 2.以WK_UP(PA0)和KEY0(PE4)为例,WK_UP一端接VCC,另一端接PA0,即高电平有效,引脚需要配置下拉输入;KEY0一端接GND,另一端接PE4,即低电平有效,引脚需要配置上拉输入。PA0按照图中配置即可,PE4选择上拉。

3.点击右上角GENERATE CODE生成代码,弹出的对话框选择Open Projec打开工程。

二、编写代码

1.在gpio.c文件中已经生成按键初始化代码,直接对引脚进行操作即可。

2.HAL库中提供了读取引脚电平的函数GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin),GPIO_PinState为返回引脚状态,参数GPIO_TypeDef* GPIOx表示端口x,GPIO_Pin表示读取的引脚。

三、现象验证

在main函数中添加读取引脚状态的代码,控制led状态,当WK_UP按下时点亮led,当KEY0按下时关闭led。(代码中HAL_Delay为ms延时函数,在按键处理中用于消除按键按下的机械抖动,同学们可以试试代码2和3,通过现象对比代码2和3的区别)

while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
      //111111111111111111111111111111111111111
    if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==1)
    {
        HAL_Delay(10);
        if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==1)
        {
            HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_RESET);
        }
    }
    else if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4)==0)
    {
        HAL_Delay(10);
        if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4)==0)
        {
            HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_SET);
        }
    }
    
//    //222222222222222222222222222222222222222
//    if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==1)
//    {
//        HAL_Delay(10);
//        if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==1)
//        {
//            HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_9);
//        }
//    }
//    else if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4)==0)
//    {
//        HAL_Delay(10);
//        if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4)==0)
//        {
//            HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_9);
//        }
//    }
//    
//    //33333333333333333333333333333333333333
//    if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==1)
//    {
//        HAL_Delay(10);
//        if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==1)
//        {
//            HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_9);
//        }
//        while(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0));
//    }
//    else if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4)==0)
//    {
//        HAL_Delay(10);
//        if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4)==0)
//        {
//            HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_9);
//        }
//        while(!HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4));
//    }
  }

下期更新如何使用外部中断控制led状态...

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32CUBEMX是STMicroelectronics公司开发的一款用于生成STM32微控制器初始化代码的软件工具。它可以帮助开发人员快速配置STM32微控制器的外设和引脚,并自动生成相应的初始化代码。在使用STM32CUBEMX进行按键中断配置时,可以按照以下步骤进行操作: 1. 打开STM32CUBEMX软件并创建一个新工程。 2. 在Pinout & Configuration选项卡中,找到对应的按键引脚和LED灯的引脚,并进行配置。可以参考提供的电路图进行正确的配置。 3. 在Configuration选项卡中,配置按键的模式为输入下降沿触发。这可以通过设置GPIO外设的相应控制寄存器来实现。 4. 在生成代码之前,可以进一步进行配置文件的编辑,以满足项目的需求。这可以通过在Configuration选项卡中进行相应的设置来完成。 5. 生成代码并将其导入到您的开发环境中进行编译和调试。 需要注意的是,延时函数的声明可以在头文件中进行。在主函数中,您可以使用extern关键字来声明其他文件中的函数,以便能够调用它们。这样可以将函数声明集中到主函数的头文件中,以方便管理和维护。有关extern关键字的更多信息,可以通过搜索引擎进行进一步了解。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [STM32CubeMX按键中断](https://blog.csdn.net/qq_15672897/article/details/111322736)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [毕设项目:基于zigbee和stm32的智能家居系统,上位机使用Qt编写.zip](https://download.csdn.net/download/qq_35831906/88258947)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值