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

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

3天内不再提示

STM32片上外设时钟使能 失能和复位的区别

黄工的嵌入式技术圈 ? 来源:黄工的嵌入式技术圈 ? 2020-03-06 15:31 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

1

RCC时钟说明

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

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

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

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

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标准外设库。

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

    关注

    31

    文章

    5440

    浏览量

    124999
  • STM32
    +关注

    关注

    2295

    文章

    11035

    浏览量

    366003
  • 时钟
    +关注

    关注

    11

    文章

    1903

    浏览量

    133377
  • 复位
    +关注

    关注

    0

    文章

    179

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    电气与建国际达成战略合作

    近日,电气股份有限公司与中建国际建设集团有限公司(以下简称“建国际”)正式签署战略合作协议。中建国际集团副总裁、新能源国际投资联盟
    的头像 发表于 06-19 15:44 ?499次阅读

    STM32CubeMX配置STM32G070RBT6TR时为什么无法使PVD中断?

    STM32CubeMX 配置STM32G070RBT6TR时无法使PVD中断
    发表于 06-18 07:59

    STM32CubeMX配置STM32G070RBT6TR时无法使PVD中断怎么办?

    STM32CubeMX 配置STM32G070RBT6TR时无法使PVD中断
    发表于 06-16 06:32

    AS32X601驱动系列教程 SMU_系统时钟详解

    时钟复位的管理。在默认状态下SMU工作在IDLE状态。只有接收到PMU的使信号后才开始工作。SMU模块会根据PMU的指令自动配置COR、AXIBUS0/1/2等总线的
    的头像 发表于 05-23 16:01 ?367次阅读
    AS32X601驱动系列教程 SMU_系统<b class='flag-5'>时钟</b>详解

    电气与Europower达成合作

    近日,在2025 Intersolar Europe展会现场,电气股份有限公司(以下简称“电气”)与土耳其知名新能源公司Europower Enerji(以下简称“Europo
    的头像 发表于 05-14 18:00 ?585次阅读

    stm32h7s78 rcc pll2时钟使失败的原因?

    使用的板卡是 stm32h7s78-dk,启动流程是 boot + flash app 的方式,boot 参考的 xip 示例,xip 时钟绑定在 hclk 。 问题 在 app 代码中,初始化
    发表于 03-14 10:33

    STM32F103高级定时器中,开启单脉冲模式是不是会立刻清除计数器使位?

    为256,通过debug查看,程序运行后RCR计数器已被设置为4,单脉冲模式被置位,计数器。也就是说,最后4个脉冲还没开始输出计数器就已经了。因此猜想是不是因为在2的更新中断中
    发表于 03-10 07:34

    使prj_on后,DLPA2005以4hz频率一直复位,是什么原因?

    DLP2010LCDLPC3470+DLPA2005+DLP2010 chipset硬件组合,硬件组合是完整的,DMD是连接在DLPC3470的。使prj_on后,DLPA2005以4hz频率一直
    发表于 02-19 07:32

    电气埃及Abydos储项目顺利发货

    近日,电气为埃及Abydos储项目提供的5MW集中式变流升压一体机顺利发货,是电气携手天合光能,助力埃及推进绿色能源转型,实现国际
    的头像 发表于 01-22 09:53 ?455次阅读

    请问如何在ADS1235评估板使交流桥压激励?

    请问如何在ADS1235评估板使交流桥压激励?而且是在贵公司提供的GUI界面下,不用编程,能否实现交流桥压激励?我想试一下交流桥压时的偏移多大?
    发表于 11-22 07:23

    TPA3110功放使时就会自动保护怎么解决?

    我在使用TPA3110做一款产品,只需要输入固定频率不同幅度的信号,信号范围在28KHz左右。 但是现在出现一个问题就是,在/SD 使前,如果RINP已经有一个幅度稍微大点的信号,功放使
    发表于 10-31 06:11

    TPA3255在复位引脚禁用和使的时候会出现啪嗒声,怎么解决?

    TPA3255芯片我参考官方的EVM电路做了2款PCB,购买了2TPA3255芯片,现在无法解决复位引脚在使和禁用时的啪嗒声。 电路前级是PCM5242,TPA3255处于BTL
    发表于 09-29 06:25

    具有精密阈值使引脚特性的精密延迟启动

    电子发烧友网站提供《具有精密阈值使引脚特性的精密延迟启动.pdf》资料免费下载
    发表于 09-23 12:26 ?0次下载
    具有精密阈值<b class='flag-5'>使</b><b class='flag-5'>能</b>引脚特性的精密延迟启动

    使用精度阈值使引脚防止电池过度放电

    电子发烧友网站提供《使用精度阈值使引脚防止电池过度放电.pdf》资料免费下载
    发表于 09-04 10:12 ?0次下载
    使用精度阈值<b class='flag-5'>使</b><b class='flag-5'>能</b>引脚防止电池过度放电

    STM32复位电路用复位芯片和阻容复位电路区别

    STM32是一款广泛使用的微控制器,其复位电路设计对于系统的稳定性和可靠性至关重要。本文将详细介绍STM32复位电路中使用复位芯片和阻容
    的头像 发表于 08-06 10:26 ?3045次阅读