IO 口的复用最近在学习 STM32,在 BZ 上一篇关于的串口通信文章里有这么一段代码:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO,ENABLE);当初是参考开发的例子写的,一直对 GPIOD 或上“RCC_APB2Periph_AFIO〞这句话的意思没搞懂,通过这几天在网上查找资料和看手册,终于高清楚了,不敢独享,希望能对跟我一样的新手有所帮助吧 o(∩_∩)o
一、STM32 上有很多 I/O 口,也有很多的置外设,像 I2C,ADC,ISP,USART 等 ,为了节约引出管脚,这些置外设根本上是与 I/O 口共用管脚的,也就是 I/O 管脚的复用功能
但是 STM32 还有一特别之处就是:很多置外设的 I/O 复用引脚可以通过重映射功能,从不同的 I/O 管脚引出,即使用了复用功能的引脚是可通过程序改变的
知道了这些我们就不难理解上面代码的意思了,程序中用到的 USART2 外设的 TX,RX 分别对应 PA2,PA3,但是我的学习板上的 PA2,PA3 引脚接了其他设备,但是为了还要用 USART2,“RCC_APB2Periph_GPIOD |RCC_APB2Periph_AFIO〞就翻开了 GPIOD 重映射功能,把USART2 设备的 TX,RX 映射到 PD5,PD6 上,我们在这两个引脚上接上 MAX232 串口芯片就可以使用 USART2 串口通信了
那各位看官该问:“USART2 是不是可以映射到任意管脚呢
〞答案是否认的,它只能映射到固定的管脚,下列图是 USART2 重映射表其他外设的重映射可以参考 STM32100X 手册
二、为了节约 IO 资源单片时机在一个 IO 上复用很多功能,一般来说,单片机IO 口用到了一个功能后就能再用另外的复用功能〔对应的