历史上的今天
返回首页

历史上的今天

今天是:2025年01月29日(星期三)

2021年01月29日 | STM32片上外设时钟使能、失能和复位的区别

2021-01-29 来源:eefocus

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


推荐阅读

史海拾趣

GeneSiC Semiconductor公司的发展小趣事

GeneSiC Semiconductor公司的发展故事

故事一:技术先驱与高性能SiC器件的开创

GeneSiC Semiconductor自成立以来,便致力于高性能碳化硅(SiC)功率器件的研发与生产。作为碳化硅技术的先驱,GeneSiC在2000年代初便开始布局,并成功开发出多款领先业界的SiC二极管和MOSFET技术。其产品覆盖从650V到6.5kV的广泛电压范围,满足从20W到20MW不同应用场景的需求。这些技术突破不仅提升了系统效率,还显著增强了设备的可靠性和耐用性,为汽车、工业和国防等多个领域带来了革命性的变化。

故事二:政府机构项目的深度参与

GeneSiC与全球多个政府机构紧密合作,参与了众多前沿技术研发项目。例如,为美国能源部(DOE)开发的6.5kV SiC晶闸管用于储能系统,以及为NASA金星探测任务提供的500°C单片集成SiC超结晶体管JBS二极管(MIDSJT)。这些项目不仅展示了GeneSiC在极端环境下的技术实力,还推动了SiC技术在关键领域的广泛应用。通过不断的技术创新与合作,GeneSiC在提升全球科技水平方面做出了重要贡献。

故事三:电动汽车市场的深度布局

随着电动汽车市场的快速崛起,GeneSiC迅速调整战略,将SiC技术应用于电动汽车的关键部件中。其高性能的SiC MOSFET和二极管不仅提升了电动汽车的充电效率和续航里程,还降低了电池系统的热损耗和重量。此外,GeneSiC还为快速充电站开发了高效、稳健的解决方案,如SK Signet的350kW快速充电器便采用了GeneSiC的SiC二极管,为电动汽车的快速普及提供了有力支持。

故事四:工业领域的广泛应用

在工业领域,GeneSiC的SiC技术同样展现出强大的竞争力。以埃克西德技术为例,该公司采用GeneSiC的SiC功率半导体,确保了其下一代工业材料处理设备的高频快速充电器的可靠性、安全性和易用性。GeneSiC的SiC MOSFET和MPS肖特基二极管在高频、大功率的应用场景下表现出色,为工业自动化和智能制造提供了强有力的技术支持。

故事五:与纳微半导体的战略合并

2022年,氮化镓(GaN)功率芯片领导者纳微半导体宣布收购GeneSiC Semiconductor,这一战略合并标志着两家公司在下一代功率半导体领域的强强联合。合并后的公司不仅拥有全面的SiC和GaN技术组合,还通过资源整合和市场拓展,进一步巩固了其在全球功率半导体市场的领先地位。GeneSiC的丰富技术积累和纳微半导体的市场渠道优势相结合,为双方带来了新的增长动力和市场机遇。

Crouzet公司的发展小趣事

随着市场竞争的加剧,Crouzet开始注重提供定制化的解决方案,以满足客户不断变化的需求。公司凭借强大的研发能力和丰富的行业经验,能够根据客户的具体需求,提供量身定制的产品和服务。这种以客户需求为导向的经营理念,使得Crouzet在市场上赢得了更多的客户和合作伙伴。

Circuit Technology Inc公司的发展小趣事

随着国内市场的饱和,CTI开始将目光投向海外市场。公司制定了国际化发展战略,积极开拓国际市场。通过设立海外分支机构、参加国际展会等方式,CTI的产品逐渐打入国际市场,并获得了良好的口碑。同时,公司还与国外企业开展技术合作和产品研发,进一步提升了公司的国际化水平。

Excel Cell Electronic Co Ltd公司的发展小趣事

自1981年成立以来,ECE公司始终将技术创新作为发展的核心驱动力。早期,公司专注于电子元器件的研发和生产,通过引进国际先进技术,并结合本地市场需求进行创新,成功推出了一系列具有竞争力的产品。随着技术的不断进步,ECE公司不断加大研发投入,积极探索新的应用领域,逐渐成为电子行业的领军企业。

CNC Tech公司的发展小趣事

CNC Tech公司深知,在竞争激烈的电子行业中,品质是赢得客户信任和市场口碑的关键。因此,公司始终坚持品质至上的原则,从原材料采购到生产制造的每一个环节都严格把控品质。CNC Tech还建立了完善的品质管理体系,通过严格的质量检测和持续的技术改进,确保每一台出厂的设备都能达到客户的期望和要求。正是凭借这种对品质的执着追求,CNC Tech赢得了广大客户的信赖和好评。

DAPAudio公司的发展小趣事

DAPAudio公司自成立以来,一直将技术创新作为公司发展的核心动力。在音频处理领域,DAPAudio率先推出了基于先进算法的数字音频处理器,其独特的音质优化技术迅速赢得了市场的认可。随着技术的不断迭代和更新,DAPAudio的产品逐渐在高端音频市场占据了一席之地。

问答坊 | AI 解惑

基于单片机的电子密码锁实际设计

基于单片机的电子密码锁实际设计…

查看全部问答>

请教:PWM 到底是什么?怎么使用?谢谢!

请教: 是这样的,直接电机的一条线接 VCC (通过改变电流的大小能改变输出力的大小) 假设电机接在 20V 的电压上 现在用 PWM 来改变电流 PWM 由单片机产生 问题1: 我要怎么接线 才能使通过单片机控制电流大小? 2: PWM 到底是控制电流大 ...…

查看全部问答>

Pos机的原理,用什么语言开发?C#?Java?

公司交给我让我先了解下pos机,但是我对Pos机一点不了解,公司做的pos机是和银行没有关系的。就是给本公司的会员使用 想问下大虾: 1:Pos机的相关硬件有什么设备 2:用什么语言开发,能运行到什么系统,是否认能兼容 3:软硬件两者怎么相互嵌 ...…

查看全部问答>

SD WiFi 插拔之后工作不正常(Wince 5.0) Urgent

SD WiFi在首次插入后均可以与指定AP(Access Point)成功连接,后经过一次拔插后,就无法工作了,只有重新系统才可以。经Trace log可知,无法得到BSSI List,其列表为空,由此可知,WiFi Adapter处于异常状态,至今没有找到具体原因,曾试过NdisReset ...…

查看全部问答>

单片机输出端可以直接接动态数码管吗?

有的地方说驱动电流不够,需要加锁存器进行驱动,是吗?…

查看全部问答>

STM32 ,用固件库写一个流水灯的程序需要哪些库?

STM32 ,用固件库写一个流水灯的程序需要哪些库?我知道肯定要用GPIO,RCC要用到USART,NVIC吗?为什么啊? 初学者求助…

查看全部问答>

MSP430F149 串口1设置问题

***************************************************************************************************/ #include \"io430.h\" #include     //引用本征函数需包含本头文件 #include \"nbc430.h\" #define uchar unsigned ...…

查看全部问答>

在厦门电子行业工作的前辈请进来帮个忙

我是今年6月毕业的本科生 在上海读的书,在上海工作直到9月末,现在想回到厦门工作 今天有家公司发给了我offer(厦门大洋通信),职位是嵌入式软件工程师助理 请了解这家公司的前辈们介绍下此公司各方面的情况 还有想了解下厦门市的工资水平, ...…

查看全部问答>

跪求大神,,这程序错在哪

                              #include                 //器件配置文件 #include #define   ...…

查看全部问答>