ARM9 S3C2440—GPIO初始化设置

发布者:清新风华最新更新时间:2015-09-07 来源: eefocus关键字:ARM9  S3C2440  GPIO  初始化设置 手机看文章 扫描二维码
随时随地手机看文章
用于外部输入输出的GPIO配置主要有以下几步:

 

1.GPxCON的配置。

    每个IO引脚的功能都是复用的,由GPxCON决定引脚的功能是输出(01)输入(00)还是其他功能(外部中断、串口等等),两个二进制位表示。

 

2.GPxUP的配置。

    IO口是否开启上拉电阻功能,0表示使用上拉电阻,1表示不使用,上拉电阻的用处是将引脚通过电阻与电源连接,使引脚电平为高电平而不是悬空,芯片引脚悬空容易受外部的干扰,导致错误输入输出。一般设置不使用上拉电阻,即rGPxUP=0xffffffff,每个IO口用1位二进制表示。

 

3.GPxDAT的设置。

每一位为相应引脚的输出电平或引脚的状态输入电平,一般在初始化中对这个寄存器不设置,但是对IO初始状态有要求的要设置,该寄存器默认值为未定义,如果想LED灯在开启时全亮,那么就应该设置 rGPxDAT=0x0(一般引脚输出低电平,LED亮),每个IO口用一位二进制表示。

 

    假设配置四个LED灯,四个LED灯分别接GPB5-GPB8,LED灯初始化程序如下:

void Led_port_init(void)

{

   

   rGPBCON &= ~((3<<10)|(3<<12)|(3<<14)|(3<<16));

   

   rGPBCON |= (1<<10)|(1<<12)|(1<<14)|(1<<16);

   

   rGPBUP=0xffffffff;//B组IO上拉电阻全部不使用

 

   rGPBDAT=0x0; //初始化B组IO口输出0,使LED灯亮

}

 

“rGPBCON &= ~((3<<10)|(3<<12)|(3<<14)|(3<<16))”行的作用是将GPB5-GPB8所在的功能配置位清零,

“rGPBCON |= (1<<10)|(1<<12)|(1<<14)|(1<<16)”行才给相应位赋值01,输出功能。这两句的意思打个比方,要向一个桶里装麦子,先要把这个桶里的其他东西清空,把别的东西倒出来,当然了,也许这个桶本来就是空的,但是为了保险,还是先倒一次桶,然后才再把麦子装进去。对其他寄存器的配置也是同样的道理,比如EINT0中断触发模式

       rEXTINT0 &= ~(7|(7<<8));

       rEXTINT0 |= (0|(0<<8));//低电平触发外部中断

   四位作为一个控制符的话就是“15<<多少位”,以此类推。另外为什么不直接写成“rGPBCON =0xfffc57ff”更省事呢,一方面是因为这需要先写出二进制,再转化为16进制,32位的二进制转化起来还是比较麻烦的,稍不注意就有差错,再者这样写也不便于程序的理解,程序的可读性变差。

   0xfffc57ff的二进制为:1111 1111 1111 11 01 0101 01 11 1111 1111

   以上就是LED灯的GPIO口初始化配置,下次用到的话只需要根据IO口的不同和IO口功能的不同稍作修改就能用。

    为了程序的可读性,一般都把相应的数据操作宏定义为直观的英文,如“#define LED1_ON   ~(1<<5)”用LED1_ON表示灯1亮。

 

 

void Led_port_init(void);

  

#define LED1_ON   ~(1<<5)

#define LED2_ON   ~(1<<6)

#define LED3_ON   ~(1<<7)

#define LED4_ON   ~(1<<8)

 

#define LED1_OFF   (1<<5)

#define LED2_OFF   (1<<6)

#define LED3_OFF   (1<<7)

#define LED4_OFF   (1<<8)

 

void Main(void)

{

    int i;

    Led_port_init();

    

    for(i=0;i<100;i++)

    {

    

     rGPBDAT&=(LED1_ON)&(LED2_ON)&(LED3_ON)&(LED4_ON);

    

     delay(10000);

    

    

    rGPBDAT |=(LED1_OFF)|(LED2_OFF)|(LED3_OFF)|(LED4_OFF);

    

     delay(10000);

    }

}

关键字:ARM9  S3C2440  GPIO  初始化设置 引用地址:ARM9 S3C2440—GPIO初始化设置

上一篇:变频空调风机中永磁同步电机矢量控制方案
下一篇:ARM9 S3C2440—中断和定时器的初始化配置

推荐阅读最新更新时间:2024-03-16 14:30

stm32 gpio口的库函数配置
库函数的配置方法 1.例程 GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure); 2.GPIO_InitTypeDef GPIO_InitS
[单片机]
STM32F407 PC13-PC15作为GPIO的方法
问题解决了,PC13-PC15都可以作为GPIO使用,而且都可以作为输出,手册中说只能有一个作为输出是因为在三个PIN总的输出电流不能超过4mA,如果输出电流很小,则都可以作为输出。VBAT可以不和VDD连接在一起,VDD上电后,内部电路会自动切换到VDD上。代码如下: GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC , ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR , ENABLE); PWR_BackupAccessCmd(ENABLE); RCC_LSECo
[单片机]
S3C2440开发板的学习使用(一)----串口的安装
串口连接 1、板上有USB转UART芯片PL2303HX,可以通过MINI USB口,使用一根USB转MINI USB线连接到笔记本上。 2、Windows下安装USB转串口驱动程序PL2303_Prolific_DriverInstaller_v1.5.0.exe。 3、下载串口工具软件SecureCRT,设置波特率和COM口,即可通过串口读写。 UART简介:http://blog.csdn.net/GQ1900/article/details/51885259 UART和RS232、RS485的关系:http://blog.csdn.net/chun_1959/article/details/450545
[单片机]
STM32中的GPIO_Init()函数的分析
学习STM32时,首先要熟悉流水灯例程,在这里就来分析流水灯中的GPIO_Init()函数 例如:流水灯例程中使用的端口是macLED1_GPIO_PORT=GPIOB, 控制的引脚是GPIO_Pin_0, 引脚的模式是 GPIO_Mode_Out_PP(通用推挽输出), 引脚的速率是GPIO_Speed_50MHz, 用到的寄存器是CRL 将上述的引脚、模式、速率换算成32位的16进制,分别是: 1) 控制的引脚是GPIO_Pin_0 换算成32位的16进制是:0x0000 0001 2) 引脚的模式是 GPIO_Mode_Out_PP(通用推挽输出) 换算成32位的16进制是:0x00
[单片机]
STM32中的<font color='red'>GPIO</font>_Init()函数的分析
TI - MCU - MSP430使用指南12 -> GPIO
GPIO即通用输入输出接口,是MCU最基本的功能,可以控制I/O口的高低电平,输入输出或映射到其他模块等功能。 如下图所示,为MSP430FR2355芯片的引脚图: 在图中,每个引脚后标注的则是每个引脚具备的复用功能,GPIO是基本功能,除去电源,地,时钟等引脚,每个引脚都可作为通用IO口使用,那么如何按照自己的要求配置每个引脚的功能呢? 下面就描述下GPIO引脚相关的寄存器(MSP430FR2xx/FR4xx): 注:并非每个MSP430 MCU都包含下属所有的寄存器,根据MCU功能的复杂性决定,具体包含的寄存器名称和数量,请查看每个芯片的datasheet和user’s guide。 首先先整体看一下GP
[单片机]
TI - MCU - MSP430使用指南12 -> <font color='red'>GPIO</font>
基于ARM9的1553B与CAN总线转换卡的设计与实现
1 引 言   20世纪70年代诞生的1553B总线是一种主从式多冗余度总线对总线硬件有严格的规定,可靠性和实时性好,传输速率达到1 Mb/s,对于大多数的应用都能满足,通过几十年的发展,已经成为当今军用电子总线的首选。而由德国BOSCH公司开发的CAN总线,采用多主方式,最高速率为1 Mb/s,由于其在汽车电子系统中的卓越表现,现在受到了越来越多的用户的关注和认可。这两种总线都是传输速率高、可靠性高、实时性能好的总线,但是他们都存在一定的不足。1553B总线的任一次数据传输都是由主节点发出命令开始,从节点接到命令后解析并执行,同时把相应状态反馈给主节点,这使得网络上的数据传输率大大降低,并使主节点控制器非常繁忙,而且在下端出现
[单片机]
基于<font color='red'>ARM9</font>的1553B与CAN总线转换卡的设计与实现
LPC2103学习之GPIO
LPC2103关于引脚的寄存器有两个PINSEL0与PINSEL1,都是32位宽度。 PINSEL0与PINSEL1寄存器的每两位控制一个引脚的功能,则一个脚最多有4种功能。其中PINSEL0控制着P0.0到P0.15的引脚。PINSEL1控制着P0.16到P0.31的引脚。 PINSEL寄存器的设置只需两个步骤。一找到要设置的引脚。二是选择引脚的功能。 如图所示: 下面举例说明 1.设置P0.0为GPIO功能 PINSEL0 = 0x00 /*设置P0.0到P0.15都为GPIO*/ 2.设置P0.0为TxD0功能 PINSEL0 = (PINSEL0 & 0xFFFFFFFC) | 0x01;
[单片机]
LPC2103学习之<font color='red'>GPIO</font>
基于ARM9 AT91RM9200T的嵌入式网络接口
   1 引言   当今时代设备网络化是当今科技发展的趋势。如何使用嵌入式系统将设备的远程控制、数据的远程传输数据转发到网络上呢?嵌入式网关使用嵌入式Linux操作系统,数据存储芯片SDRAM、FLASH,网络控制芯片DM9161等,实现网络通讯的传输方案便是基于这种思想而设计的。    2 硬件设计   本系统采用ATMEL公司生产的微处理器AT91RM9200T 。其处理速度可达200MIPS,同时它也具有USB、Earthnet、支持RS485的红外串口、IIC、SPI、SSC等丰富的片内资源。网口控制芯片DM9161, SDRAM和Flash接口。系统的硬件结构框架如图1所示。    2.1 AT91R
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved