stm32f103c8t6按键控制led代码
时间: 2023-08-27 19:05:06 浏览: 180
STM32F103C8T6-按键控制LED
以下是基于STM32CubeMX和HAL库的按键控制LED的代码:
1. 首先在CubeMX中配置GPIO引脚和外部中断:
- 将LED控制引脚和按键引脚都配置为GPIO输出模式
- 将按键引脚配置为GPIO外部中断模式,并设置为上升/下降沿触发
2. 在main.c中添加以下代码:
```c
#include "main.h"
#include "stm32f1xx_hal.h"
/* 定义LED控制引脚和按键引脚 */
#define LED_Pin GPIO_PIN_13
#define LED_GPIO_Port GPIOC
#define KEY_Pin GPIO_PIN_0
#define KEY_GPIO_Port GPIOA
/* 定义按键状态变量 */
uint8_t key_state = 0;
/* 定义按键中断回调函数 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if (GPIO_Pin == KEY_Pin) {
key_state = 1;
}
}
int main(void)
{
HAL_Init();
/* 配置LED控制引脚 */
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = LED_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
/* 配置按键引脚 */
GPIO_InitStruct.Pin = KEY_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(KEY_GPIO_Port, &GPIO_InitStruct);
while (1)
{
/* 检测按键状态并控制LED */
if (key_state == 1) {
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
key_state = 0;
}
HAL_Delay(10);
}
}
```
3. 编译并烧录程序到STM32F103C8T6开发板上,按下按键可以控制LED灯的亮灭。
阅读全文