MCU学习笔记
IO引脚复用和映射
1. 端口复用
2. 端口复用配置过程
1. 端口复用
-
STM32有很多内置外设,外设的外部引脚都是与GPIO复用的。即,一个GPIO,如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用时,就叫做复用。
-
STM32的端口复用映射原理
STM32系列MCU的IO引脚通过一个复用器连接到内置外设或模块。复用器一次只允许一个外设的复用功能(AF)连接到对应的IO口。这样确保同一个IO引脚的外设之间不会发生冲突。 -
端口复用映射示意图
由AFRL[31:0]寄存器和AFRH[31:0]寄存器选择配置引脚的功能
AFRL复用功能低位寄存器
对于每一组GPIO,都有对应的一个AFRL寄存器
AFRL复用功能高位寄存器
2. 端口复用配置过程
- 复用功能映射配置
- 系统功能
将IO连接到AF0,然后根据所用功能进行配置:
JTAG/SWD: 在各器件复位后,会将这些引脚指定为专用引脚,可供偏上调试模块立即使用(不收GPIO控制器你控制)
RTC_REFIN:此引脚而配置为输入浮空模式
MCO1, MCO2:这些引脚必须配置为复用功能模式 - GPIO
在GPIOx_MODER寄存器中将所需IO配置为输出或输入 - 外设复用
对于ADC, DAC,在GPIOx_MODER寄存器中将所需IO配置为模拟通道。
对于其他外设:
在GPIOx_MODER,GPIOx_PUPDR,GPIOx_OSPEEDER寄存器,分别选择类型,上拉/下拉以及输出速度
在GPIOx_APRL或在GPIOx_AFRH寄存器中,将IO连接到所需AFx
程序函数角度配置过程
-
- GPIO端口始终使能
//使能GPIO始终
__HAL_RCC_GPIOA_CLK_ENABLE();
-
- 复用外设时钟使能
//例如将GPIO复用为串口,则需使能串口时钟
__HAL_RCC_USART1_CLK_ENABLE();//使能串口时钟
-
- 端口模式配置为复用功能。HAL_GPIO_Init函数
GPIO_Initure.Mode=GPIO_MODE_AF_PP;//复用推挽输出
-
- 配置GPIOx_APRL或在GPIOx_AFRH寄存器中,将IO连接到所需AFx。函数HAL_GPIO_Init函数
GPIO_Initure.Alternate=GPIO_AF_USART1;//复用为USART1
参考资料:正点原子视频 Thanks^^
【注】:个人学习笔记,如有错误,望不吝赐教,这厢有礼了~~~
转载:https://blog.csdn.net/weixin_50722839/article/details/116025501
查看评论