DSP280049C初学-实现LED闪烁运行灯
对于不知道如何新建一个属于自己的CCS工程文件的友友们可以参考这篇文章:
DSP(TMSF280049C)学习笔记1:软件的安装与新工程的建立
第一部分:LED
这里我选取GPIO33作为LED输出口,其定义函数如下:
void LED_int (void)
{
GPIO_SetupPinMux(33, GPIO_MUX_CPU1, 0); //(GPIO号,MUX,GPIO功能选择)
GPIO_SetupPinOptions(33, GPIO_OUTPUT, GPIO_PUSHPULL); //(GPIO号,input输入/output输出,上拉)
GPIO_WritePin(33, 1); //(GPIO号,1高电平/0低电平)
}
第二部分:TIM0
定时器我选择了TIM0,其定义函数与中断服务函数如下:
void TIM0_int (void)
{
EALLOW;
PieVectTable.TIMER0_INT=&cpu_timer0_isr; //将定时器0中断服务子函数的地址存放到相应的向量地址中
EDIS;
InitCpuTimers(); //初始化定时器,此函数存在于F28004x_CpuTimers.c文件中
ConfigCpuTimer(&CpuTimer0, 150, 500000); //为定时器设定中断周期。同时在函数内部使能定时器中断
CpuTimer0Regs.TCR.all=0x4001; //启动定时器开始运行
IER|= M_INT1; //CPU级∶使能CPU级的中断信号
PieCtrlRegs.PIEIER1.bit.INTx7=1; //PIE级∶使能 PIE组1中与 Timer0 对应的中断使能位 TINTO
EINT; //使能全局中断
ERTM; //使能全局中断
}
interrupt void cpu_timer0_isr(void)
{
GpioDataRegs. GPBTOGGLE.bit.GPIO33=1;
PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;
}
第三部分:整体程序
/**
* main.c
*/
//子函数1:LED-GPIO33
//子函数2:TIM0
#include "F28x_Project.h"
//函数说明
void LED_int (void);
void TIM0_int (void);
interrupt void cpu_timer0_isr(void);
//主函数
void main(void)
{
InitSysCtrl();
DINT;
InitPieCtrl();
IER=0x0000;
IFR=0x0000;
InitPieVectTable();
LED_int();
TIM0_int ();
while (1)
{
}
}
//子函数
void LED_int (void)
{
GPIO_SetupPinMux(33, GPIO_MUX_CPU1, 0); //(GPIO号,MUX,GPIO功能选择)
GPIO_SetupPinOptions(33, GPIO_OUTPUT, GPIO_PUSHPULL); //(GPIO号,input输入/output输出,上拉)
GPIO_WritePin(33, 1); //(GPIO号,1高电平/0低电平)
}
void TIM0_int (void)
{
EALLOW;
PieVectTable.TIMER0_INT=&cpu_timer0_isr; //将定时器0中断服务子函数的地址存放到相应的向量地址中
EDIS;
InitCpuTimers(); //初始化定时器,此函数存在于F28004x_CpuTimers.c文件中
ConfigCpuTimer(&CpuTimer0, 150, 500000); //为定时器设定中断周期。同时在函数内部使能定时器中断
CpuTimer0Regs.TCR.all=0x4001; //启动定时器开始运行
IER|= M_INT1; //CPU级∶使能CPU级的中断信号
PieCtrlRegs.PIEIER1.bit.INTx7=1; //PIE级∶使能 PIE组1中与 Timer0 对应的中断使能位 TINTO
EINT; //使能全局中断
ERTM; //使能全局中断
}
interrupt void cpu_timer0_isr(void)
{
GpioDataRegs. GPBTOGGLE.bit.GPIO33=1;
PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;
}