STM32复用的GPIO引脚配置
STM32复用的GPIO引脚配置STM32所有内置外设的外部引脚都是与标准GPIO引脚复用的,例如你举的这个例子,21管脚为PB10/SCL2/TX3,表示在上电之后它的默认功能为PB10,而I2C2的SCL和USART3的TX为它的复用功能。 STM32基本上每个引脚都有8种配置模式:1)浮空输入2)带弱上拉输入3)带弱下拉输入4)模拟输入5)推挽输出6)开漏输出7)复用推挽输出8)复用开漏输出 通常有5种方式使用某个引脚功能,它们的配置方式如下:1)作为普通GPIO输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时不要使能该引脚对应的所有复用功能模块。2)作为普通GPIO输出:根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引脚对应的所有复用功能模块。3)作为普通模拟输入:配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有复用功能模块。4)作为内置外设的输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时使能该引脚对应的某个复用功能模块。5)作为内置外设的输出:根据需要配置该引脚为复用推挽输出或复用开漏输出,同时使能该引脚对应的所有复用功能模块。--------------------------------------------------------------------------------、注意如果有多个复用功能模块对应同一个引脚,只能使能其中之一,其它模块保持非使能状态。比如你要使用21、22脚的USART3功能,则需要配置21脚为复用推挽输出或复用开漏输出,配置22脚为某种输入模式,同时使能USART3并保持I2C2的非使能状态。 --------------------------------------------------------------------------------STM32JTAG引脚复用DB3与DB4是JTAG引脚复用,我并非用JTAG-DP调试端口,而是SW-DP,只需要JTMS/SWDIO与JTCK/SWCLK。但是stm32复位后,JTAG与SW默认同时开启的,即所有的JTAG端口均被系统保留,软件设置GPIO是不起作用的,所以导致DB4一直为高电平,DB3一直为低电平,ST的文档里说明,如果要释放多余的JTAG端口,需设置SWJ_CFG为010,关闭JTAG-DP,启用SW-DP并且开启端口复用的始终,在代码上体现是这样的:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);备注:若SWD被禁后无法下载程序,则按住复位键,点击下载程序STM32F10x系列的MCU复位后,PA13/14/15 & PB3/4默认配置为JTAG功能。有时我们为了充分利用MCU I/O口的资源,会把这些端口设置为普通I/O口。具体方法如下:GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);// 改变指定管脚的映射 GPIO_Remap_SWJ_Disable SWJ 完全禁用(JTAG+SW-DP)GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);// 改变指定管脚的映射 GPIO_Remap_SWJ_JTAGDisable ,JTAG-DP 禁用 + SW-DP 使能GPIO_Configuration(); // 配置使用的 GPIO 口
页:
[1]