注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
zhangleiat185的个人空间 https://home.eeworld.com.cn/space-uid-424852.html [收藏] [复制] [分享] [RSS]
日志

C2000launchpad学习帖之点亮LED

已有 1851 次阅读2013-8-16 01:04

C2000launchpad学习帖之点亮LED
先贴例程如下:
#include
#include
void main(void)
{
   InitSysCtrl();   //系统控制初始化
   //InitGpio();
   DINT;      //禁止全局中断
   InitPieCtrl();
   IER = 0x0000;  //禁止CPU中断
   IFR = 0x0000;  //清楚CPU所有中断标志
   InitPieVectTable();//位向量表中的所有中断向量配置对应的入口地址
   EALLOW;    //允许访问受保护的空间
   GpioCtrlRegs.GPADIR.bit.GPIO0=1; //配置I/O口为输出
   GpioCtrlRegs.GPADIR.bit.GPIO1=1;
   GpioCtrlRegs.GPADIR.bit.GPIO2=1;
   GpioCtrlRegs.GPADIR.bit.GPIO3=1;
   GpioCtrlRegs.GPADIR.bit.GPIO12=0;
   EDIS;      //禁止访问受保护的空间
   GpioDataRegs.GPASET.bit.GPIO12 == 0;
   for(;;)
        {
       if(GpioDataRegs.GPADAT.bit.GPIO12 == 0)
       {
           GpioDataRegs.GPACLEAR.bit.GPIO2 = 1;
           GpioDataRegs.GPACLEAR.bit.GPIO0 = 1;
           GpioDataRegs.GPASET.bit.GPIO3 = 1;
           GpioDataRegs.GPASET.bit.GPIO1 = 1;
       }
       if(GpioDataRegs.GPADAT.bit.GPIO12 == 1)
           {
             GpioDataRegs.GPASET.bit.GPIO0 = 1;
             GpioDataRegs.GPASET.bit.GPIO2 = 1;
             GpioDataRegs.GPACLEAR.bit.GPIO1 = 1;
             GpioDataRegs.GPACLEAR.bit.GPIO3 = 1;
           }
        }
}

发这个帖子的原因是在之前的学习中遇到了一个问题,至今才想明白,之前的问题帖在这里:https://home.eeworld.com.cn/my/link.php?url=https://bbs.eeworld.com.cn%2Fviewthread.php%3Ftid%3D378133%26amp%3Bpage%3D2%26amp%3Bextra%3Dpage%253D1%23pid1509935
遇到的问题我就不说了,那个帖子上有,原因嘛在讲一次:语句GPxSET.bit=1,作用是将管脚设置为输出并将管脚拉高,写GPxSET.bit=0对管脚是没有影响的;写GPxCLEAR.bit=1,作用是将管脚设置为输出并将管脚拉低,写GPxCLEAR.bit=0对管脚也是没有影响的。之前遇到的问题就因为没有注意这一点。在熄灭LED后,如果再次写GPxSET.bit =0则无法再次点亮LED(反转寄存器操作语句GPxTOGGLE.bit=1)除外,而使用GPxCLEAR.bit=1语句则可以很好地再次点亮LED
因此我认为在C2000launchpad开发板上进行点亮LED的实验时,最好使用语句清除寄存器语句GPxTOGGLE.bit=1

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章