小言_互联网的博客

MCU学习笔记_IO引脚复用和映射

382人阅读  评论(0)

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

程序函数角度配置过程

    1. GPIO端口始终使能
//使能GPIO始终
__HAL_RCC_GPIOA_CLK_ENABLE();
    1. 复用外设时钟使能
//例如将GPIO复用为串口,则需使能串口时钟
__HAL_RCC_USART1_CLK_ENABLE();//使能串口时钟
    1. 端口模式配置为复用功能。HAL_GPIO_Init函数
GPIO_Initure.Mode=GPIO_MODE_AF_PP;//复用推挽输出
    1. 配置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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场