您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 第8讲-GPIO原理与配置方法
第8讲GPIO原理与配置方法STM32GPIO相关寄存器1STM32GPIO固件库函数配置方法2实例讲解:跑马灯,按键,蜂鸣器3广州星翼电子官方淘宝店:技术支持论坛:《原子教你玩STM32》系列视频技术支持论坛:开源电子网官方微博:“正点原子”微博网址淘宝店铺:GPIO8种模式3个最大输出速度广州星翼电子官方淘宝店:技术支持论坛:《原子教你玩STM32》系列视频-输入浮空-输入下拉-输入上拉-模拟输入-开漏输出-推挽式输出-推挽式复用功能-开漏复用功能-2MHz-10MHz-50MHzGPIO基本结构广州星翼电子官方淘宝店:技术支持论坛:《原子教你玩STM32》系列视频GPIO输入输出配置相关寄存器寄存器配置在《STM32中文参考手册V10》的8.2节有详细讲解广州星翼电子官方淘宝店:技术支持论坛:《原子教你玩STM32》系列视频-GPIOx_CRL:端口配置低寄存器-GPIOx_CRH:端口配置高寄存器-GPIOx_IDR:端口输入寄存器-GPIOx_ODR:端口输出寄存器-GPIOx_BSRR:端口位设置/清除寄存器-GPIOx_BRR:端口位清除寄存器-GPIOx_LCKR:端口配置锁存寄存器广州星翼电子官方淘宝店:技术支持论坛:《原子教你玩STM32》系列视频广州星翼电子官方淘宝店:技术支持论坛:《原子教你玩STM32》系列视频广州星翼电子官方淘宝店:技术支持论坛:《原子教你玩STM32》系列视频广州星翼电子官方淘宝店:技术支持论坛:《原子教你玩STM32》系列视频广州星翼电子官方淘宝店:技术支持论坛:《原子教你玩STM32》系列视频广州星翼电子官方淘宝店:技术支持论坛:《原子教你玩STM32》系列视频广州星翼电子官方淘宝店:技术支持论坛:《原子教你玩STM32》系列视频通过跑马灯实例测试寄存器用法!!!!广州星翼电子官方淘宝店:技术支持论坛:《原子教你玩STM32》系列视频跑马灯硬件连接广州星翼电子官方淘宝店:技术支持论坛:《原子教你玩STM32》系列视频寄存器配置方式改写工程模板代码:intmain(void){delay_init();RCC-APB2ENR|=13;//使能PORTB时钟RCC-APB2ENR|=16;//使能PORTE时钟GPIOB-CRL&=0XFF0FFFFF;GPIOB-CRL|=0X00300000;//PB.5推挽输出GPIOB-ODR|=15;//PB.5输出高GPIOE-CRL&=0XFF0FFFFF;GPIOE-CRL|=0X00300000;//PE.5推挽输出GPIOE-ODR|=15;//PE.5输出高while(1){GPIOB-ODR|=15;//PB.5输出高GPIOE-ODR&=~(15);//PE.5输出低delay_ms(500);GPIOB-ODR&=~(15);//PB.5输出低GPIOE-ODR|=15;//PE.5输出高delay_ms(500);}}所有GPIO都挂载在APB2下面广州星翼电子官方淘宝店:技术支持论坛:《原子教你玩STM32》系列视频函数分布文件:-stm32f10x_gpio.c-stm32f10x_gpio.hGPIO库函数配置方法GPIO输入输出配置重要函数:voidGPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct);uint8_tGPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);uint16_tGPIO_ReadInputData(GPIO_TypeDef*GPIOx);uint8_tGPIO_ReadOutputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);uint16_tGPIO_ReadOutputData(GPIO_TypeDef*GPIOx);voidGPIO_SetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);voidGPIO_ResetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);voidGPIO_WriteBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,BitActionBitVal);voidGPIO_Write(GPIO_TypeDef*GPIOx,uint16_tPortVal);voidGPIO_PinLockConfig(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);广州星翼电子官方淘宝店:技术支持论坛:《原子教你玩STM32》系列视频函数原型:voidGPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct);作用:初始化GPIO的模式和速度,也就是设置相应的GPIO寄存器的CRH和CRL值。第一个输入参数是GPIO_TypeDef类型指针变量,确定是哪个GPIO,取值范围:GPIOA,GPIOB,GPIOC,GPIOD,GPIOE,GPIOF,GPIOG第二个参数是GPIO_InitTypeDef类型指针变量,确定GPIOx的对应的引脚以及引脚的模式和输出最大速度。typedefstruct{uint16_tGPIO_Pin;GPIOSpeed_TypeDefGPIO_Speed;GPIOMode_TypeDefGPIO_Mode;}GPIO_InitTypeDef;GPIO_Init()函数:广州星翼电子官方淘宝店:技术支持论坛:《原子教你玩STM32》系列视频1)第一个参数GPIO_Pin确定初始化那些管脚,取值范围为:GPIO_Pin_0~GPIO_Pin_15以及GPIO_Pin_All2)第二个参数GPIO_Speed确定初始化的IO的最大输出速度,其取值范围为枚举类型GPIOSpeed_TypeDef的枚举值:typedefenum{GPIO_Speed_10MHz=1,GPIO_Speed_2MHz,GPIO_Speed_50MHz}GPIOSpeed_TypeDef;3)第三个参数GPIO_Mode;确定初始化的IO的输入输出模式,其取值范围为枚举类型GPIOMode_TypeDef的枚举值:typedefenum{GPIO_Mode_AIN=0x0,//模拟输入GPIO_Mode_IN_FLOATING=0x04,//浮空输入GPIO_Mode_IPD=0x28,//下拉输入GPIO_Mode_IPU=0x48,//上拉输入GPIO_Mode_Out_OD=0x14,//开漏输出GPIO_Mode_Out_PP=0x10,//通用推挽输出GPIO_Mode_AF_OD=0x1C,//复用开漏输出GPIO_Mode_AF_PP=0x18//复用推挽}GPIOMode_TypeDef;广州星翼电子官方淘宝店:技术支持论坛:《原子教你玩STM32》系列视频函数使用范例:GPIO_InitTypeDefGPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//PB.5端口配置GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//速度50MHzGPIO_Init(GPIOB,&GPIO_InitStructure);//根据设定参数配置GPIOB.5广州星翼电子官方淘宝店:技术支持论坛:《原子教你玩STM32》系列视频函数原型:uint8_tGPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);作用:读取对应的GPIO的输入值。也就是读取IDR寄存器的值。使用范例:GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_5);//读取GPIOE.5管脚的输入值函数GPIO_ReadInputDataBit():函数原型:uint16_tGPIO_ReadInputData(GPIO_TypeDef*GPIOx);函数GPIO_ReadInputData()和GPIO_ReadInputDataBit()作用类似,不同的是GPIO_ReadInputData()用来读取一组(GPIOA~GPIOG)所有IO口(16个)的输入值。范例:GPIO_ReadInputData(GPIOE);//读取GPIOE所有IO输入值函数GPIO_ReadInputData():广州星翼电子官方淘宝店:技术支持论坛:《原子教你玩STM32》系列视频读取IO口输出值,也就是读取寄存器ODR的值。范例:GPIO_ReadOutputDataBit(GPIOE,GPIO_Pin_5);//读取GPIOE.5的输出值GPIO_ReadOutputData(GPIOE);//读取GPIOE所有IO输出值函数GPIO_ReadOutputDataBit()&GPIO_ReadOutputData()设置IO输出高或者低,也就是设置寄存器BSRR,BRR的值范例:GPIO_SetBits(GPIOE,GPIO_Pin_5)//GPIOE.5输出高GPIO_ResetBits(GPIOE,GPIO_Pin_5);//GPIOE.5输出低函数GPIO_SetBits()&GPIO_ResetBits()广州星翼电子官方淘宝店:技术支持论坛:《原子教你玩STM32》系列视频库函数实现实验1跑马灯实例:intmain(void){GPIO_InitTypeDefGPIO_InitSt
本文标题:第8讲-GPIO原理与配置方法
链接地址:https://www.777doc.com/doc-4603976 .html