GPIO-LED

一:概述

  GPIO通用输入输出,说得简单点就是控制管脚电平的高低来控制外围器件,单片机差不多就是专门做这个事的。单片机很简单只需要在管脚相应的寄储器写入0或1就行了。ARM要复杂那么一点点,这是因为ARM大部分的管脚都不只一个功能,所以要做个选择也就是要配置相应的寄储器,只要把相应的寄储器配置好后就和单片机一样的简单。

二:相关寄储器

  说明:我的44b0板子三个LED灯是接在GPC1,GPC2,GPC3上。

  PCONC控制器,两位决定一个管脚,一个管脚就有四个功能。

  PDATC数据器,当在PCONC里面把管脚配置为输出时,在这里写1,0就控制相应的管脚输出高低电平。

  PUPC上接电阻器,关于上接电阻电门有文章在讲。一句话来讲就是提高管脚的驱动能力。

三:示例程序:

void Port_Init(void)
{
 //PORT C GROUP
 
 rPDATC = 0x0000;
 rPCONC = 0xfff5ff55;//将GPC1-3配置为输出功能 
}

流水灯程序:

void Led_Display(int LedStatus)
{
 if((LedStatus&0x01)==0x01)  //PC1状态设置
  rPDATC=rPDATC&0xfffD;       //LED0熄灭
 else
  rPDATC=rPDATC|0x02;         //LED0点亮
 
 if((LedStatus&0x02)==0x02)  //PC2状态设置
  rPDATC=rPDATC&0xfffB;
 else
  rPDATC=rPDATC|0x04;

 if((LedStatus&0x04)==0x04)  //PC3状态设置
  rPDATC=rPDATC&0xfff7;
 else
  rPDATC=rPDATC|0x08;  
 
}

【功能说明】LED来回闪烁显示
****************************************************************************/
void Led_Disp(void)
{
 Led_Display(0x04);  //LED点亮/熄灭状态设置
 Delay(3000);  //延时若干个100us
 Led_Display(0x02); 
 Delay(3000);  
 Led_Display(0x01); 
 Delay(3000);
}

你可能感兴趣的:(IO)