C2000launchpad学习帖之点亮LED
[复制链接]
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; } } }
遇到的问题我就不说了,那个帖子上有,原因嘛在讲一次:语句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。
|