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。
本文来自论坛,点击查看完整帖子内容。