STM32F103C8并联控制两个LED灯源代码
时间: 2024-12-15 20:25:39 浏览: 4
STM32F103C8单片机是一个基于ARM Cortex-M3内核的微控制器,通常用于嵌入式系统。要通过它并联控制两个LED灯,你需要编写GPIO配置和定时器中断驱动程序。以下是一个简单的示例代码片段,假设你已经初始化了GPIOA用于LED1和GPIOB用于LED2:
```c
#include "stm32f10x.h"
// LED 定义
#define LED1 GPIO_Pin_0 // GPIOA的Pin0连接LED1
#define LED2 GPIO_Pin_1 // GPIOB的Pin1连接LED2
// 初始化GPIO
void gpio_init(void) {
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = LED1 | LED2; // LED1 和 LED2 的引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 输出推挽模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化GPIOA
GPIO_Init(GPIOB, &GPIO_InitStructure); // 初始化GPIOB
}
// 切换LED状态
void toggle_led(uint8_t led) {
if (led == 1) { // LED1
GPIO_SetBits(GPIOA, LED1);
} else { // LED2
GPIO_SetBits(GPIOB, LED2);
}
}
int main(void) {
gpio_init();
while (1) {
toggle_led(1); // 首先切换LED1亮起
HAL_Delay(500); // 等待一段时间
toggle_led(2); // 然后切换LED2亮起
HAL_Delay(500); // 再等待一段时间
}
return 0;
}
```
注意,这个代码使用了HAL库,因为STM32F103C8支持该库提供更高级别的功能。`toggle_led`函数用来切换LED状态,而`HAL_Delay`则是延迟指定时间。
阅读全文