如何实现gpio口模式的配置?
发布网友
发布时间:2022-05-12 05:04
我来回答
共2个回答
热心网友
时间:2023-09-09 20:37
一、 STM32的输入输出管脚有下面8种(4输入 2输出 2复用输出)可能的配置:\x0d\x0a\x0d\x0a ① 浮空输入_IN_FLOATING\x0d\x0a\x0d\x0a ② 带上拉输入_IPU \x0d\x0a\x0d\x0a ③ 带下拉输入_IPD \x0d\x0a\x0d\x0a ④ 模拟输入_AIN\x0d\x0a\x0d\x0a ⑤ 开漏输出_OUT_OD \x0d\x0a\x0d\x0a ⑥ 推挽输出_OUT_PP\x0d\x0a\x0d\x0a ⑦ 复用功能的推挽输出_AF_PP\x0d\x0a\x0d\x0a ⑧ 复用功能的开漏输出_AF_OD\x0d\x0a\x0d\x0a 1.1 I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O口 的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路)。通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。\x0d\x0a\x0d\x0a 输出速度又称输出驱动电路的响应速度,可理解为:输出驱动电路的带宽,即一个驱动电路可以不失真地通过信号的最大频率。\x0d\x0a\x0d\x0a 如果一个信号的频率超过了驱动电路的响应速度,就有可能信号失真。如果信号频率为10MHz,而你配置了2MHz的带宽,则10MHz的方波很可能就变成了正弦波。就好比是公路的设计时速,汽车速度低于设计时速时,可以平稳地运行,如果超过设计时速就会颠簸,甚至翻车。\x0d\x0a\x0d\x0a 关键是: GPIO的引脚速度跟应用相匹配,速度配置越高,噪声越大,功耗越大。\x0d\x0a\x0d\x0a 带宽速度高的驱动器耗电大、噪声也大,带宽低的驱动器耗电小、噪声也小。使用合适的驱动器可以降低功耗和噪声。\x0d\x0a GPIO的引脚速度跟应用匹配(推荐10倍以上)。比如:\x0d\x0a\x0d\x0a 1.1.1 对于串口,假如最大波特率只需115.2k,那么用2M的GPIO的引脚速度就够了,既省电也噪声小。\x0d\x0a\x0d\x0a 1.1.2 对于I2C接口,假如使用400k波特率,若想把余量留大些,那么用2M的GPIO的引脚速度或许不够,这时可以选用10M的GPIO引脚速度。\x0d\x0a\x0d\x0a 1.1.3 对于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引脚速度显然不够了,需要选用50M的GPIO的引脚速度。\x0d\x0a\x0d\x0a 1.2 GPIO口设为输入时,输出驱动电路与端口是断开,所以输出速度配置无意义。\x0d\x0a\x0d\x0a 1.3 在复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模式。\x0d\x0a\x0d\x0a 1.4 所有端口都有外部中断能力。为了使用外部中断线,端口必须配置成输入模式。\x0d\x0a\x0d\x0a 1.5 GPIO口的配置具有上锁功能,当配置好GPIO口后,可以通过程序锁住配置组合,直到下次芯片复位才能解锁。\x0d\x0a\x0d\x0a二、GPIO的翻转速度指:输入/输出寄存器的0 ,1 值反映到外部引脚(APB2上)高低电平的速度.手册上指出GPIO最大翻转速度可达18MHz。通过简单的程序测试,用示波器观察到的翻转时间是综合的时间,包括取指令的时间、指令执行的时间、指令执行后信号传递到寄存器的时间(这其中可能经过很多环节,比如AHB、APB、总线仲裁等),最后才是信号从寄存器传输到引脚所经历的时间。如有上拉电阻,其阻值越大,RC延时越大,即逻辑电平转换的速度越慢,功耗越大。 \x0d\x0a\x0d\x0a三、在STM32中如何配置片内外设使用的IO端口\x0d\x0a\x0d\x0a 首先,一个外设经过 ①配置输入的时钟和 ②初始化后即被激活(开启);③如果使用该外设的输入输出管脚,则需要配置相应的GPIO端口(否则该外设对应的输入输出管脚可以做普通GPIO管脚使用);④再对外设进行详细配置。\x0d\x0a\x0d\x0a 对应到外设的输入输出功能有下述三种情况:\x0d\x0a\x0d\x0a ① 外设对应的管脚为输出:需要根据外围电路的配置选择对应的管脚为复用功能的推挽输出或复用功能的开漏输出。\x0d\x0a ② 外设对应的管脚为输入:则根据外围电路的配置可以选择浮空输入、带上拉输入或带下拉输入。\x0d\x0a ③ ADC对应的管脚:配置管脚为模拟输入。\x0d\x0a\x0d\x0a 如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的输出信号连接。将管脚配置成复用输出功能后,如果外设没有被激活,那么它的输出将不确定。\x0d\x0a\x0d\x0a四、 通用IO端口(GPIO)初始化\x0d\x0a\x0d\x0a 4.1 GPIO初始化\x0d\x0a\x0d\x0a 41.1 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | B | C, ENABLE):使能APB2总线外设时钟;\x0d\x0a\x0d\x0a 41.2 RCC_ APB2PeriphResetCmd (RCC_APB2Periph_GPIOA | B | C, DISABLE):释放GPIO复位。\x0d\x0a\x0d\x0a 4.2 置各个PIN端口(模拟输入_AIN、输入浮空_IN_FLOATING、输入上拉_IPU、输入下拉_IPD、开漏输出_OUT_OD、推挽式输出_OUT_PP、推挽式复用输出_AF_PP、开漏复用输出_AF_OD)。\x0d\x0a\x0d\x0a 4.3GPIO初始化完成。\x0d\x0a\x0d\x0a五、 的GPIO操作函数\x0d\x0a\x0d\x0auint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//读GPIO某一位的输入\x0d\x0a\x0d\x0auint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);//读GPIO的输入\x0d\x0a\x0d\x0auint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//读GPIO某一位的输出\x0d\x0a\x0d\x0auint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);//读GPIO的输出\x0d\x0a\x0d\x0avoid GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//将GPIO的某个位置位\x0d\x0a\x0d\x0avoid GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//将GPIO的某个位复位\x0d\x0a\x0d\x0avoid GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);//写GPIO的某个位\x0d\x0a\x0d\x0avoid GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);//写GPIO\x0d\x0a\x0d\x0a 六、管脚的复用功能 重映射\x0d\x0a\x0d\x0a1、复用功能:内置外设是与I/O口共用引出管脚(不同的功能对应同一管脚)\x0d\x0a\x0d\x0aSTM32 所有内置外设的外部引脚都是与标准GPIO引脚复用的,如果有多个复用功能模块对应同一个引脚,只能使能其中之一,其它模块保持非使能状态。\x0d\x0a\x0d\x0a2、重映射功能:复用功能的引出脚可以通过重映射,从不同的I/O管脚引出,即复用功 能的引出脚位是可通过程序改变到其他的引脚上!\x0d\x0a\x0d\x0a直接好处:PCB电路板的设计人员可以在需要的情况下,不必把某些信号在板上绕一大圈完成联接,方便了PCB的设计同时潜在地减少了信号的交叉干扰。\x0d\x0a\x0d\x0a如:USART1: 0: 没有重映像(TX/PA9,RX/PA10); 1: 重映像(TX/PB6,RX/PB7)。\x0d\x0a\x0d\x0a(参考AFIO_MAPR寄存器介绍)[0,1为一寄存器的bit值]\x0d\x0a\x0d\x0a【注】 下述复用功能的引出脚具有重映射功能:\x0d\x0a\x0d\x0a - 晶体振荡器的引脚在不接晶体时,可以作为普通I/O口\x0d\x0a\x0d\x0a - CAN模块; - JTAG调试接口;- 大部分定时器的引出接口; - 大部分USART引出接口\x0d\x0a\x0d\x0a - I2C1的引出接口; - SPI1的引出接口;\x0d\x0a\x0d\x0a举例:对于STM32F103VBT6,47引脚为PB10,它的复用功能是I2C2_SCL和 USART3_TX,表示在上电之后它的默认功能为PB10,而I2C2的SCL和USART3的TX为它的复用功能;另外在TIM2的引脚重映射后,TIM2_CH3也成为这个引脚的复用功能。\x0d\x0a\x0d\x0a(1)要使用STM32F103VBT6的47、48脚的USART3功能,则需要配置47脚为复用推挽输出或复用开漏输出,配置48脚为某种输入模式,同时使能USART3并保持I2C2的非使能状态。\x0d\x0a\x0d\x0a(2)使用STM32F103VBT6的47脚作为TIM2_CH3,则需要对TIM2进行重映射,然后再按复用功能的方式配置对应引脚。
热心网友
时间:2023-09-09 20:37
一、 STM32的输入输出管脚有下面8种(4输入 2输出 2复用输出)可能的配置:
① 浮空输入_IN_FLOATING
② 带上拉输入_IPU
③ 带下拉输入_IPD
④ 模拟输入_AIN
⑤ 开漏输出_OUT_OD
⑥ 推挽输出_OUT_PP
⑦ 复用功能的推挽输出_AF_PP
⑧ 复用功能的开漏输出_AF_OD
1.1 I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O口 的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路)。通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。
输出速度又称输出驱动电路的响应速度,可理解为:输出驱动电路的带宽,即一个驱动电路可以不失真地通过信号的最大频率。
如果一个信号的频率超过了驱动电路的响应速度,就有可能信号失真。如果信号频率为10MHz,而你配置了2MHz的带宽,则10MHz的方波很可能就变成了正弦波。就好比是公路的设计时速,汽车速度低于设计时速时,可以平稳地运行,如果超过设计时速就会颠簸,甚至翻车。
关键是: GPIO的引脚速度跟应用相匹配,速度配置越高,噪声越大,功耗越大。
带宽速度高的驱动器耗电大、噪声也大,带宽低的驱动器耗电小、噪声也小。使用合适的驱动器可以降低功耗和噪声。
GPIO的引脚速度跟应用匹配(推荐10倍以上)。比如:
1.1.1 对于串口,假如最大波特率只需115.2k,那么用2M的GPIO的引脚速度就够了,既省电也噪声小。
1.1.2 对于I2C接口,假如使用400k波特率,若想把余量留大些,那么用2M的GPIO的引脚速度或许不够,这时可以选用10M的GPIO引脚速度。
1.1.3 对于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引脚速度显然不够了,需要选用50M的GPIO的引脚速度。
1.2 GPIO口设为输入时,输出驱动电路与端口是断开,所以输出速度配置无意义。
1.3 在复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模式。
1.4 所有端口都有外部中断能力。为了使用外部中断线,端口必须配置成输入模式。
1.5 GPIO口的配置具有上锁功能,当配置好GPIO口后,可以通过程序锁住配置组合,直到下次芯片复位才能解锁。
二、GPIO的翻转速度指:输入/输出寄存器的0 ,1 值反映到外部引脚(APB2上)高低电平的速度.手册上指出GPIO最大翻转速度可达18MHz。通过简单的程序测试,用示波器观察到的翻转时间是综合的时间,包括取指令的时间、指令执行的时间、指令执行后信号传递到寄存器的时间(这其中可能经过很多环节,比如AHB、APB、总线仲裁等),最后才是信号从寄存器传输到引脚所经历的时间。如有上拉电阻,其阻值越大,RC延时越大,即逻辑电平转换的速度越慢,功耗越大。
三、在STM32中如何配置片内外设使用的IO端口
首先,一个外设经过 ①配置输入的时钟和 ②初始化后即被激活(开启);③如果使用该外设的输入输出管脚,则需要配置相应的GPIO端口(否则该外设对应的输入输出管脚可以做普通GPIO管脚使用);④再对外设进行详细配置。
对应到外设的输入输出功能有下述三种情况:
① 外设对应的管脚为输出:需要根据外围电路的配置选择对应的管脚为复用功能的推挽输出或复用功能的开漏输出。
② 外设对应的管脚为输入:则根据外围电路的配置可以选择浮空输入、带上拉输入或带下拉输入。
③ ADC对应的管脚:配置管脚为模拟输入。
如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的输出信号连接。将管脚配置成复用输出功能后,如果外设没有被激活,那么它的输出将不确定。
四、 通用IO端口(GPIO)初始化
4.1 GPIO初始化
41.1 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | B | C, ENABLE):使能APB2总线外设时钟;
41.2 RCC_ APB2PeriphResetCmd (RCC_APB2Periph_GPIOA | B | C, DISABLE):释放GPIO复位。
4.2 置各个PIN端口(模拟输入_AIN、输入浮空_IN_FLOATING、输入上拉_IPU、输入下拉_IPD、开漏输出_OUT_OD、推挽式输出_OUT_PP、推挽式复用输出_AF_PP、开漏复用输出_AF_OD)。
4.3GPIO初始化完成。
五、 的GPIO操作函数
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//读GPIO某一位的输入
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);//读GPIO的输入
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//读GPIO某一位的输出
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);//读GPIO的输出
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//将GPIO的某个位置位
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//将GPIO的某个位复位
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);//写GPIO的某个位
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);//写GPIO
六、管脚的复用功能 重映射
1、复用功能:内置外设是与I/O口共用引出管脚(不同的功能对应同一管脚)
STM32 所有内置外设的外部引脚都是与标准GPIO引脚复用的,如果有多个复用功能模块对应同一个引脚,只能使能其中之一,其它模块保持非使能状态。
2、重映射功能:复用功能的引出脚可以通过重映射,从不同的I/O管脚引出,即复用功 能的引出脚位是可通过程序改变到其他的引脚上!
直接好处:PCB电路板的设计人员可以在需要的情况下,不必把某些信号在板上绕一大圈完成联接,方便了PCB的设计同时潜在地减少了信号的交叉干扰。
如:USART1: 0: 没有重映像(TX/PA9,RX/PA10); 1: 重映像(TX/PB6,RX/PB7)。
(参考AFIO_MAPR寄存器介绍)[0,1为一寄存器的bit值]
【注】 下述复用功能的引出脚具有重映射功能:
- 晶体振荡器的引脚在不接晶体时,可以作为普通I/O口
- CAN模块; - JTAG调试接口;- 大部分定时器的引出接口; - 大部分USART引出接口
- I2C1的引出接口; - SPI1的引出接口;
举例:对于STM32F103VBT6,47引脚为PB10,它的复用功能是I2C2_SCL和 USART3_TX,表示在上电之后它的默认功能为PB10,而I2C2的SCL和USART3的TX为它的复用功能;另外在TIM2的引脚重映射后,TIM2_CH3也成为这个引脚的复用功能。
(1)要使用STM32F103VBT6的47、48脚的USART3功能,则需要配置47脚为复用推挽输出或复用开漏输出,配置48脚为某种输入模式,同时使能USART3并保持I2C2的非使能状态。
(2)使用STM32F103VBT6的47脚作为TIM2_CH3,则需要对TIM2进行重映射,然后再按复用功能的方式配置对应引脚。
gpio的一般配置步骤
GPIO的一般配置步骤如下:1. 连接GPIO:首先,需要将GPIO正确地连接到微控制器的相应引脚。2. 初始化GPIO:使用微控制器的API函数来初始化GPIO,设置其工作模式(如输入、输出、模拟等)和引脚速度。3. 设置GPIO为输出模式:如果需要将GPIO用作输出,需要将其设置为输出模式,并设置其输出值。4. 设置...
如何对光传输设备进行调试和维护?
对光传输设备进行调试和维护,需要掌握以下关键点:1. **熟悉设备性能**:深入了解OTN/DWDM等光传输产品的性能特点,确保能够熟练使用设备。2. **按规范操作**:依据产品说明书和维护手册进行调试和维护,确保操作步骤正确无误。3. **故障排查**:掌握常见故障现象及处理方法,能够迅速定位问题并进行修复。4. **性能监测**:定期监测设备性能指标,确保设备运行状态良好,及时发现并解决潜在问题。5. **专业培训**:参与相关培训,不断提升自身技能水平,以更好地应对各种挑战。通过以上措施,可以确保光传输设备的稳定运行,提升网络可靠性和智能…对光传输设备进行调试和维护需要掌握一定的专业知识和技术,包括光功率计、光谱分析仪等测试仪器的使用,以及对光传输系统的工作原理和性能指标的深入理解。深圳市光派通信技术有限公司提供专业的技术支持和服务,可为客户提供全面的光传输设备...
如何实现gpio口模式的配置?
一、 STM32的输入输出管脚有下面8种(4输入 2输出 2复用输出)可能的配置:\x0d\x0a\x0d\x0a ① 浮空输入_IN_FLOATING\x0d\x0a\x0d\x0a ② 带上拉输入_IPU \x0d\x0a\x0d\x0a ③ 带下拉输入_IPD \x0d\x0a\x0d\x0a ④ 模拟输入_AIN\x0d\x0a\x0d\x0a ⑤ 开漏输出_OUT_OD...
STM32CubeMx之GPIO设置(HAL库)
读取GPIO状态:HAL_GPIO_ReadPin。设置GPIO状态:HAL_GPIO_WritePin。GPIO引脚取反:HAL_GPIO_TogglePin。锁定GPIO状态:HAL_GPIO_LockPin。中断服务函数:HAL_GPIO_EXTI_Callback。总结,GPIO为STM32微控制器提供了灵活的输入输出控制能力,通过配置不同模式,实现多种功能,HAL库简化了GPIO操作,提高代码可...
【转】GPIO输入与输出设置
通常,GPIO输入主要通过以下三种方式之一进行配置:● 高阻抗 (Hi-Z,也称为浮动floating)● 上拉 (Pull-up,内部电阻连接到VCC)● 下拉 (Pull-down,内部电阻连接到地)当Input port被处在高阻抗的模式下,若没有外部讯号源进来的话,此时是无法确定port的状态(不能确定现在处在高电位或低电位...
如何实现一次对多GPIO进行配置?
GPIO_Init(GPIOA, &GPIO_InitStructure); /* 让选择引脚输出高电平*/ GPIO_SetBits(GPIOB, GPIO_Pin_0 | GPIO_Pin_1); }其中GPIO有多个模式,需要按照不同功能和使用来配置。这里LED灯需要输出,所以我设置为通用推挽。 本回答被网友采纳 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 1条折叠回...
STM32 微控制器寄存器探索(一):GPIO
首先,理解GPIO寄存器操作至关重要。通过配置特定寄存器地址,我们可以实现GPIO口的开关、模式设置等操作,例如,GPIOC-13口的周期性反转就是通过操作寄存器实现的。要实现这些,首先需要开启对应GPIO的时钟,然后初始化GPIO口,最后控制其状态。时钟控制通常在RCC_APB2ENR寄存器,位于0x40021000+0x18地址,通过...
...按键应如何连接?不同连接方式,配置gpio工作模式时应如何
(1)选择一个GPIO引脚用于连接按键。(2)将这个GPIO引脚的工作模式设置为输入模式。(3)为这个GPIO引脚配置上拉电阻或下拉电阻,以确保在按键未被按下时,GPIO引脚处于稳定状态。需要注意的是,配置GPIO工作模式时,应该根据按键连接方式选择适当的工作模式和上拉/下拉电阻配置,以确保按键的正常工作。
STM32外设GPIO的配置和应用
GPIO配置与功能GPIO,即通用输入输出,是通信和控制外设的重要组件。F407xx的GPIO结构包含输入钳位保护、上拉/下拉电阻、史密斯触发器、PMOS/NMOS结构、输出选择、寄存器及模拟外设/复用外设等部分。复位后,调试引脚如PA15、PA14、PA13和PB4/PB3会具有特定的上拉/下拉设置。GPIO工作模式多样,如浮空输入...
gpio接口是干什么的
3. 工作原理:当GPIO端口配置为输出模式时,微处理器可以通过向该端口写入特定值来控制外部设备。同样,当端口配置为输入模式时,微处理器可以从该端口读取数据或状态信息。这种双向通信能力使得GPIO接口在多种应用场景中都非常实用。总的来说,GPIO接口是一种通用输入输出接口,它为微处理器与外部设备之间...
gpio口清零怎么实现
1. 通过编程清零:大多数微处理器和微控制器都可以通过编程来配置和控制GPIO口。要清零GPIO口,只需通过相应的寄存器或专用的GPIO控制函数将对应引脚的状态设置为低电平。具体代码实现取决于所使用的编程语言和硬件平台。例如,在树莓派上使用Python编程时,可以使用RPi.GPIO库来控制GPIO口。清零GPIO口的一...