STM32——点灯
1.开发准备
开发环境:keil5,STM32CubeMX
开发语言:C语言
烧录工具:ST-Link
库函数:HAL库
2.点灯
常用的GPIO HAL库函数:
//GPIO初始化
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);
//调制电平
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
//反转
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
结构体 GPIO_InitTypeDef 定义:
typedef struct
{
uint32_t Pin;
uint32_t Mode;
uint32_t Pull;
uint32_t Speed;
} GPIO_InitTypeDef;
3.按键点亮LED灯(轮询法)
输入(按键):
- KEY1:PA0
- KEY2:PA1
输出(LED灯):
- LED1:PB8
- LED2:PB9
#define KEY_ON 0
#define KEY_OFF 1uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
{if( HAL_GPIO_ReadPin(GPIOx,GPIO_Pin) == GPIO_PIN_RESET){/* 按键按下 */return KEY_ON;}else{/* 按键松开 */while(HAL_GPIO_ReadPin(GPIOx, GPIO_Pin) == GPIO_PIN_RESET);return KEY_OFF;}
}while (1)
{/* USER CODE END WHILE */if(Key_Scan(GPIOA,GPIO_PIN_0) == KEY_ON)HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8);if(Key_Scan(GPIOA,GPIO_PIN_1) == KEY_ON)HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);/* USER CODE BEGIN 3 */
}
4.按键点亮LED灯(中断法)
-
配置时钟
-
配置GPIO口
-
使能中断
-
配置工程
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {switch(GPIO_Pin){HAL_Delay(50);case GPIO_PIN_0:if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==GPIO_PIN_RESET)HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8);break;case GPIO_PIN_1:if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_1)==GPIO_PIN_RESET)HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);break;} }