利用tms320f2812写流水灯代码
时间: 2023-05-27 07:03:50 浏览: 134
以下是tms320f2812的流水灯代码:
```
#include "f2812_gpio.h"
void delay(unsigned long count) //延时函数
{
volatile unsigned long i;
for (i = 0; i < count; i++);
}
void main(void)
{
unsigned int i, LED;
Init_GPIO(); //初始化GPIO
LED = 0x0001; //从第一个LED灯开始往后移
while (1)
{
for (i = 0; i < 16; i++)
{
GpioDataRegs.GPATOGGLE.all = LED;//切换LED
delay(50000);//延时一段时间
LED <<= 1;//移位
}
LED = 0x0001;//当LED灯到了最后一个时,再从第一个开始
}
}
```
解释:
1. `Init_GPIO()` 函数是在 GPIOModule.c 文件中定义的,用于初始化 GPIO 端口的模式和方向。
2. `delay()` 函数是一个简单的延迟函数,用于产生一定的时间延迟,防止 LED 灯切换过快,导致眼睛不能感知到。
3. 在主函数中,LED 变量用于记录当前亮着的 LED 灯的位置。从第一个 LED 灯开始往后移,直到最后一个灯后,再从第一个开始。循环控制变量 `i` 用于记录当前循环次数。
4. `GpioDataRegs.GPATOGGLE.all = LED` 表示切换当前亮着的 LED 灯的状态。如果该 LED 灯是亮着的,则将其关闭,否则将其点亮。
5. `LED <<= 1;` 表示将 LED 变量左移一位,即将下一个灯点亮。
6. `delay(50000);` 表示延时一定的时间,等待眼睛感知到当前 LED 灯的状态,再进行下一次切换。