课程

课程 讲师

GPIO工作原理

购买数
9
课时数
1
浏览数
3318
主讲人:
邵老师
有效期:
自购买之日起永久
免费
原价:¥10
分享

分享到:

手机查看

一、GPIO基本结构、工作方式

       

        GPIO(General Purpose I/O Ports)意思为通用输入/输出端口,通俗地说,就是一些引脚,可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。

       STM32F103ZET6,一共有7组gpio口。每组IO口有16个IO,16X7 = 112,共有112个IO口,从GPIOA开始,一直到GPIOG结束。


       4种输入模式:

             浮空输入模式

            上拉输入模式

            下拉输入模式

            模拟输入模式

       4种输出模式:

            开漏输出模式

            开漏复用模式

            推挽式输出模式

            推挽式复用模式


二、GPIO寄存器说明


        每组GPIO端口的寄存器包括:

            两个32位配置寄存器(GPIOx_CRL ,GPIOx_CRH) ,

            两个32位数据寄存器 (GPIOx_IDR和GPIOx_ODR),

            一个32位置位/ 复位寄存器(GPIOx_BSRR),

            一个16位复位寄存器(GPIOx_BRR),

            一个32位锁定寄存器(GPIOx_LCKR)。

           每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问) 。

           每组IO口含下面7个寄存器。也就是7个寄存器,一共可以控制一组GPIO的16个IO口。


三、GPIO库函数介绍

       初始化函数 

        void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);


       读取输入电平函数:

       uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

       uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);


       读取输出电平函数:

       uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

       uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);


       设置输出电平函数:

       void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

       void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

       void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);

       void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);


四、GPIO位带操作

       将IO端口的地址扩展成一个32位的字地址,对32位的地址进行操作,这个是STM32允许的。STM32对所有的寄存器配置,都是对某个32位地址的操作,因此对某个IO端口进行操作,就是位带操作。

       把每个比特膨胀为一个32位的字,当访问这些字的时候就达到了访问比特的目的,比如说BSRR寄存器有32个位,那么可以映射到32个地址上,我们去访问(都-改-写)这32个地址就达到访问32个比特的目的。


五、GPIO引脚说明

       端口复用功能

       一些端口不仅仅可以做为通用IO口,还可以复用为一些外设引脚,比如STM32F407中,PA9,PA10可以复用为串口1的引脚。

       端口重映射功能

       把某些功能引脚映射到其他引脚。

讲师信息

邵老师

邵老师

粉丝:3
多年嵌入式开发经验,精通STM32/51单片机,扎实的C语言基本功
×

分享成功,快去个人中心查看吧~~~

祝您:学习愉快 !

确 定
×

加入我的看单

该课程需要加入我的看单后方可学习,确定加入?

确 定 取 消
关注官方微信