DSP28335闪烁2个LED

第一章 任务介绍

       在这篇文章中,我们将接着上一篇点亮LED灯的工程继续开展。在本篇文章中,我们将实现D1和D2两个LED同时经过1s的点亮后熄灭,并保持熄灭状态1s,再点亮,重复此过程,形成频率为0.5Hz的LED闪烁。

第二章 延时函数DELAY_US()介绍

       延时函数DELAY_US()同样也是TI通过汇编文件DSP2833x_usDelay.asm提供给我们的功能。

0557ad9dfded486cba851032082209d1.png

       打开DSP2833x_usDelay.asm文件,在代码最后几行能看到,提供给我们的延时函数DELAY_US(A),“US”代表微秒。

406e1e10033541caa20ae3f72f3f5573.png

       将DELAY_US(A)复制到主函数中,然后点击进去查看,能看到DELAY_US()函数是在DSP2833x_Examples.h头文件中定义的。其中公式中的CPU_RATE是CPU的速度,点进去查看,CPU_RATE的值是通过宏定义确定的,当系统时钟为150MHz时,在宏定义中选择6.667L,这样能保证,DELAY_US(A)中延时参数A的单位是微秒。

20b4deff9f76407f8a41f64d262e4533.png

ff8c757da1c54d4ea2a797ae17e33205.png

 第三章 程序解释和测试结果

3.1 程序解释

       在核心板上电后,GPIO6和GPIO7保持上拉状态,灯熄灭,初始化完成后,D1和D2点亮,经历1s的延时后,进入while()死循环。进入循环体后第一件事就是通过按位取反运算符“~”将GPIO6和GPIO7的输出电平进行翻转,转为熄灭状态,再经过1s的延时后,循环再翻转,形成LED闪烁的效果。



/**
 * main.c
 */
#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"

int main(void)
{
    InitSysCtrl();  //初始化系统时钟
    EALLOW; //关闭写保护
    GpioCtrlRegs.GPAMUX1.bit.GPIO6=0;   //GPIO6设置为普通I/O功能
    GpioCtrlRegs.GPADIR.bit.GPIO6=1;    //GPIO6设置为输出
    GpioCtrlRegs.GPAPUD.bit.GPIO6=0;    //GPIO6上拉使能
    GpioCtrlRegs.GPAMUX1.bit.GPIO7=0;
    GpioCtrlRegs.GPADIR.bit.GPIO7=1;
    GpioCtrlRegs.GPAPUD.bit.GPIO7=0;

    EDIS;   //打开写保护

//    GpioDataRegs.GPADAT.all=GpioDataRegs.GPADAT.all | 0x000000C0;   //D1和D2都熄灭
    GpioDataRegs.GPADAT.all=GpioDataRegs.GPADAT.all & 0xFFFFFF3F;   //D1和D2都点亮
    DELAY_US(1e6);
    while(1)
    {
        GpioDataRegs.GPADAT.bit.GPIO6= ~GpioDataRegs.GPADAT.bit.GPIO6;
        GpioDataRegs.GPADAT.bit.GPIO7= ~GpioDataRegs.GPADAT.bit.GPIO7;
        DELAY_US(1e6);
    }
}

3.2 测试结果 

0422ae6dcd4845a48cfbea6cbaa4320a.gif

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值