1.stm32实验点亮led灯,按键处理

实验一:点亮LED灯

1.看原理图

1.stm32实验点亮led灯,按键处理_第1张图片

GPIO为F ,等寄存器为PF7,PF8,PF9,PF10

1.1打开cubemx-->stm32f407IG

1.stm32实验点亮led灯,按键处理_第2张图片

2.打包-->用keil5打开

1.stm32实验点亮led灯,按键处理_第3张图片

1.stm32实验点亮led灯,按键处理_第4张图片


方法(1)GPIOF->ODR改变寄存器,但是没有用,似乎是用的时候会覆盖以前的数据,即不可单独修改


方法(2)GPIOF->BSRR这个可以单独修改寄存器,不影响其他寄存器

步骤:

GPIOF->BSRR=(1<<7)|(1<<8)|(1<<9)|(1<<10);

HAL_Delay(1000);

GPIOF->BSRR=(1<<23)|(1<<24)|(1<<25)|(1<<26);

//前16位为置位,后16位为复位(看底板手册)

HAL_Delay(1000);

方法(3)HAL库本质上也是去操作BSRR,使用之前可以去看看参数@param注释的即为参数

步骤:

HAL_GPIO_WritePin(GPIOF,GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10, GPIO_PIN_RESET);

HAL_Delay(1000);

HAL_GPIO_WritePin(GPIOF,GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10, GPIO_PIN_SET);

HAL_Delay(1000);

实验二:按键处理<按键控制开关灯>


1.观看原理图

1.stm32实验点亮led灯,按键处理_第5张图片

准备用key3,对应PI9,在cubemx上PI9设置input,PF7-PF10设置output

步骤:

if(HAL_GPIO_ReadPin(GPIOI, GPIO_PIN_9)==GPIO_PIN_RESET){//判断按键按下

HAL_Delay(20);//防止抖动

if(HAL_GPIO_ReadPin(GPIOI,GPIO_PIN_9)==GPIO_PIN_RESET){//再次判断按键按下

      while(HAL_GPIO_ReadPin(GPIOI, GPIO_PIN_9)==GPIO_PIN_RESET);//等待按键松开

      HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10);

        //反转电平

}

}

你可能感兴趣的:(二.stm32F407学习,stm32,单片机,嵌入式硬件)