编写程序,以KL25的B端口的9、18和19引脚作为输出口,控制LED三色灯的闪烁,开发板一上电,小灯按照紫色,黄色,蓝色的顺序,相隔2秒循环显示用fir循环编写
时间: 2024-05-13 09:16:49 浏览: 67
一个LED灯闪烁程序
以下是使用C语言在KL25开发板上实现LED三色灯循环闪烁的代码:
```c
#include "MKL25Z4.h"
#define LED_RED_PIN 9
#define LED_GREEN_PIN 18
#define LED_BLUE_PIN 19
void delay(int n) { // 延时函数
volatile int i;
for (i = 0; i < n * 100000; i++) {}
}
int main(void) {
SIM->SCGC5 |= (1UL << 10) | (1UL << 11) | (1UL << 12); // 使能B端口时钟
PORTB->PCR[LED_RED_PIN] |= (1UL << 8); // 将9引脚配置为GPIO
PTB->PDDR |= (1UL << LED_RED_PIN); // 将9引脚配置为输出
PORTB->PCR[LED_GREEN_PIN] |= (1UL << 8); // 将18引脚配置为GPIO
PTB->PDDR |= (1UL << LED_GREEN_PIN); // 将18引脚配置为输出
PORTB->PCR[LED_BLUE_PIN] |= (1UL << 8); // 将19引脚配置为GPIO
PTB->PDDR |= (1UL << LED_BLUE_PIN); // 将19引脚配置为输出
while (1) {
PTB->PCOR = (1UL << LED_RED_PIN); // 点亮红色LED,关闭其他两个LED
PTB->PSOR = (1UL << LED_GREEN_PIN);
PTB->PSOR = (1UL << LED_BLUE_PIN);
delay(2); // 延时2秒
PTB->PSOR = (1UL << LED_RED_PIN); // 点亮绿色LED,关闭其他两个LED
PTB->PCOR = (1UL << LED_GREEN_PIN);
PTB->PSOR = (1UL << LED_BLUE_PIN);
delay(2); // 延时2秒
PTB->PSOR = (1UL << LED_RED_PIN); // 点亮蓝色LED,关闭其他两个LED
PTB->PSOR = (1UL << LED_GREEN_PIN);
PTB->PCOR = (1UL << LED_BLUE_PIN);
delay(2); // 延时2秒
}
return 0;
}
```
上述代码中,使用了FIR循环延时函数`delay`,该函数通过循环来实现延时,因此精度较低,但对于简单的延时应用足够。在主函数中,使用了三个变量`LED_RED_PIN`、`LED_GREEN_PIN`和`LED_BLUE_PIN`,分别代表三个LED的引脚号。在无限循环中,分别点亮红色、绿色和蓝色LED,并通过延时函数实现LED的闪烁。
阅读全文