问题描述

在使用STM32的USART2时发现AFIO时钟无论打不打开串口都能正常工作

带着这个问题网上搜集了一些资料,由于我对这块的理解并不是很深,如果有错误欢迎指正

首先为什么要开启时钟?

答:因为STM32几乎所有的外设都有独立的时钟,这也就是我们对相应的寄存器进行操作时要打开对应时钟的原因。
然后就什么时候AFIO时钟开启(所有时钟都是这样)就清楚了:当需要对“AFIO时钟管理的寄存器”进行读写时AFIO时钟打开!当然不对“AFIO时钟管理的寄存器”读写时也可以打开AFIO时钟,此时只是白白增加能耗、写无用代码(白白浪费程序存储器空间)而已!

接下来:跟AFIO相关的寄存器有哪些呢?

答:根据《STM32中文参考手册_V10》有:①事件控制寄存器(AFIO_EVCR)、②复用重映射和调试I/O 配置寄存器(AFIO_MAPR)、③外部中断配置寄存器1(AFIO_EXTICR1)、④外部中断配置寄存器2(AFIO_EXTICR2)、⑤外部中断配置寄存器3(AFIO_EXTICR3)、⑥外部中断配置寄存器4(AFIO_EXTICR4)。

应用:在usart1串口通信没有端口重映射时为什么不打开AFIO时钟?PA9、PA10作为通用I/O口也复用了,为什么不打开为什么不打开复用时钟?

答:AFIO全称:Alternate function I/O alternate备用的、替代的、交替的,所以AFIO可翻译为“备用功能I/O”,原英文手册上解释很清楚:[《STM32英文手册》P152]

To optimize the number of peripherals available for the 64-pin or the 100-pin or the 144-pin package, it is possible to remap some alternate functions to some other pins. This is achieved by software, by programming the AF remap and debug I/O configuration register(AFIO_MAPR) on page 159. In this case, the alternate functions are no longer mapped to their original assignations.

可见AFIO就设计用来remap some alternate functions to some other pins的,所以根本就没有什么“复用”之说。

当我们需要配置这些 AFIO 寄存器(只有当我们用到重映射、事件寄存器、配置寄存器、外部中断时)的时候,就需要打开 RCC_APB2ENR 寄存器的 AFIO 时钟,而不是用到引脚复用功能的时候打开。

下面给出几个关于这个问题不错的文章:
STM32之AFIO
STM32的AFIO时钟什么时候需要开启
如何理解STM32引脚中的GPIO,AFIO时钟分配策略和管脚复用
STM32F103:什么时候需要复用IO(AFIO)?
GPIO USART1 AFIO等疑问

STM32的AFIO时钟什么时候开启?相关推荐

  1. STM32的AFIO时钟什么时候需要开启

    相比于普通单片机,STM32 拥有复杂的时钟系统,相应的控制器称为 RCC(Reset Clock Controller,复位与时钟控制器).每个外设都配备了外设时钟的开关,当我们不使用某个外设时,可 ...

  2. stm32的afio初始化代码_STM32-IO-AFIO(复用功能IO和调试配置)

    最近在学习STM32,在BZ上一篇关于的串口通信文章里有这么一段代码:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD| RCC_APB2Periph_AFIO, ...

  3. STM32外设配置—什么时候需要开启AFIO时钟?

    发现问题 定时器.串口,这些都是STM32的外设,在使用时看作GPIO口的一种复用功能. 可是在配置这些外设时钟的时候,不知道大家有没有这样的疑惑,既然作为GPIO口的一种复用功能,为什么不需要开启复 ...

  4. AFIO时钟何时开启

    首先为什么要开启时钟? 答:因为要对寄存器进行读写!而在STM32中对寄存器的读写都是要打开寄存器对应的时钟才可以的[就像人一样,有了跳动的脉搏手臂才能有能量才能进行各种动作]. 然后就什么时候AFI ...

  5. Stm32之RTC时钟(2021-07-26)

    Stm32之RTC时钟 1.时钟框图: 先将之前没做笔记的时候的时间框架图补上: 同样源自正点原子的PPT,图中红框的部分为RTC的时钟源,有三种: HSE的128分频: LSI(大概40kHz) L ...

  6. 基于STM32可调时钟仿真

    目录 一.项目功能概述 二.仿真 三.程序 资料下载地址:基于STM32可调时钟仿真 一.项目功能概述 1.LCD1602液晶屏实时显示当前时间 2.通过按键调整时间 二.仿真 定时使用stm32内部 ...

  7. 基于STM32的DS1302时钟芯片驱动

    基于STM32的DS1302时钟芯片驱动 /****************************************************************************** ...

  8. STM32的SPI时钟

    1)fPCLK不是CPU频率,而是外设总线的频率. 2)STM32的SPI时钟最快是18MHz,这是芯片设计时决定的. 3)STM32的SPI1在APB2上,SPI2和SPI3在APB1上,APB1的 ...

  9. STM32 RTC实时时钟

    我用的是STM32库函数:两个知识点:       一.RTC时钟框图分析(重要)       二.时间是怎样显示出来的(简析) 一.RTC时钟框图分析(重要) 先熟悉一下几个知识点:       1 ...

最新文章

  1. 一文让你明白Redis持久化
  2. Mac下查看端口占用
  3. 安装Linux后修改grub默认启动选项
  4. 计算机系统基础期中考试,计算机系统基础第二次作业.docx
  5. python心跳的实现_(python)面向对象
  6. 深入理解K8S网络原理下
  7. R 语言下常用第三方库的说明
  8. 使用Java实现邮件的发送
  9. java打雪仗,【UER #8】打雪仗 - 题目 - Universal Online Judge
  10. 切换阿里巴巴开源镜像站镜像——Kali镜像
  11. 仅以此篇纪念负数取模
  12. png图片尺寸大小调整
  13. 后台写入前台的日期错误,变成一串数字解决方案
  14. 什么是NoSQL数据库
  15. RK3128-Android7.1-IR-深度剖析
  16. funcode小游戏暑假大作业,开源,新颖,游戏名:凿空,免费。
  17. ElasticSearch windows部署(避坑干货)
  18. 关于交叉熵(Cross Entropy)与Softmax
  19. linux下修改hosts文件没有权限
  20. 涨粉写作经验分享(一) - 写作技巧

热门文章

  1. python制作简单网页_python 跑服务器,访问自己制作的简单页面
  2. oracle证书洛阳,ORACLE手工建库
  3. Docker启动容器时出现错误
  4. -bash: lsof: 未找到命令
  5. oracle数据库字符编码utf-8改为ZHS16GBK
  6. idea gblfy常用快捷键
  7. JavaScript从入门到放弃 -(二)继承
  8. cuda加速的头文件_如何从C ++头文件调用CUDA文件?
  9. ios开发 热搜词demo_手机app如何开发
  10. 异常将上下文初始化事件发送到类的侦听器实例_Spring的Bean实例化原理,这一次彻底搞懂了!...