你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
STMCU小助手 发布时间:2023-2-26 15:01
7 U( N, @: f5 \

我们拿STM32F1参考手册为例,可以看到如下图寄存器:
5 i3 D1 z! @8 R7 S; a$ g, G/ S' z4 F


1 Q* A8 Y! U. Z0 @

640.jpg

+ G. F8 t2 w0 z

外设时钟使能和失能
我们都知道,配置STM32外设,会先开启对应的时钟(也就是使能外设时钟)。' M( ?" }0 [6 G
比如使能USART1时钟:
; N: F% H# I6 S  n
  1. RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);失能USART1时钟:
复制代码
失能USART1时钟:
  1. RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, DISABLE);
复制代码
& I+ ?* ]2 ]$ u5 a1 y" Q

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

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

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

  1. USART_DeInit(USART1);
    3 [  S5 p# G% o" r" F% o6 X
  2. DMA_DeInit(DMA1_Channel1);
复制代码
( a9 x6 U: V6 c


# \, |3 M9 R) g. [5 W) `

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

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

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

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

  1. RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, ENABLE);% W# v8 x( @$ J6 y) i, ?: m0 J

  2. 5 ]5 v7 u0 K5 a6 r
  3. USART_Init(USART1, &USART_InitStructure);
复制代码
+ z0 v, j5 q& n4 ]& D4 K
USART_Init(USART1, &USART_InitStructure);在STM32的库函数中,外设复位和清除都是成对的,所以,我们用库开发的好处,就是相对不容易犯一些错误。
* M  p2 e; t' P$ b! C$ g

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

转载自:嵌入式微处理器


. w: V, X7 H5 H9 O# S! [) E# G$ ]' r0 \/ Y0 `
赞 收藏 评论0 发布时间:2023-2-26 15:01

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版