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

发布者:幸福梦想最新更新时间:2021-01-29 来源: eefocus关键字:STM32  片上外设  时钟使能  失能  复位 手机看文章 扫描二维码
随时随地手机看文章

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


关键字:STM32  片上外设  时钟使能  失能  复位 引用地址:STM32片上外设时钟使能、失能和复位的区别

上一篇:谈谈STM32(CM3)的Faults异常
下一篇:说说STM32调试DEBUG相关知识

推荐阅读最新更新时间:2024-11-17 03:15

基于TFTP协议实现STM32的IAP
0引言 随着嵌入式技术以及32位嵌入式微处理器的发展,嵌入式系统的应用日益广泛,嵌入式产品与人们的生产、生活结合得越来越紧密。然而,嵌入式系统的设计不可能一步到位,尤其是嵌入式软件,需要不断修改和完善。当程序出错或用户需求变更时,传统的方法是安排技术人员到现场或将设备回收对控制器芯片重新编程。这种方式费时费力,效率低下[1]。采用IAP(In-Application Programming)技术则可以免除拆卸设备、烧录MCU(Microcontroller Unit)等繁琐的过程。IAP即“在应用中编程”,是指产品发布后在运行过程中通过预留的通信接口(如USART、I2C、CAN、USB、以太网接口等)对微控制器MCU中的软件进行
[单片机]
基于TFTP协议实现<font color='red'>STM32</font>的IAP
stm32低功耗模式下IO口状态
1、睡眠模式(Cortex-M3内核停止,外设运行) 这个时候,如果不锁定IO的话,有外部触发的IO电平会改变。 2、停止模式(所有时钟停止) 这个时候,外设已经停止工作,保持原来的电平,锁不锁都一样 3、待机模式(1.8V电源关闭) 在此情况下,IO都是高阻,除了复位引脚和唤醒引脚电平会变化。 怪不得我的灯有时候一直亮着。
[单片机]
STM32有关GPIO引脚的一些问题
/* 名称:STM32有关GPIO引脚的一些问题 说明:今天在编写一个键盘扫描程序的时候,出现了一些问题。 有的引脚能读出电平状态、有点引脚确一直读不出状态。改了一下午,查了好久,终于有点眉目了。现简述如下: 我在用引脚的时候,使用的是PB0、PB1、PB2、PB3、PB4…,将其引脚配置的方式是上拉输入。PB2、PB3、PB4一直有问题。PB0、PB1是可以读出状态的(但是只能单独使用)。 对于PB2来说,其不仅是PB2,它也是BOOT1引脚。当系统复位之后,开始的几个系统时钟使用的是BOOT1,用来判断系统从何处读取置零。之后,PB2就可以作为普通的IO引脚使用了。由于开发板设置的是从内部FLASH启动,BOOT1一直是置零的
[单片机]
STM32 SWD模式下SPI3无法使用的问题
总结一下spi3的问题,因为spi3的nss口与JTAG有共用引脚,所以配置错误会导致SPI3无法使用。需要注意以下三点就可以了: 1.将PA15配置为普通IO口,GPIO_Mode_Out_PP 2.开启AFIO时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); 3.关闭JTAG功能,使能SWD GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE) ; 其他的SPI口正常配置,因为板子重启后默认为JTAG模式,虽然在调试时使用了SWD,但PA15依然不是普通的IO口,当把它重新配置时,一定要开启AFIO
[单片机]
ST联手Fieldscale为基于STM32的智能设备带来简单直观的触控体验
半导体供应商意法半导体(STMicroelectronics,简称ST; 纽约证券交易所代码:STM)与ST授权合作伙伴、仿真软件提供商Fieldscale合作,简化基于STM32微控制器(MCU)的智能设备的触控用户界面开发过程。 触控功能方便省事,对最终用户很有吸引力,并且可以提高产品的可靠性、入口防护级别和成本效益。另一方面,触控界面开发具有挑战性。当采用常规的迭代设计方法时,优化系统,消除意外影响并确保触控响应性在任何操作条件下都保持一致,用户可能需要开发多个原型。 现在,意法半导体和Fieldscale公司合作,让Fieldscale的SENSE开发平台支持意法半导体的Arm® Cortex®-32位MCU
[单片机]
ST联手Fieldscale为基于<font color='red'>STM32</font>的智能设备带来简单直观的触控体验
基于STM32平台的μC/OS-II上的μC/GUI移植过程
μC/GUI是一种专为嵌入式应用设计的通用图形接口软件。本文详细介绍了μC/GUI的结构框架和基于STM32平台的μC/OS-II上的μC/GUI移植过程,并在此基础上进行图形界面设计;阐述了μC/GUI的窗口管理机制,提出了实现μC/GUI中文小型字库的两种方法并采用存储设备解决了图形显示的闪烁问题。 嵌入式系统的图形用户界面,要求具有占用资源少、性能高、可靠性高、可移植、可配置等特点,μC/GUI就是这样一种专门为嵌入式应用设计的图形用户界面软件。μC/GUI可应用于多任务环境中,同时使用实时操作系统与μC/GUI,既可以发挥优先级的实时性,又能实现良好的人机界面。本文使用Cortex-M3内核的STM32平台,介绍了
[单片机]
基于<font color='red'>STM32</font>平台的μC/OS-II上的μC/GUI移植过程
浅谈QSPI的特点以及QSPI的三种工作模式
意法半导体STM32F7系列MCU采用高性能的ARM Cortex-M7核心,借助ST的ART Accelerator™和L1缓存,STM32F7微控制器可提供Cortex-M7内核的最高理论性能,而无论代码是从嵌入式闪存还是由外部存储器执行的:1082 CoreMark / 462 DMIPS在216 MHz f CPU。带有新外围设备的智能架构。可利用STM32系列丰富的外设资源来外扩SRAM芯片。STM32F7支持QSPI. 意法半导体MCU STM32F7系列释放了Cortex-M7内核,AXI和多AHB总线矩阵,用于互连内核,外围设备和存储器。具有高达2MB的嵌入式闪存,在某些设备上具有读-写功能。两个用于以太网的通
[单片机]
STM32 MPU是什么产品?了解嵌入式系统中微处理器的新变化
微控制器 (MCU)和微处理器(MPU)有哪些不同之处?简单来说,两者都是嵌入式系统的大脑。几年前,两者之间有非常明显的区别,功能截然不同,对开发者的研发技能要求也大不相同。如今,这两个术语仍然存在,但创新使得两者之间的分界线日趋模糊。以前只用 MCU 的系统集成商现在发现,用MPU更容易,ST也注意到了这一点。微处理器已经成为某些开发者手中的秘密武器,借助其原生的功能或运行嵌入式 Linux 的能力,他们能够开发新的应用或进入新的市场。因此,让我们一起深入研究一下这个新趋势。 故事的开头 MCU的出现是替代 MPU 当业界在上个世纪七十年代推出首个微控制器时,人们希望找到一种替代耗电量太大且设计复杂的 MPU
[单片机]
<font color='red'>STM32</font> MPU是什么产品?了解嵌入式系统中微处理器的新变化
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved