最新STM32中使用GPIO的总结(超强)

上传人:cl****1 文档编号:479577681 上传时间:2023-11-01 格式:DOCX 页数:14 大小:26.57KB
返回 下载 相关 举报
最新STM32中使用GPIO的总结(超强)_第1页
第1页 / 共14页
最新STM32中使用GPIO的总结(超强)_第2页
第2页 / 共14页
最新STM32中使用GPIO的总结(超强)_第3页
第3页 / 共14页
最新STM32中使用GPIO的总结(超强)_第4页
第4页 / 共14页
最新STM32中使用GPIO的总结(超强)_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《最新STM32中使用GPIO的总结(超强)》由会员分享,可在线阅读,更多相关《最新STM32中使用GPIO的总结(超强)(14页珍藏版)》请在金锄头文库上搜索。

1、STM32中使用GPIO的总结(超强)STM32GPIO使用操作步骤:1. 使能GPIO对应的外设时钟例如:/使能GPIOAGPIOBGPIOC对应的外设时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPI0B|RCC_APB2Periph_GPI0C,ENABLE);声明一个GPIOnitStructure结构体例如:GPIO_lnitTypeDefGPIOnitStructure;选择待设置的GPIO管脚例如:/*选择待设置的GPIO第7、8、9管脚位,中间加“”符号7GPIO_InitStructure.GPIO

2、_Pin=GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;设置选中GPIO管脚的速率例如:/*设置选中GPIO管脚的速率为最高速率2MHz*/GPIOnitStructure.GPIO_Speed=GPIO_Speed_2MHz;/最高速率2MHz设置选中GPIO管脚的模式例如:/*设置选中GPIO管脚的模式为开漏输出模式*/GPIOnitStructure.GPIO_Mode=GPIO_Mode_Out_OD;/开漏输出模式根据GPIOnitStructure中指定的参数初始化外设GPIOXGPIOC*/例如:/*根据GPIO_InitStructure中指定的参数初始化外

3、设GPIO_lnit(GPIOC,&GPIO_lnitStructure);2. 其他应用例:将端口GPIOA的第10、15脚置1(高电平)GPIO_SetBits(GPIOA,GPIO_Pin_10|GPIO_Pin_15);例:将端口GPIOA的第10、15脚置0(低电平)GPIO_ResetBits(GPIOA,GPIO_Pin_10|GPIO_Pin_15);GPIO寄存器:寄存器描述CRL端口配置低寄存器CRH端口配置咼寄存器IDR端口输入数据寄存器ODR端口输出数据奇存器BSRR端口位设置/复位寄存器BRR端口位复位寄存器LCKR端口配置锁疋奇存器EVCR事件控制寄存器MAPR复用

4、重映射和调试I/O配置寄存器EXTICR外部中断线路0-15配置寄存器函数名描述GPIODeInit将外设GPIOx寄存器重设为缺省值GPIO_AFIODelnit将复用功能(重映射事件控制和EXTI设置)重设为缺省值缺省值填入GPIO_ReadlnputDataBit读取指定端口管脚的输入GPIOnit寄存器GPIOStructInit根据GPIOnitStruct中指定的参数初始化外设GPIOx把GPIOInitStruct中的每一个参数按GPIO_ReadInputData读取指定的GPIO端口输入GPIO_ReadOutputDataBitGPIO_ReadOutputDataGPIO

5、_SetBitsGPIO_ResetBitsGPIO_WriteBitGPIO_WriteGPIO_PinLockConfigGPIO_EventOutputConfigGPIO_EventOutputCmdGPIO_PinRemapConfigGPIO_EXTILineConfig读取指定端口管脚的输出读取指定的GPIO端口输出设置指定的数据端口位清除指定的数据端口位设置或者清除指定的数据端口位向指定GPIO数据端口写入数据锁定GPIO管脚设置寄存器选择GPIO管脚用作事件输出使能或者失能事件输出改变指定管脚的映射选择GPIO管脚用作外部中断线路库函数:函数GPIO_DeInit功能描述:将

6、外设GPIOx寄存器重设为缺省值例:GPIO_DeInit(GPIOA);函数GPIO_AFIODeInit功能描述:将复用功能(重映射事件控制和EXTI设置)重设为缺省值例:GPIO_AFIODeInit();函数GPIOnit功能描述:根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器例:GPIO_lnitTypeDefGPIOnitStructure;GPIOnitStructure.GPIO_Pin=GPIO_Pin_AII;GPIOnitStructure.GPIO_Speed=GPIO_Speed_1OMHz;GPIOnitStructure.GPIO_Mod

7、e=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA,&GPIO_lnitStructure);GPIOnitTypeDefstructureGPIOnitTypeDef定义于文件“stm32f10x_gpio.h:typedefstructu16GPIO_Pin;GPIOSpeed_TypeDefGPIO_Speed;GPIOMode_TypeDefGPIO_Mode;GPIOnitTypeDef;GPIO_Pin该参数选择待设置的GPIO管脚,使用操作符可以一次选中多个管脚。可以使用下表中的任意组合GPIO_Pin_None:GPIO_Pin_x:无管脚被选中选中

8、管脚x(0-15)GPIO_SpeedGPIO_SpeedGPIO_Speed_10MHzGPIO_Speed_2MHzGPIO_Speed_50MHzGPIO_ModeGPIO_Mode:GPIO_Mode_AIN:GPIO_Mode_IN_FLOATINGGPIO_Mode_IPD:GPIO_Mode_IPU:GPIO_Mode_Out_OD:GPIO_Mode_Out_PP:GPIO_Mode_AF_OD:GPIOModeAFPP:用以设置选中管脚的速率最高输出速率10MHz最高输出速率2MHz最高输出速率50MHz用以设置选中管脚的工作状态模拟输入浮空输入下拉输入上拉输入开漏输出推挽输

9、出复用开漏输出复用推挽输出函数GPIO_Structlnit功能描述:把GPIO_InitStruct中的每一个参数按缺省值填入例:GPIO_lnitTypeDefGPIOnitStructure;GPIO_StructInit(&GPIOnitStructure);GPIO_Pin:GPIO_Pin_AIIGPIO_SpeedGPIO_Speed_2MHzGPIO_Mode:GPIO_Mode_IN_FLOATING函数GPIO_ReadInputDataBit功能描述:读取指定端口管脚的输入例:u8ReadValue;ReadValue=GPIO_ReadInputDataBit(GPIO

10、B,GPIO_Pin_7);函数GPIO_ReadInputData功能描述:读取指定的GPIO端口输入例:u16ReadValue;ReadValue=GPIO_ReadInputData(GPIOC);函数GPIO_ReadOutputDataBit功能描述:读取指定端口管脚的输出例:u8ReadValue;ReadValue=GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_7);函数GPIO_ReadOutputData功能描述:读取指定的GPIO端口输出例:u16ReadValue;ReadValue=GPIO_ReadOutputData(GPIOC);函

11、数GPIO_SetBits功能描述:置位指定的数据端口位例:将端口GPIOA的第10、15脚置1(高电平)GPIO_SetBits(GPIOA,GPIO_Pin_10|GPIO_Pin_15);函数GPIO_ResetBits功能描述:清除指定的数据端口位例:将端口GPIOA的第10、15脚置0(低电平)GPIO_ResetBits(GPIOA,GPIO_Pin_10|GPIO_Pin_15);函数GPIO_WriteBit功能描述:设置或者清除指定的数据端口位例:GPIO_WriteBit(GPIOA,GPIO_Pin_15,Bit_SET);函数GPIO_Write功能描述:向指定GPIO

12、数据端口写入数据例:函数GPIO_PinLockConfig功能描述:锁定GPIO管脚设置寄存器例:GPIO_PinLockConfig(GPIOA,GPIO_Pin_0|GPIO_Pin_1);函数GPIO_EventOutputConfig功能描述:选择GPIO管脚用作事件输出例:GPIO_EventOutputConfig(GPIO_PortSourceGPIOE,GPIO_PinSource5);GPIO_PortSourceGPIO_PortSource用以选择用作事件输出的GPIO端口。函数GPIO_EventOutputCmd功能描述:使能或者失能事件输出例:GPIO_Event

13、OutputConfig(GPIO_PortSourceGPIOC,GPIO_PinSource6);GPIO_EventOutputCmd(ENABLE);函数GPIO_PinRemapConfig功能描述:改变指定管脚的映射例:GPIO_PinRemapConfig(GPIO_Remap2C1,ENABLE);GPIO概述1、共有8种模式,可以通过编程选择:1. 浮空输入带上拉输入2. 带下拉输入模拟输入3. 开漏输出(此模式可实现hotpower说的真双向IO)推挽输出4. 复用功能的推挽输出复用功能的开漏输出模式7和模式8需根据具体的复用功能决定。2、专门的寄存器(GPIOx_BSRR

14、口GPIOx_BRF实现对GPI0口的原子操作,即回避了设置或清除I/O端口时的“读-修改-写”操作,使得设置或清除I/O端口的操作不会被中断处理打断而造成误动作。3、每个GPI0口都可以作为外部中断的输入,便于系统灵活设计。4、I/O口的输出模式下,有3种输出速度可选(2MHz10MHz和50MHz,这有利于噪声控制。这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路)。通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。高频的驱

15、动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。4.1各种借口的措施:4.1.1对于串口,假如最大波特率只需115.2k,那么用2M的GPIO的引脚速度就够了,既省电也噪声小。4.1.2对于I2C接口,假如使用400k波特率,若想把余量留大些,那么用2M的GPIO的引脚速度或许不够,这时可以选用10M的GPIO引脚速度。4.1.3对于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引脚速度显然不够了,需要选用50M的GPIO的引脚速度。4.2GPIO口设为输入时,输出驱动电路与端口是断开,所以输出速度配置无意义。4.3在复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模式。4.4所有端口都有外部中断能力。为了使用外部中断线,端口必须配置成输入模式。4.5GPIO口的配置具有上锁功能,当配置好GPIO口后,可以通过程序锁

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号