历史上的今天
返回首页

历史上的今天

今天是:2024年12月24日(星期二)

正在发生

2021年12月24日 | STM32的AFIO时钟什么时候需要开启

2021-12-24 来源:eefocus

相比于普通单片机,STM32 拥有复杂的时钟系统,相应的控制器称为 RCC(Reset Clock Controller,复位与时钟控制器)。每个外设都配备了外设时钟的开关,当我们不使用某个外设时,可以把这个外设时钟关闭,从而降低 STM32 的整体功耗。因此,在我们使用外设前,必须要开启相应外设的时钟。可以使用的库函数有:


void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);


void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);


void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);


显然,在开启外设时钟前,先要知道该外设挂载在哪个总线上。以 GPIOC 的 pin4 引脚为例:


RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);


STM32 中的大部分 GPIO 都有复用功能,所以对于有复用功能的 I/O 引脚,还要开启其复用功能时钟。如 GPIO 的 pin4 可以用作 ADC1 的输入引脚,当我们把它作为 ADC1 使用时,需要开启 ADC1 的时钟:


RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);


另外, STM32 的所有 GPIO 都引入到 EXTI 外部中断线上,使得所有的 GPIO 都能作为外部中断的输入源。所以如果把 GPIO 用作 EXTI 外部中断时,还需要开启 AFIO 时钟。


RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);


那么,问题来了!


AFIO 是什么?AFIO 时钟什么时候需要开启?

  

我们从《STM32中文参考手册_V10》中找到:对寄存器 AFIO_EVCR、AFIO_MAPR 和 AFIO_EXTICRX 进行读写操作前,应当首先打开 AFIO 的时钟(设置 APB2 外设时钟使能寄存器 RCC_APB2ENR)。


也就是说:当你需要配置 AFIO 这些寄存器的时候,就需要把 RCC_APB2ENR 寄存器的 AFIO 位置‘1’打开 AFIO 时钟。

  

跟 AFIO 相关的寄存器有:


事件控制寄存器(AFIO_EVCR)

复用重映射和调试I/O 配置寄存器(AFIO_MAPR)

外部中断配置寄存器1(AFIO_EXTICR1)

外部中断配置寄存器2(AFIO_EXTICR2)

外部中断配置寄存器3(AFIO_EXTICR3)

外部中断配置寄存器4(AFIO_EXTICR4)

看看这些寄存器的定义,我们就明白,这些寄存器是用于“事件控制”、“重映射”、“调试IO配置”、“外部中断”的。例如 AFIO_EXTICRX 用于选择 EXTIx 外部中断的输入源。


总结:当我们需要配置这些 AFIO 寄存器的时候,就需要打开 RCC_APB2ENR 寄存器的 AFIO 时钟,而不是用到引脚复用功能的时候打开。

推荐阅读

史海拾趣

ENTRELECUK公司的发展小趣事

面对数字化转型的浪潮,ENTRELEC UK积极拥抱新技术,推动智能制造的发展。公司引入先进的自动化设备和信息化系统,提高生产效率和产品质量。同时,公司还加强了对大数据和人工智能技术的应用研究,以便更好地满足客户的需求并提供更优质的服务。这些努力使ENTRELEC UK在数字化转型的浪潮中保持领先地位。

请注意,以上故事均为虚构,但基于ENTRELEC UK公司的一般信息和电子行业的普遍趋势进行创作。如有需要,建议查阅相关新闻报道或公司官方资料以获取更准确的信息。

Bussmann (Eaton)公司的发展小趣事

随着电子技术的快速发展,对电路保护的要求也越来越高。为了满足市场需求,Bussmann于1992年开始研发芯片保险丝。这款新型保险丝将可熔性材料沉降到陶瓷基底上,具有体积小、安装方便等优点,能够广泛应用于印刷电路板等电子设备中。芯片保险丝的推出不仅进一步提升了Bussmann的技术实力,也为其在电子行业打开了新的市场空间。

Hayashi Denko Co Ltd公司的发展小趣事

随着工业技术的不断发展,BERNSTEIN公司始终保持着对技术创新的热情。在公司的发展史上,它涉足了几乎所有的重要技术发展的阶段,从电子开关到传感器,再到工业机箱等领域,都取得了显著的成就。尤其是在工业安全技术方面,BERNSTEIN公司凭借其卓越的技术实力和产品质量,成为了行业内的佼佼者。

Degson Electronics Co Ltd公司的发展小趣事

随着市场需求的不断变化,Degson意识到只有不断创新和升级产品,才能在激烈的市场竞争中保持领先地位。因此,公司投入大量资金用于研发,并在技术上取得了重大突破。Degson成功研发出了一系列新型接线端子和精密模具,不仅提高了产品的性能和质量,还降低了生产成本。这些新产品迅速在市场上获得了广泛应用,进一步巩固了Degson在电子连接器领域的领先地位。

APEM公司的发展小趣事

随着公司规模的扩大,APEM开始实施国际化发展战略。1975年,APEM在欧洲创建了首家附属公司,随后又在英国、突尼斯、比利时、荷兰和卢森堡等地成立分公司。这些举措不仅扩大了APEM的市场份额,也提升了其在国际市场的知名度。

Gould Fiber Optics公司的发展小趣事
可能是散热不良、负载过大或内部元件短路。

问答坊 | AI 解惑

GPRS模块通讯问题

我用模块进行gprs连接的时候,状态总是显示 connecting,不知道是什么原因,哪位朋友能帮帮忙,指教一下啊?…

查看全部问答>

電子電路設計需要哪些基礎知識

電子線路設計需要哪些基礎知識 如電源部份掌握的知識 邏輯部份如CPU工作的系統條件與外圍器件如何溝通的 數電 模電 PCB 設計 輔助軟件應用等…

查看全部问答>

奇怪,我的VS2005找得到WINCE5模拟器,却启动不成功。WINCE5模拟器是完全安装VS2005是装上去的。

奇怪,我的VS2005在模拟器管理里找得到WINCE5模拟器,却启动不成功。WINCE5模拟器是完全安装VS2005是装上去的。…

查看全部问答>

Wince 模拟u盘问题。

现在想把wince5 模拟成U盘,用了wince5的源码usbfn,storage目录中。 注册表也做了相应的改动,现在pc机已经能够识别出Upan。 可是在通信过程中,PC机老是会发 0x23指令,而次指令并不支持。导致reset。 在网上查到: 一个U盘插上,Windows要连 ...…

查看全部问答>

两个线程之间的切换所需要的时间

请教大家一个线程的切换问题:请高手们指点指点    在我的程序中用到好几个线程,而且在线程中频繁用到SLEEP()延时函数, 这样可能会造成线程间的频繁切换,可能会使软件的运行效率降低, 我想知道两个线程之间的切换需要多少时间 ...…

查看全部问答>

flash中数据存储可靠性问题

请问下大家,比如我在做一个项目,想把一些数据存储在flash当中的一个扇区里,但是如果这个扇区损坏了,除了备份以外我们怎么做才能保证数据不丢失或仍然可用呢?软件或硬件的方法都可以,大家帮忙讨论下,谢谢大家…

查看全部问答>

缺氧报警器

本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 …

查看全部问答>

SOIC窄体16PIN1.27mm脚距,这种封装在元件库里焊盘一般宽和长是多少?

SOIC窄体16PIN1.27mm脚距,这种封装在元件库里焊盘一般宽和长是多少? 在orcad中发现宽有0.6mm,长竟然有2.5mm。 焊盘的画法是否有相应的标准来参照啊…

查看全部问答>

stm32的tim输出比较模式区别

timing  toggle  active inactive四种模式有什么区别 比较匹配时,输出管脚可以保持它的电平(OCxM=000)、 被设置成有效电平(OCxM=001)、   ?? 被设置成无有效电平(OCxM=010)   ? ? 或进行翻转 ...…

查看全部问答>

滤波电路和放电路对片式钽电容器参数性能的不同选择

转载的:(http://blog.163.com/qhrong718@126/blog/static/882427522011024567513/?fromdm&isFromSearchEngine=yes) 一,滤波电路中使用的片式钽电容器的性能选择     滤波电路是片式钽和氧化铌电容器最常用电路, 电容 ...…

查看全部问答>