如何使用stm32f103c8t6使用高电平点亮一个LED灯
时间: 2024-10-16 16:01:24 浏览: 76
固件库点亮LED灯_GPIO_LED_stm32f103c8t6_
5星 · 资源好评率100%
在STM32F103C8T6单片机上使用GPIO口通过高电平点亮LED灯,通常需要以下步骤:
1. **初始化GPIO**:
- 在STM32 HAL库中,首先需要配置GPIOB作为通用输入输出(GPIO General Purpose Input Output)模块,将PA8(对应GPIO pin 8)设置为推挽输出模式,因为LED通常需要驱动电流。
```c
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = GPIO_PIN_8; // PA8
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Push-Pull 输出
GPIO_InitStruct.Pull = GPIO_NOPULL; // 上拉或下拉无用,因为是外部设备
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; // 高速
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
```
2. **设置GPIO状态**:
- 使用`HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);` 将GPIOB的PA8设置为高电平,这会点亮连接到该引脚的LED。
```c
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);
```
3. **控制LED闪烁或循环操作** (如果需要):
- 可以在主循环里不断切换GPIO的状态,比如每秒改变一次,添加延时函数如`HAL_Delay()`来实现周期性的闪烁。
```c
while (1) {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET); // 设置高电平
HAL_Delay(500); // 等待500ms(例如)
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET); // 设置低电平
HAL_Delay(500); // 等待500ms
}
```
阅读全文