GPIO概述

GPIO寄存器概述

       GPIO作为STM32F103VET6中最基础的功能模块,分布在GPIOA~GPIOE的五个端口组中,每个小组有16个引脚,每个GPIO引脚都可以用作外部中断源的输入,每个GPIO引脚可配置为8种模式,不同引脚有对应的复用功能、复用功能重映射等功能。

控制GPIO的功能寄存器如下图所示:


图1-1  CPIO寄存器描述

将上图所示7种寄存器可以归纳为4类,分别为:

1.        配置寄存器:选定GPIO的特性功能,配置为不同模式的输入输出口;

           GPIOx_CRH(32位):配置GPIOx端口高8位引脚模式;

           GPIOx_CRL(32位):配置GPIOx端口低8位引脚模式;

           每个引脚的模式由寄存器的4个位控制,2位配置引脚为输出或输出,2位配置引脚输出输出模式。

           GPIO的输入输出模式总共有8中,包括4中输入模式,4中输出模式:

1)        4中输入模式

                        i.             上拉输入:配置引脚为高电平,读出引脚数据为1;

                      ii.             下拉输入:配置引脚为低电平,读出引脚数据为0;

                     iii.             浮空输入:引脚电平不固定,输入阻抗大,一般用于标准的通信协如I2C、USART的接收端。

                              /*配置PA9、PA10为串口功能引脚

                               GPIO_InitTypeDef  GPIO_InitStructure;

                               GPIO_InitStructure.GPIO_Pin =GPIO_Pin_9;

                               GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;

                               GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

                               GPIO_Init(GPIOA,&GPIO_InitStructure);

                               GPIO_InitStructure.GPIO_Pin =GPIO_Pin_10;

                               GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//USART-RX

                               GPIO_Init(GPIOA,&GPIO_InitStructure);

                     iv.             模拟输入:将电压信号传送到片上外设,如传送至ADC模块进行电压信号采样。

                                GPIO_InitTypeDef GPIO_InitStructure;

                                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_ADC1,ENABLE);

                                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;  //ADC in

                                 GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_0;

                                 GPIO_Init(GPIOC,&GPIO_InitStructure);

2)        4种输出模式

                        i.             推挽输出:输出高/低3.3/0伏电平。

                      ii.             开漏输出:无法直接输出高电平,正常使用时在外部接上一个上拉电阻,由上拉电阻提供高电平,一般应用在电平不匹配的场合,如由上拉电阻和电源向外输出5V的电平。

                     iii.             复用推挽输出:GPIO复用功能时,如USART的输出:

                                     GPIO_InitTypeDef  GPIO_InitStructure;

                                    GPIO_InitStructure.GPIO_Pin =GPIO_Pin_9;

                                    GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;

                                    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //USART-TX

                                    GPIO_Init(GPIOA,&GPIO_InitStructure);

                                    GPIO_InitStructure.GPIO_Pin =GPIO_Pin_10;

                                    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

                                    GPIO_Init(GPIOA,&GPIO_InitStructure);

                     iv.             复用开漏:“线与”特性,很多歌开口模式引脚连接在一起时,只有当所有引脚都输出高阻态,才有上拉电阻提供搞定平,否则输出低电平0V。

2.        数据寄存器:保存了GPIO的输入电平和输出电平;

            GPIOx_IDR:对应IO口状态读入;

            GPIOx_ODR:对应IO状态读入和写出;

3.        位控制寄存器:控制某个引脚为高/低电平;

            GPIOx_BSRR:控制引脚输出,一个引脚的输出和输出由两个位来控制,BRY位用于写1清零使引脚输出低电平,Bsy位用于写1置1使引脚输出高电平。

            GPIOx_BRR:清除某引脚位。

4.        锁定寄存器:固定某引脚功能,不能修改其配置。

            GPIOx_LCKR:锁定配置功能。

 

GPIO配置实例如下

1)        GPIOA->CRL&=0X000FFFFF;   //清除PA5、PA6、PA7原来的设置,同时也不影响其它位的设置。端口的复位值为0X44444444,复位值其实就是配置端口为浮空输入模式。

2)        GPIOA->CRL|=0XBBB00000;//配置PA5、PA6、PA7为复用推挽输出,比较常用的配置为0X4表示模拟输入模式(ADC用)、0X3表示推挽输出模式(做输出口用, 50M速率)、0X8表示上/下拉输入模式(做输入口用)、0XB表示复用推挽输出(使用IO口的第二功能,50M速率)。

3)         GPIOA->ODR|=0X7<<5;//配置PA5、PA6、PA7输出为高电平

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值