stm32点亮双色led灯代码
时间: 2024-10-17 10:01:55 浏览: 61
STM32之点亮LED灯程序
5星 · 资源好评率100%
STM32单片机通过GPIO控制LED灯的双色效果通常涉及两个步骤:配置GPIO口作为输出,并设置相应的寄存器值来驱动LED。这里是一个简单的示例,假设你使用的是STM32F103系列,LED1连接到PA8,LED2连接到PB6。
```c
#include "stm32f1xx.h"
// LED GPIO初始化
void LedInit(void) {
GPIO_InitTypeDef GPIO_InitStructure;
// PA8 和 PB6 配置为推挽输出模式
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB, ENABLE); // 开启相关GPIO时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; // 设置LED1对应的GPIO位
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 输出推挽模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; // 设置LED2对应的GPIO位
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
// 双色LED闪烁函数
void LedBlink DualColorLed(void) {
GPIO_InitTypeDef GPIO_InitStructure;
for(;;) { // 无限循环闪烁
GPIO_ResetBits(GPIOA, GPIO_Pin_8); // 关闭LED1
GPIO_SetBits(GPIOB, GPIO_Pin_6); // 打开LED2
// 暂停一段时间让颜色切换
HAL_Delay(500); // 例如延时500毫秒
GPIO_ResetBits(GPIOB, GPIO_Pin_6); // 关闭LED2
GPIO_SetBits(GPIOA, GPIO_Pin_8); // 打开LED1
// 再次暂停一段时间
HAL_Delay(500); // 可以根据需要调整延时时间
}
}
int main(void) {
LedInit(); // 初始化LED
while (1) {
LedBlink(); // 调用双色LED闪烁函数
}
return 0;
}
阅读全文