精华内容
下载资源
问答
  • 外设时钟使能
    千次阅读
    2012-07-17 15:37:35

    今天看<<例说stm32>>上的RTC时钟,发现他没有使能APB1的上BKP时钟,就能读出BKP寄存器里的内容.很是不解,又看了一遍发现APB总线上的时钟使能分为两种,一种是时接口时钟一种是外设时钟.
    又仔细观查了一下时钟树发现在APB外设时钟使能寄存器上表现为接口时钟的都已经有了自己的时钟,再经实验证明所有这种不需要在APB上使能就有自已时钟的外设(即在APBxENR的某一位上代表的是这个外设的接口时钟的外设)在不需要使能接口时钟的情况下就能读出这种外设的寄存器的内容!

    更多相关内容
  • 外设时钟控制寄存器

    2020-11-13 00:12:22
    外设时钟控制寄存器(PCLKCR)控制片上各种时钟的工作状态,使能或禁止相关外设的时钟,其分配如图1所示,各位功能定义如表1所列。  图1 外设时钟控制寄存器(PCLKCR)  表1 外设时钟控制寄存器(PCLKCR)...
  • 置顶/星标公众号,不错过每一条消息! 今天分享的关于时钟知识,可能很多人没有在意过。这也是之前有朋友问过的问题,这里就简单给大家普及一下吧。1RCC时钟说明在STM...

    置顶/星标公众,不错过每一条消息!

    640?wx_fmt=jpeg

        今天分享的关于时钟知识,可能很多人没有在意过。这也是之前有朋友问过的问题,这里就简单给大家普及一下吧。

    1

    RCC时钟说明

    在STM32参考手册中,都有Reset and Clock Control(RCC)复位和时钟控制的章节。


    在这一章节就可以看到有两类寄存器:peripheral reset register(RSTR)外设复位寄存器和peripheral clock enable register(ENR)外设时钟使能寄存器。


    我们拿STM32F1参考手册为例,可以看到如下图寄存器:

    640?wx_fmt=png


    一种是控制外设时钟的寄存器,一种是复位外设的寄存器。

    2

    外设时钟使能和失能

    我们都知道,配置STM32外设,会先开启对应的时钟(也就是使能外设时钟)。

    比如使能USART1时钟:

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);


    失能USART1时钟:

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, DISABLE);


    我之前分享过一篇文章《关于STM32时钟配置的那些坑》,里面有说:为什么我们要先开启STM32外设时钟。


    从时钟使能和失能来说,这里再简单总结一下:使能外设时钟,我们就可以操作(读写)对应的外设;失能外设时钟,则我们无法操作对应的外设


    所以说,我们要操作外设,就必须要先开启(使能)其外设时钟。

    3

    复位外设

    复位外设相信大部分朋友都能理解,如果使用寄存器开发过的朋友,更应该明白。

    简单来说,复位外设就是恢复外设所有寄存器为上电默认值,也可以说复位了我们的配置


    可能有些地方你会也会发现xx外设配置之前有“重新初始化外设的操作,如:

    USART_DeInit(USART1);

    DMA_DeInit(DMA1_Channel1);


    这重新初始化代码里面,其实就是调用了复位外设代码。


    4

    失能外设时钟和复位外设会对外设有何影响

    上面说了失能外设时钟,我们就不能操作外设了。那么复位外设,我们还能操作外设吗?外设的时钟也会被复位吗?


    可能许多人没有深入分析过,我这里简单总结一下:


    1.外设时钟未使能(失能状态),不能配置(读写)外设


    2.复位外设,会复位外设的所有寄存器,但外设时钟不会被复位


    3.外设时钟使能,位外设,再清除复位外设,可以继续配置(读写)外设。如USART1重新初始化:

    RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, ENABLE);

    RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, DISABLE);

    USART_Init(USART1, &USART_InitStructure);


    4.复位外设,但不清除复位外设,则不能继续配置(读写)外设

    RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, ENABLE);

    USART_Init(USART1, &USART_InitStructure);


    在STM32的库函数中,外设复位清除都是成对的,所以,我们用库开发的好处,就是相对不容易犯一些错误。

    因为很多朋友使用寄存器开发,有很多细节问题没有深入研究过,就不知道问题到底处在哪里。

    所以,建议用寄存器开发的朋友转向使用(SPL、HAL或CLL)库开发。如果你非要一步一步理解底层,建议使用SPL标准外设库。



    推荐阅读:

    1.关于STM32时钟配置的那些坑

    2.STM32标准外设库SPL转换成Cube LL

    5最后

    若觉得文章对你有帮助,随手点赞、分享,也是对我莫大的支持和鼓励。


    扫描下面二维码、关注公众号,在底部菜单中查看更多精彩内容!


    640?wx_fmt=jpeg

    长按识别图中二维码关注

    640

    赞赏是对作者的认可与支持!

    展开全文
  • mdk学习-为何外设需要时钟使能

    千次阅读 2019-05-01 15:17:58
    RCC_APB2PeriphClockCmd()函数是设置外设时钟。ARM与C51单片机不同的是,不用外设的时候,如IO口、ADC、定时器等等,都是禁止时钟的,以达到节能的目的,只有要用到的外设,才开启它的时钟。因此在需要用到GPIOB和...

    本篇文章来自于:http://blog.csdn.net/fushiqianxun/article/details/7926442,本人仅作为收藏

    RCC_APB2PeriphClockCmd()函数是设置外设时钟。ARM与C51单片机不同的是,不用外设的时候,如IO口、ADC、定时器等等,都是禁止时钟的,以达到节能的目的,只有要用到的外设,才开启它的时钟。因此在需要用到GPIOB和GPIOD的时候,我们需要先开启它的时钟,具体用到的是函数库里面的函数:

    void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)

    其中,第一个参数需要指示要开启什么端口的时钟,RCC_APB2Periph_GPIOx就是开启GPIOx的时钟,第二个参数需要指示是开启还是关闭,ENABLE/DISABLE。

    开启外设时钟之后,然后就开始对GPIO的配置寄存器进行设置了

     

    所有寄存器都需要时钟才能配置吧,寄存器是由D触发器组成的,只有送来了时钟,触发器才能被改写值。

    任何MCU的任何外设都需要有时钟,8051也是如此;STM32为了让用户更好地掌握功耗,对每个外设的时钟都设置了开关,让用户可以精确地控制,关闭不需要的设备,达到节省供电的目的。

    51单片机不用配置IO时钟,只是因为默认使用同一个时钟,这样是方便,但是这样的话功耗就降低不了。
    例如,某个功能不需要,但是它还是一直运行。
    stm32需要配置时钟,就可以把不需要那些功能的功耗去掉。

    当你想关闭某个IO的时候,关闭它想对应的时钟使能就是了,不过在51里面,在使用IO的时候是没有设置IO的时钟的,还有在STM32中,有外部和内部时钟之分,关于时钟等好好研究

    ARM的芯片都是这样,外设通常都是给了时钟后,才能设置它的寄存器(即才能使用这个外设)。STM32、LPC1XXX等等都是这样。
    这么做的目的是为了省电,使用了所谓时钟门控的技术。
    这也属于电路里同步电路的范畴:同步电路总是需要1个时钟。
     

    展开全文
  • GD32F4xx使能外设时钟陷阱

    千次阅读 2020-12-20 16:37:51
    网上搜了一下竟然没有人遇到过使用GD32标准库使能外设时钟出现问题的事情,可能我太菜了吧????。 以前用stm32的时候初始化多个gpio外设时可以一起使能时钟,因此我假装GD的也应该支持(我也就没去详看其封装好的接口...

    随着国产化的进程加快,很多项目使用的器件都要求国产化,最近公司项目需要使用兆易创新的GD32来做项目,之前有过一点stm32的基础,因此上手很快。正因为以前使用的是stm32标准库,因此使用GD的标准库时也会踩雷。网上搜了一下竟然没有人遇到过使用GD32标准库使能外设时钟出现问题的事情,可能我太菜了吧🙄。
    以前用stm32的时候初始化多个gpio外设时可以一起使能时钟,因此我假装GD的也应该支持(我也就没去详看其封装好的接口),因为这样效率比较高,可是结果证明我错了。最近写SDRAM驱动时因为需要多个GPIO,因此我对这些GPIO的时钟一起使能了,后来对SDRSM的读写一直不正确,我将精力基本都放在配置参数上了,折腾了一天也没解决这个问题。后来在线调试发现时钟一起使能时GPIO对应的pin竟然不能工作!!!单独使能时钟的时候就能正常读写SDRAM了,卧槽,这特么也太坑了吧?
    希望GD的标准库以后也能像STM32的那样可以一起使能外设时钟吧,我为我的愚蠢买了个大单,希望也能其他人一些参考吧。
    前面的都是废话,最后强调一下:使用GD32的标准库使能外设时钟时一定要单独使能,不要通过或操作一起使能!!!

    展开全文
  • 设置外设时钟使能时钟

    千次阅读 2011-11-09 11:58:13
    对STM32进行软件开发时,最基本的就是对STM32芯片进行时钟和端口配置,然后是对项目所用到的片上资源进行配置并驱动,下面给出时钟和端口配置代码,该代码几乎涵盖了片上所有时钟和端口配置项目,可根据自己需要进行...
  • HISPCP和LOSPCP控制寄存器分别控制高/低速的外设时钟,具体功能参见图1、图2和表1、表2。  图1 高速外设时钟寄存器(HISPCP)  图2 低速外设时钟寄存器(△OsPCP)  表1 高速外设时钟寄存器(HISPCP)功能...
  • 阿尔法系统时钟和外设时钟

    千次阅读 2022-02-04 12:59:07
    深入了解阿尔法开发板系统时钟树,以及外设时钟的各种配置。
  • STM32操控外设为什么要先使能时钟

    千次阅读 多人点赞 2019-07-30 16:17:15
    STM32操控外设为什么要先使能时钟 STM32的新手,一般都会对一个问题很纠结。我也是,就是所谓的”时钟问题“。我们在尽心STM32编程时,会痛苦地发现...在学51单片机的时候,基本上接触不到I/O方向和外设时钟的概念...
  • 最近在STM32上写了一份串口通信的程序,但下载复位后串口却不工作,初始化的代码如下: //发送/接收的GPIO、串口和中断的初始化结构体 GPIO_InitTypeDef GPIO_InitStructureTx; GPIO_InitTypeDef GPIO_...
  • STM32时钟系统简介

    千次阅读 2020-08-02 09:50:53
    STM32时钟系统 时钟系统框图 时钟系统总结 PLLCLK,SYSCLK,HCKL,PCLK1,PCLK2 之间的关系 五大时钟源 简要概述系统时钟源 APB1&ABP2总线对应的设备 与时钟相关的寄存器 STM32官方库函数讲解 时钟初始化...
  • DSP28335 外设时钟

    千次阅读 2016-11-21 15:06:43
    TMS320F28335通过外部时钟信号、OSC和PLL产生倍频...为了实现低功耗和提供高低频率时钟信号,需要把SYSCLKOUT进一步分频,本章主要讲解了对SYSCLKOUT分频产生低频时钟信号和高频时钟信号,完成外设时钟初始化的过程。
  • 外设使能时钟问题
  • STM32F4 HAL库开发 --时钟使能和配置

    千次阅读 2021-06-28 18:13:59
    在STM32F4的HAL库中,外设时钟使能操作都是在RCC相关固件库文件头文件stm32f4xx_hal_rcc.h 定义的。外设时钟使能在HAL库中都是通过宏定义标识符来实现。首先,我们来看看GPIOA的外设时钟使能宏定义标识符。 #define ...
  • 首先强调:时钟使能必须在外设初始化之前!!!!!!! 在这引用一个解释, “ARM的芯片,外设通常都是给了时钟后才能设置它的寄存器(即才能使用这个外设)。 STM32、LPC1XXX等等都是这样,这么做的目的是为了省电...
  • 上一篇文章完成了RH850时钟源寄存器配置,外设要正常工作,必须要配置对应的时钟,这篇文章说明RH850外设时钟配置。 时钟选择寄存器 下面表格是RH850-F1K技术规格书列出的外设时钟寄存器。 外设时钟寄存器...
  • STM32F4各外设时钟配置总结

    千次阅读 2018-11-01 18:42:21
    时钟外设对应时钟参考时钟树:如下 例如:   可以通过如下配置:也即是【1】中的默认配置 (system_stm32F4xx.c的SetSysClock函数 )  配置SYSCLK、HCLK、PCLK2、PCLK1  配置主时钟: 参考【1】...
  • DSP 2812 外设时钟的管理模块
  • STM32总结之开启外设时钟

    千次阅读 2019-05-28 18:38:58
    我们知道到,STM32的大多数外设,在使用前都要开启该外设时钟。 下面我们以STM32VET6指南者为例 1.点亮LED灯实验时,用到了GPIOB,我们需要开启GPIOB的时钟: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO,...
  • 我们从《STM32中文参考手册_V10》中找到:对寄存器 AFIO_EVCR、AFIO_MAPR 和 AFIO_EXTICRX 进行读写操作前,应当首先打开 AFIO 的时钟(设置 APB2 外设时钟使能寄存器 RCC_APB2ENR)。 也就是说:当你需要配置 AFIO...
  • STM32F103时钟外设关系

    千次阅读 2018-11-16 16:47:32
    SYSCLK 系统时钟,最大72MHz.HCLK :AHB总线时钟,由系统时钟SYSCLK 分频得到,一般不分频,等于系统时钟经过总线桥AHB–APB,通过设置分频,可由HCLK得到 PCLK1与PCLK2时钟;不过PCLK2时钟最高可达72MHz,而PCLK1...
  • stm32外设使能,失能,复位的区别

    千次阅读 2019-02-15 12:48:25
    总而言之,只有使能外设时钟外设才能工作。 所以外设使能实际使能的是外设的时钟,而与之相应的外设失能也是使外设时钟失能。外设失能后配置外设是没有作用的除非重新使能。 与以上两个不同的是外设复位,它是通.....
  • STM32学习之总线与时钟

    千次阅读 2021-11-13 18:22:43
    STM32F407 总线 时钟
  • 【STM32】系统时钟RCC详解(超详细,超全面)

    万次阅读 多人点赞 2019-08-08 15:42:35
    时钟系统就是CPU的脉搏,决定cpu速率,像人的心跳一样 只有有了心跳,人才做其他的事情,而单片机有了时钟,才能够运行执行指令,才能够做其他的处理 (点灯,串口,ADC),时钟的重要性不言而喻。 为什么 STM32 ...
  • TMS320F28335时钟(2) -----外设时钟初始化详解

    万次阅读 多人点赞 2016-01-02 19:54:07
    TMS320F28335通过外部时钟信号、OSC和PLL产生倍频...为了实现低功耗和提供高低频率时钟信号,需要把SYSCLKOUT进一步分频,本章主要讲解了对SYSCLKOUT分频产生低频时钟信号和高频时钟信号,完成外设时钟初始化的过程。
  • 本文介绍了在使用STM32单片机IO口复用功能时外设不工作的问题和解决方法。
  • STM32系统时钟超详解

    千次阅读 多人点赞 2022-04-11 22:16:21
    什么是时钟及作用,STM32四个时钟源,自己写系统时钟初始化函数实现超频
  • 时钟单元基本结构

    2020-11-13 00:15:40
    振荡器、锁相环主要为处理器CPU及相关外设提供可编程的时钟,每个外设时钟都可以通过相应的寄存器进行编程设置;看门狗可以监控程序的运行状态,提高系统的可靠性。图6.1为281x处理器内部各种时钟和复位电路的结构...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 57,226
精华内容 22,890
关键字:

外设时钟使能