牢记STM32的单片机每个功能模块有自己的时钟系统,所以调用32的任何模块都要配置时钟,端口复用和重映射也是如此。
1、端口复用
STM32用很多内置外设而且都是和GPIO复用的,也就是GPIO可以设置成一些常用的外设如串口的外设等等,数据手册有详细说明,需要时就查表
GPIO作为内置外设使用时就叫复用,也就是图中的默认复用功能,不把GPIO口当作单纯的I/O口而是赋予它一个外设的含义。
程序实现
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //时钟使能包括GPIO端口GPIOA和复用外设时钟(也就是串口)USART1
时钟使能完成了就要配置端口了
由下表我们配置全双工模式PA9串口发送复用推挽,PA10串口接收配置成浮空输入
2、端口重映射
通过设置重映射寄存器的方式,把这个外设的接口映射到其它的端口,方便PCB布线,虚拟增加外设。
复用功能串口1是PA9 PA10,但是如果我们觉得PB6 PB7更方便是就可以重映射使用这两个I/O口,重映射还分完全重映射和部分重映射,完全重映射就是功能外设的所有引脚都全部映射,如果映射串口一那么串口一的所有相关外设都映射到其他I/O口就是完全重映射,否则只映射部分需要的就是部分重映射。
重映射程序配置还是和上面一样先使能GPIO时钟和外设时钟,然后重映射比较不同的地方在于重映射你需要再使能AFIO时钟,最后开启重映射。
AFIO_MAPR配置复用功能重映射
AFIO_EXTICRX配置外部中断线映射
AFIO_EVCR配置EVENTOUT事件输出