8-GPIO复用
8-GPIO引脚复用与重映射
0.通用GPIO
在复位期间及复位刚刚完成后,复用功能尚未**,I/O 端口被配置为输入浮空模式。
复位后,调试引脚处于复用功能上拉/下拉状态:
● PA15:JTDI 处于上拉状态
● PA14:JTCK/SWCLK 处于下拉状态
● PA13:JTMS/SWDAT 处于下拉状态
● PB4:NJTRST 处于上拉状态
● PB3:JTDO 处于浮空状态
当引脚配置为输出后,写入到输出数据寄存器 (GPIOx_ODR) 的值将在 I/O 引脚上输出。可
以在推挽模式下或开漏模式下使用输出驱动器(输出 0 时仅** N-MOS)。
输入数据寄存器 (GPIOx_IDR) 每隔 1 个AHB1 时钟周期捕获一次 I/O 引脚的数据。
所有 GPIO 引脚都具有内部弱上拉及下拉电阻,可根据 GPIOx_PUPDR 寄存器中的值来打
开/关闭。
1.I/O 引脚复用器和映射
微控制器 I/O 引脚通过一个复用器连接到板载外设/模块,该复用器一次仅允许一个外设的复用功能 (AF) 连接到 I/O 引脚。这可以确保共用同一个 I/O 引脚的外设之间不会发生冲突。每个 I/O 引脚都有一个复用器,该复用器采用 16 路复用功能输入(AF0 到 AF15),可通过GPIOx_AFRL(针对引脚 0 到 7)和 GPIOx_AFRH(针对引脚 8 到 15)寄存器对这些输入进行配置:
● 完成复位后,所有 I/O 都会连接到系统的复用功能 0 (AF0)。
● 外设的复用功能映射到 AF1 至 AF13。
● Cortex™-M4F EVENTOUT 映射到 AF15。
2.引脚复用时钟设置
RCC_APB2PeriphClockCmd( LED1_GPIO_CLK | LED2_GPIO_CLK | LED3_GPIO_CLK , ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //需要用到外设的重映射功能时需要使能AFIO的时钟
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); //设置引脚复用
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
3.为什么引脚复用?
为了节省IO口资源,同一个IO口可能集成了多个功能。但是要用到的某个端口上电初始化后默认功能并不是想要用到的功能,这样就要用到复用功能!
(1).将默认功能重映射为需要的功能!
(2).将默认功能映射为普通IO口使用!