微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > GPIO之LED实现

GPIO之LED实现

时间:10-02 整理:3721RD 点击:

一:概述

  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);
}



上一篇:gpio模拟I2C
下一篇:怎样做好一名大神

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top