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

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

3天内不再提示

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

jf_pJlTbmA9 来源:strongerHuang 作者:strongerHuang 2023-10-17 11:48 次阅读

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

在这一章节就可以看到有两类寄存器

peripheral reset register(RSTR)外设复位寄存器。

peripheral clock enable register(ENR)外设时钟使能寄存器。

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

wKgaomUD8YCAXiLmAASaLTuRZnU158.png

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

外设时钟使能和失能

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

比如使能USART1时钟:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

失能USART1时钟:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, DISABLE);

前面分享过一篇文章《STM32为什么要先开启外设时钟?》,里面有说:为什么我们要先开启STM32外设时钟。

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

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

复位外设

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

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

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

USART_DeInit(USART1);
DMA_DeInit(DMA1_Channel1);

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

失能外设时钟和复位外设区别

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

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

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

来源:嵌入式专栏(作者 | strongerHuang)
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理

审核编辑 黄宇

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

    关注

    30

    文章

    5032

    浏览量

    117741
  • STM32
    +关注

    关注

    2240

    文章

    10674

    浏览量

    348788
  • 时钟
    +关注

    关注

    10

    文章

    1480

    浏览量

    130306
  • 复位
    +关注

    关注

    0

    文章

    159

    浏览量

    24047
收藏 人收藏

    评论

    相关推荐

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

    相信很多朋友都曾遇到过这种坑,我最初学习STM32的时候同样也遇到过。下面,我就来说说为什么我们要先开启STM32外设模块时钟,再对其外设
    的头像 发表于 10-20 14:10 3858次阅读
    <b class='flag-5'>STM32</b>为什么要先开启<b class='flag-5'>外设</b><b class='flag-5'>时钟</b>?

    为使外设如何理解

    为使外设如何理解
    发表于 10-16 18:59

    STM32复位时钟控制(RCC)

    ,USBRST,CANRSTDACRST:复位DAC接口PWRRST:复位电源接口BKPRST:复位备份接口WWDGRST:复位窗口看门狗1.3.6 AHB
    发表于 02-12 15:41

    STM32片上外设时钟使复位区别

    时钟的寄存器,一种是复位外设的寄存器。2外设时钟使
    发表于 11-15 20:30

    外设时钟使语句的问题

    主芯片使用的是STM32F207ZET6.如下图所示,TIM3挂载在APB1总线下面的但是有个疑问,底下外设时钟使的语句都能使用吗,有什么区别
    发表于 08-04 13:10

    STM32F2技术培训_复位时钟控制RCC

    STM32F2技术培训_复位时钟控制RCC
    发表于 12-03 17:36 0次下载

    STM32复位来源 以及系统和内核复位区别

    STM32复位来源、以及系统和内核复位区别
    的头像 发表于 02-28 17:13 7163次阅读

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

    STM32片上外设时钟使能、失能和复位区别
    的头像 发表于 03-06 15:31 5517次阅读

    CM3(STM32) 内核复位与系统复位区别及应用

    CM3(STM32)内核复位与系统复位区别及应用
    的头像 发表于 03-20 09:43 4336次阅读
    CM3(<b class='flag-5'>STM32</b>) 内核<b class='flag-5'>复位</b>与系统<b class='flag-5'>复位</b><b class='flag-5'>区别</b>及应用

    STM32时钟基础内容和常见问题

    RCC,Reset and Clock Control(复位时钟控制),在绝大部分MCU芯片中都包含复位时钟控制模块,也是MCU重要的组成部分。 相比于以前51单片机,现在
    的头像 发表于 04-02 16:39 5540次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>时钟</b>基础内容和常见问题

    STM32H7教程】第14章 STM32H7的电源,复位时钟系统

    STM32H7教程】第14章 STM32H7的电源,复位时钟系统
    发表于 12-09 11:21 35次下载
    【<b class='flag-5'>STM32</b>H7教程】第14章 <b class='flag-5'>STM32</b>H7的电源,<b class='flag-5'>复位</b>和<b class='flag-5'>时钟</b>系统

    STM32电源管理、复位时钟

    第二篇文章——STM32电源、复位时钟电源管理电源电压调节器可编程电压监测器(PVD: Programmable voltage detector )低功耗模式复位Cortex-M3
    发表于 01-05 14:25 10次下载
    <b class='flag-5'>STM32</b>电源管理、<b class='flag-5'>复位</b>、<b class='flag-5'>时钟</b>

    STM32学习笔记】技巧2 - STM32复位类型及区别

    系统复位、电源复位和备份域复位。每一种型号的STM32都包含有这三种复位类型!1.1、系统复位
    发表于 01-17 12:54 10次下载
    【<b class='flag-5'>STM32</b>学习笔记】技巧2 - <b class='flag-5'>STM32</b>的<b class='flag-5'>复位</b>类型及<b class='flag-5'>区别</b>

    STM32复位来源、以及系统和内核复位区别

    每一块STM32中都有这么一个RCC复位时钟控制模块。STM32复位为三类:系统复位、电源
    发表于 02-10 10:30 6次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>复位</b>来源、以及系统和内核<b class='flag-5'>复位</b><b class='flag-5'>区别</b>

    stm32复位 内核复位和系统复位

    内核复位:它会使STM32内核(Cortex-M)进行复位,而不会影响其外设,如GPIO、TIM、USART、SPI等这些寄存器的复位
    的头像 发表于 08-01 17:21 3331次阅读