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^^

【注】:个人学习笔记,如有错误,望不吝赐教,这厢有礼了~~~


MCU学习笔记_IO引脚复用和映射相关推荐

  1. 22.IO引脚复用和映射原理与配置

    IO引脚复用和映射原理与配置 参考资料: 正点原子STM32开发板: <STM32开发指南-HAL库版本>-4.4 IO引脚复用和映射 STM32F4xx官方资料: <STM32F4 ...

  2. ARM学习笔记--LPC1788引脚分析

    http://zgmgypb.blog.163.com/blog/static/962028192012730104640980/ RM学习笔记--LPC1788引脚分析 一.电源分析 要弄清楚单片机 ...

  3. S32K144学习笔记:4 信号复用和引脚分配

    4.1信号多路复用使多功能共享单片信号 信号复用单元包括来自GPIO的控制信号.端口和PAD接口逻辑.信号复用单元由几个独立的子单元组成,每个子单元处理一个pad的信号多路复用.端口控制块控制模块特定 ...

  4. MCU学习笔记_STA及PT工具

    一.常用命令     1.restore_session         restore_session xx/xx/PTsavesessions/func_hsi_ss_1p35v_125c_max ...

  5. Html入门学习笔记05—相关补充和映射、数字移动

    很久很久以前学习html的笔记记录,很随意,但都是自己记录的,希望对需要的人有所帮助. 本文使用word2013编辑并发布 Postbird | There I am , in the world m ...

  6. stm32学习笔记1:寄存器的映射

    #映射 重新取一个名字 ##e.g.令PF输出高电平 让PF口对应地址对应的口(就是PF口)等于0xffff 地址:查找参考文件,地址是40021400偏移14=40021414 *(unsigned ...

  7. 瑞萨RA系列mcu学习笔记--RTT-pwm驱动

    方案1:Studio 2.2.6和使用了RASC3.5下使用pwm驱动 开发环境必须说一下,本人在在开发环境的问题上栽了一个跟头, 使用最新版的RTT Studio 2.2.6和使用了RASC4.0的 ...

  8. 趣谈Linux操作系统学习笔记:用户态内存映射:如何找到正确的会议室?(第25讲)...

    一.mmap原理 在虚拟内存空间那一节,我们知道,每一个进程都有一个列表vm_area_struct,指向虚拟地址空间的不同内存块,这个变量名字叫mmap struct mm_struct {stru ...

  9. Hibernate视频学习笔记(3)常用映射标签及属性

    JTA实现两阶段提交,全局事务,对多个数据库起作用 JDBC是本地事务,只对单一数据库起作用 Hibernate基本映射 实体类 –〉表 实体类中的普通属性 –〉表字段 采用<class> ...

最新文章

  1. 如何使用Nodejs爬虫看漫画
  2. The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods install
  3. pythonmulti函数_python – 用于使用MultiIndex创建pandas系列的语法糖
  4. Linux启动hbase的shell命令出现警告_系统启动优盘制作图文教程(Windows Linux 等)...
  5. thymeleaf的属性优先级
  6. PHP怎么接收字符串,求大神救命!!php接收到是空的字符串
  7. 计算机应用基础答案高继梅,[Flash游戏制作.doc
  8. php 获取图片、swf的尺寸大小
  9. netcore读取json文件_NetCore 对Json文件的读写操作
  10. 第二集 第一魂环 第十一章
  11. MySQL高级(一)
  12. Word怎么删除空白页?这3种方法:适用于所有版本Word!
  13. 设计师电脑之家赠送U盘版PE网络版WIN10系统安装版
  14. 信而泰测试仪之 TeleATT软件 模拟 路由性能测试
  15. 【淘宝API开发系列】获得商品评论 API 返回值说明
  16. 2020年浙大计算机考研答疑
  17. JS实现简单的网页新闻无缝滚动
  18. 2008年中国楼市悄然巨变
  19. mac os系统截屏快捷键
  20. 毕业设计 —— 基于STM32手势控制显示系统的设计

热门文章

  1. VB程序设计教程(第四版)龚沛曾 实验8-2
  2. PAT 乙级练习 1068 万绿丛中一点红 - 超级详细的思路讲解
  3. VT虚拟化驱动入门教程
  4. 再说Mdx的字典文件处理
  5. Android自定义控件之拓展TextView(ExpandTextView)
  6. mysql字符集与校对规则设置_MySQL 字符集与校对规则
  7. wpsword怎样涂黑方框_Excel中如何插入空心小方块和实心小方块的标志?
  8. 【exp】virtualbox 安装增强功能失败问题解决(vbox虚拟机, Ubuntu)
  9. 怎么用matlab保存音频文件,Matlab用图片和音频藏文件(续)
  10. 华域php公司,华域智能DNS系统