0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32的复用时钟的开启时间

汽车玩家 来源:嵌入式大杂烩 作者:嵌入式大杂烩 2020-04-04 17:22 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

STM32的AFIO时钟真的是在开启引脚复用功能的时候开启吗?其实并不是~

什么是复用?

我们知道,STM32有很多外设,这些外设的外部引脚都是与GPIO共用的。我们可以通过软件来配置引脚作为GPIO引脚还是作为外设引脚。当引脚配置为外设引脚时就叫做复用。如串口默认复用的引脚为:

STM32的复用时钟的开启时间

PA9、PA10引脚可配置为普通IO,也可配置为串口引脚(PA9为TX,PA10为RX)。

例子:串口1为例

关于外设的配置可查阅:《STM32参考手册》关于通用和复用功能I/O(GPIO和AFIO) 的章节,如串口引脚配置如下:

STM32的复用时钟的开启时间

我们可能经常看到一些代码(基于STM32F103ZET6)的串口配置如下:

STM32的复用时钟的开启时间

看到这里开启了AFIO时钟,让我疑惑了一下,为什么SPI相关的引脚也配置为复用但并没有开启APIO时钟也能正常工作。所以AFIO时钟应该什么时候开呢?

我们回顾一下,我们为什么要开启时钟呢?因为我们要对芯片内部的硬件进行控制(读写其寄存器),要控制哪一部分,就要开启那一部分的时钟。

本例中,使能GPIOA、USART1的时钟是因为我们要对GPIOA、USART1相关的寄存器进行操作。那么AFIO呢?其管理的寄存器有哪些呢?从参考手册关于通用和复用功能I/O(GPIO和AFIO)这一章节可以看到AFIO管理的寄存器如下:

STM32的复用时钟的开启时间

可以知道,本例对USART1进行配置,并没有涉及到AFIO相关的寄存器,所以并不需要打开AFIO时钟!

所以这里的第7行代码可以删掉。当然不删也可以正常工作,但是会白白增加能耗、写无用代码(白白浪费程序存储器空间)而已!

何时开启AFIO时钟?

按照上面分析的,当然是要操作AFIO相关的寄存器的时候才开启AFIO时钟。此处依旧以串口为例。我们看到AFIO管理的寄存器中有复用重映射和调试I/O配置寄存器(AFIO_MAPR) 这一寄存器,这个寄存器怎么用呢?

首先,我们要知道什么是重映射。

使用重映射功能可以把一些复用功能重新映射到其他引脚上,在某些时候可以方便板级硬件的布局设计。设置AFIO_MAPR寄存器实现引脚的重新映射。此时,复用功能不再映射到它们的原始分配上。 可以重映射到任意引脚吗?其实是有规定的,可查阅参考手册,如串口1的重映射:

STM32的复用时钟的开启时间

我们可以配置PB6、PB7作为串口1的TX、RX引脚,具体配置代码如下:

STM32的复用时钟的开启时间

这里得调用一个重映射配置函数GPIO_PinRemapConfig,可在这个函数在stm32f10x_gpio.c中,如下:

STM32的复用时钟的开启时间

其中第一个参数为要重映射的外设,可在stm32f10x_gpio.h中查看:

STM32的复用时钟的开启时间

其中重映射又分为部分重映射和完全重映射,区别就是要重映射全部的引脚还是部分引脚,这也是有规定的。比如定时器1:

STM32的复用时钟的开启时间

我们从GPIO_PinRemapConfig函数的实现中可以看到我们需要操控AFIO_MAPR寄存器,所以需要开启AFIO时钟。

综上,需要操控AFIO管理的寄存器才需开启AFIO时钟,否则不需要开启。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2305

    文章

    11120

    浏览量

    371161
  • 串口
    +关注

    关注

    15

    文章

    1607

    浏览量

    81939
  • GPIO
    +关注

    关注

    16

    文章

    1313

    浏览量

    55727
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?

    各位电子圈的朋友,最近用STM32F405RGT6驱动DS1302实时时钟模块时,遇到了时间显示错乱的问题:输出的时间会出现“2055-55-55 55:55:55”这类明显异常的数值
    发表于 11-13 16:48

    ‌LMKDB1202/LMKDB1204 PCIe时钟多路复用器技术文档总结

    LMKDB 器件是一系列极低抖动的 LP-HCSL 时钟多路复用器,支持 PCIe Gen 1 至 Gen 7,并且符合 DB2000QL 标准。这些器件提供灵活的上电顺序、故障安全输入、单独的输出使能和禁用引脚、输入信号丢失 (LOS) 检测和自动输出禁用功能,以及出色
    的头像 发表于 09-10 14:54 658次阅读
    ‌LMKDB1202/LMKDB1204 PCIe<b class='flag-5'>时钟</b>多路<b class='flag-5'>复用</b>器技术文档总结

    LMKDB1202 PCIe时钟多路复用器技术文档总结

    LMKDB 器件是一系列极低抖动的 LP-HCSL 时钟多路复用器,支持 PCIe Gen 1 至 Gen 7,并且符合 DB2000QL 标准。这些器件提供灵活的上电顺序、故障安全输入、单独的输出使能和禁用引脚、输入信号丢失 (LOS) 检测和自动输出禁用功能,以及出色
    的头像 发表于 09-10 14:26 683次阅读
    LMKDB1202 PCIe<b class='flag-5'>时钟</b>多路<b class='flag-5'>复用</b>器技术文档总结

    ‌LMK3H2104 4-Output PCIe时钟发生器技术文档总结

    LMK3H2104 是一款基于 BAW 的时钟发生器,不需要任何外部 XTAL 或 XO。该器件可用作PCIe时钟发生器或通用时钟发生器。2 个 FOD(分数输出分频器)同时提供频率灵活性、低功耗
    的头像 发表于 09-10 09:21 606次阅读
    ‌LMK3H2104 4-Output PCIe<b class='flag-5'>时钟</b>发生器技术文档总结

    GPS时钟服务器,NTP协议时间服务器

    GPS时钟服务器是以卫星(GPS)信号为时间基准源的。GPS 卫星信号中所包含的时间基准同步于协调时(UTC),长期频率稳定度达到铯原子钟的水平10-13的数量级,相当于30万年才慢1秒。以此信号做
    的头像 发表于 08-13 15:37 321次阅读
    GPS<b class='flag-5'>时钟</b>服务器,NTP协议<b class='flag-5'>时间</b>服务器

    赛思高保持小型时钟模块:精确时间的守护者

    在我们的日常生活中,时间是一切的基础。无论是工作、学习还是生活,我们都需要依赖于时间来规划和安排。而在这个快节奏的社会中,如何准确地掌握时间成为了我们必须面对的问题。这时,高保持小型时钟
    的头像 发表于 07-22 14:37 304次阅读
    赛思高保持小型<b class='flag-5'>时钟</b>模块:精确<b class='flag-5'>时间</b>的守护者

    HarmonyOS NEXT应用元服务布局优化长列表使用懒加载与组件复用

    长列表这一场景,在本地模拟了10、100、1000、10000条数据,分别使用ForEach、LazyForEach,来测试关闭和开启懒加载情况下的完全显示所用时间、列表挂载时间、独占内存,并分析了其
    发表于 06-27 16:08

    STM32L433VCT6 LCD复用引脚如何分配?

    背景:使用STM32L433VCT6驱动段码屏,33个段,其中用到一个PC10引脚,使用STM32CubeMX配置,只配置了LCD复用功能,但是用于LCD_SEG40还是LCD_SEG28,没有指定。 数据手册: 问题:如何
    发表于 06-20 08:26

    使用LTC2500 芯片的同步功能时,可以把MCLK时钟停止后,发一个SYNC同步脉冲吗?

    运行MCLK时钟,不再进行同步,数据的相位同步精度会受影响吗?实际使用时,正常数据采样时改变DF,示波器观察DF设置成功!再关掉MCLK时钟,给sync引脚输入一个脉冲,再开启MCLK
    发表于 06-19 07:38

    GPS卫星时钟:高精度时间同步的技术核心

    在现代科技体系中,精确的时间同步是许多关键领域的基础,而GPS卫星时钟正是实现这一目标的核心技术之一。它不仅为全球定位系统(GPS)提供时间基准,还在通信、电力、金融等领域发挥着重要作用。
    的头像 发表于 06-16 14:38 742次阅读

    北斗时钟系统:提升时间精度的重要技术

    时钟系统作为北斗导航系统的重要组成部分,对于提升时间精度起着至关重要的作用。北斗时钟系统是指北斗卫星上的原子钟,它是基于原子物理学原理制作的高精度时间测量装置。在卫
    的头像 发表于 06-05 14:15 572次阅读
    北斗<b class='flag-5'>时钟</b>系统:提升<b class='flag-5'>时间</b>精度的重要技术

    北斗时间同步时钟:为现代生活提供精准时间

    时间,是我们日常生活中不可或缺的一部分。从手机上的时间显示到交通信号灯的控制,从金融交易的记录到电力系统的调度,时间的准确性直接影响着社会的运转效率。而北斗时间同步
    的头像 发表于 05-30 14:23 789次阅读
    北斗<b class='flag-5'>时间</b>同步<b class='flag-5'>时钟</b>:为现代生活提供精准<b class='flag-5'>时间</b>

    请问STM32CUBEIDE如何开启代码联想功能?

    STM32CUBEIDE如何开启代码联想功能?
    发表于 03-10 08:23

    如何加快STM32G473上电时间

    现在采用STM32G473,采用外部8M晶振,工作为72M,测试上电3.3V到时钟初始化完,大约需要5ms,有没有什么措施加快上电时间?即缩短上电3.3V到时钟初始化完成的
    发表于 03-07 08:11

    一千余字解读stm32时钟

    转换为多个外部设备的周期性运作。这种时钟“能量”的传递路径类似于大树的养分由主干流向各个分支,因此被称为时钟树。STM32内部也是由多种多样的电路模块组合在一起实现
    的头像 发表于 12-30 21:01 3231次阅读
    一千余字解读<b class='flag-5'>stm32</b><b class='flag-5'>时钟</b>树