STM32为什么要先开启外设时钟?

发布时间:2024-08-05  

今天给大家分享两点内容:

一是,为什么我们要先开启STM32外设时钟;二是,关于STM32的 I/O 复用功能及什么时候开启AFIO时钟。


STM32为什么要先开启外设时钟?

相信很多朋友都曾遇到过这种坑,我最初学习STM32的时候同样也遇到过。下面,我就来说说为什么我们要先开启STM32外设模块时钟,再对其外设模块初始化配置?

1、系统架构

不同类型的STM32,它的系统架构各有不同,但原理都类似,由多条主控总线和多条被控总线组成(请参看【参考手册】存储器和总线架构章节)。

以STM32F4为例:

● 八条主控总线:

— Cortex-M4F 内核 I 总线、 D 总线和 S 总线

— DMA1 存储器总线

— DMA2 存储器总线

— DMA2 外设总线

— 以太网 DMA 总线

— USB OTG HS DMA 总线

● 七条被控总线:

— 内部 Flash ICode 总线

— 内部 Flash DCode 总线

— 主要内部 SRAM1 (112 KB)

— 辅助内部 SRAM2 (16 KB)

— 辅助内部 SRAM3 (64 KB)(仅适用于 STM32F42xxx 和 STM32F43xxx 器件)

— AHB1 外设(包括 AHB-APB 总线桥和 APB 外设)

— AHB2 外设

— FSMC

67bffb8c-5034-11ed-a3b6-dac502259ad0.jpg

借助总线矩阵,可以实现主控总线到被控总线的访问,这样即使在多个高速外设同时运行期间,系统也可以实现并发访问和高效运行。

2、关于AHB和APB总线

AHB:Advanced High-performance Bus,即先进的高性能总线。

APB:Advanced Peripheral Bus,即先进的外围(外设)总线。

上面说了系统总线的架构引伸出来的就是AHB和APB总线,那为什么要讲述AHB和APB总线呢?

我们操作的外围设备一般都是位于AHB和APB总线上,而AHB可以引伸出AHB1、AHB2,甚至AHB3。同样APB也存在APB1、APB2等。

比如,USART1外设位于APB1总线上,GPIOA位于AHB1高速总线上。

请注意参考手册中“AHB/APB 总线桥”这一小节,有一条重要的内容:每次芯片复位后,所有外设时钟都被关闭( SRAM 和 Flash 接口除外)。使用外设前,必须在 RCC_AHBxENR 或 RCC_APBxENR 寄存器中使能其时钟。

3、STM32时钟控制

请参看STM32参考手册关于【复位与时钟控制RCC】章节。

67e695a8-5034-11ed-a3b6-dac502259ad0.jpg

STM32的时钟控制模块因MCU芯片不同,各有差异,但原理都类似,功能也相当丰富。主要的目的就是给相对独立的外设模块提供时钟,也是为了降低整个芯片的功能。

降低功耗是主要原因,还有一个原因,就是为了兼容不同速度的设备,有些高速,有些低速,如果都用高速时钟,势必造成浪费。

RCC给外设提供时钟是一个主要目的,那么为什么要提供时钟呢? 原因在于外围设备的寄存器需要时钟才能工作。你可以把外设当做一个设备,而这个设备需要给它提供电源(时钟)才能工作。

你在STM32参考手册的“RCC”章节可能会看到这么一句话:当外设时钟没有启用时,软件不能读出外设寄存器的数值,返回的数值始终是0x0。

4、总结

看到这里,相信聪明的你已经明白了为什么我们要先开启STM32外设模块时钟,再配置其外设模块了。

简单来说,就是操作外设是通过外设总线来实现,只有外设总线有时钟了才能操作外设。

坑:

A.先使能外设时钟,再对其进行配置

6843b698-5034-11ed-a3b6-dac502259ad0.jpg

B.时钟配置需对应总线

6873d6de-5034-11ed-a3b6-dac502259ad0.png

这种基于标准外设库的低级错误,相信肯定有不少人遇到过,希望提高警惕。

AFIO复用时钟

有朋友问:“什么时候开启AFIO时钟”。写了上面章节,就顺便再讲述一下关于STM32的I/O复用功能及什么时候开启AFIO时钟。

1、什么是I/O 复用功能?

简单来说,就是把普通I/O用作其它的功能。如:将PA9引脚用作USART1的Tx引脚,那么我们就把这个Tx引脚称为PA9的复用功能。

打开数据手册,会发现类似如下的列表:

68868482-5034-11ed-a3b6-dac502259ad0.jpg

2、什么时候开启AFIO时钟?

为了优化芯片引脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上。设置复用重映射和调试I/O配置寄存器实现引脚的重新映射。这时,复用功能不再映射到它们的原始分配上,而是映射到“重定义功能”上(见上图)。

这种将引脚重定义到其它引脚上的功能在几乎所有STM32芯片中都有这个功能,但是实现的方法可能有所不同,其中STM32F1就是通过事件控制的方式将特定功能引脚连接到对应PORT和PIN上。

简单来说,如果需要使用重定义功能,那么就需要开启AFIO时钟。

最后,如果你觉得你的程序可能是因为时钟配置的问题,不妨上电第一步使能所有时钟试试。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    400Mhz、100Mhz~133Mhz、50Mhz。 如图所示: 开发板上分布 怎么设置? 相关设置代码 #define S3C2410_MPLL_200MHZ     ((0x5c<......
    怎么实现语音识别_手机语音识别怎么设置;  怎么实现语音识别   很多时候我们都需要将一些语音文件转换为文字的形式进行使用,那么这时我们就需要对语音文件进行识别了。那么......
    Locked Loop,锁相环倍频分频输出。 另外,STM32还具有双时钟机制,即时钟安全系统CSS(Clock Security System)。在外部晶振不工作时,转而使用内部RC振荡器作为自己时钟......
    ,仪器内部将信号全部设置好,稳定的显示在屏幕上。不会设置示波器的,就可以一键“Autoset”。 那如果不“Autoset”怎么设置呢。先看一下这个按键“Defaultsetup”,恢复......
    变频调速器怎么接线_变频调速器怎么设置调速;  变频调速器怎么接线   1、电源应接到变频调速器输入端R、S、T接线端子上,一定不能接到变频调速器输出端(U、V、W)上,否则将损坏变频调速器。接线......
    技术进步或其他,使得新版STM32F207芯片超频支持168MHZ。 下面我们主要分析SystemCoreClock的120M时钟怎么从一个外部25MHZ的HSE得到的。 我们要从25MHZ的外部时钟得到120M......
    音频限幅器的作用 音频限幅器阈值怎么设置;  音频限幅器的作用   音频限幅器是一种用于调节音频信号动态范围的信号处理器。它的主要作用是限制音频信号幅度的最大值,并防止信号过载或失真。通过......
    监视器进入休眠状态怎么办 监视器的屏幕刷新频率怎么设置;  监视器进入休眠状态怎么办   如果您的监视器进入了休眠状态(常见于长时间无操作时),您可以尝试以下方法解决问题:   1. 检查连接:确保......
    存器,LCD就可以直接显示了。 六、mini2440怎么设置ov9650中的寄存器呢? ov9650有SCCB总线,我们可以用mini2440的IO口模拟一个SCCB总线传送方式。其实SCCB总线......
    是给nand_scan函数用的,如果不知道怎么设置,先看nand_scan怎么用  7      *         它应该提供:选中,发命令,发地址,发数据,读数据,判断状态等功能  8......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>