DSP280049C初学(1)-实现LED闪烁运行灯

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;
}
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tony0925

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值