用c语言编写程序,TMS320F28335 用定时器1中断方式,实现1S翻转GP101 分脚控制的 LED 指示灯。
时间: 2024-02-06 13:10:42 浏览: 39
以下是基于TMS320F28335的C语言程序,使用定时器1中断实现每1秒翻转GP101引脚控制的LED指示灯。
```
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
// 定义LED控制引脚
#define LED_GPIO_PIN GP101
// 定义定时器1的CPU时钟计数值
#define TIMER1_CPU_CLOCK_COUNT 150000000
// 定时器1中断服务程序
__interrupt void timer1_isr(void)
{
// 翻转LED控制引脚状态
GpioDataRegs.GPATOGGLE.bit.LED_GPIO_PIN = 1;
// 清除定时器1中断标志位
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}
void main(void)
{
// 停用全局中断
DINT;
// 初始化系统时钟
InitSysCtrl();
// 初始化GPIO引脚
InitGpio();
// 配置LED控制引脚为输出模式
GpioCtrlRegs.GPAMUX2.bit.GPIO10 = 0;
GpioCtrlRegs.GPADIR.bit.LED_GPIO_PIN = 1;
// 初始化定时器1
InitPieCtrl();
IER |= M_INT1;
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
CpuTimer1Regs.TCR.bit.TSS = 1;
CpuTimer1Regs.PRD.all = TIMER1_CPU_CLOCK_COUNT;
CpuTimer1Regs.TCR.bit.TRB = 1;
CpuTimer1Regs.TCR.bit.TIE = 1;
CpuTimer1Regs.TCR.bit.TSS = 0;
// 启用全局中断
EINT;
while(1);
}
```
上述程序中,首先定义了LED控制引脚和定时器1的CPU时钟计数值,然后在定时器1中断服务程序中翻转LED控制引脚的状态,并清除定时器1中断标志位。在main函数中,停用全局中断,初始化系统时钟,初始化GPIO引脚,初始化定时器1,并最终启用全局中断。程序通过不断循环来保持LED指示灯的状态。