用IAR编写SW2控制两个LED闪烁完整代码
时间: 2024-09-23 15:10:03 浏览: 100
在IAR Workbench环境下编写SW2(STM32系列微控制器)控制两个LED闪烁的代码,首先需要包含必要的头文件,并设置GPIO模式。下面是一个简单的示例:
```c
#include "stm32f1xx.h" // 引入STM32F10x系列芯片的头文件
// LED初始化
GPIO_InitTypeDef GPIO_InitStructure;
// LED定义,假设PA0和PA1是LED1和LED2的引脚
#define LED_PIN_1 GPIO_Pin_0
#define LED_PIN_2 GPIO_Pin_1
#define LED_GPIO_PORT GPIOB // PB口用于GPIO
void led_init(void) {
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); // 启动PB口时钟
GPIO_InitStructure.GPIO_Pin = LED_PIN_1 | LED_PIN_2; // 配置LED引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 输出推挽模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 速度50MHz
GPIO_Init(LED_GPIO_PORT, &GPIO_InitStructure); // 初始化GPIO
}
// 简单的闪烁函数,这里我们用定时器延时实现
void led_blink(uint8_t delay_ms) {
GPIO_BitWrite(LED_GPIO_PORT, LED_PIN_1, !GPIO_PinGetBit(LED_GPIO_PORT, LED_PIN_1)); // 切换LED1状态
HAL_Delay(delay_ms); // 延时指定毫秒数
GPIO_BitWrite(LED_GPIO_PORT, LED_PIN_2, !GPIO_PinGetBit(LED_GPIO_PORT, LED_PIN_2)); // 切换LED2状态
HAL_Delay(delay_ms);
}
int main(void) {
led_init(); // 初始化LED
while (1) { // 无限循环
led_blink(500); // 每次闪烁间隔500ms
}
return 0;
}
阅读全文