2020.01.08

几个重要的参考网址

1.电子工程世界网
http://tags.eeworld.com.cn/tags/STM32H7
链接: link.
2.转:https://blog.csdn.net/simon223/article/list/2?t=1
链接: link.
————————————————
版权声明:本文为CSDN博主「Simon223」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Simon223/article/details/89533339

3.https://www.stmcu.com.cn/Designresource/design_list/cat_code/firmware_software/pro_cat/STM32/is_first/1
4.STM32Cube论坛
http://www.stm32cube.com/
链接: link.
5.https://blog.csdn.net/jxgz_leo/article/details/88600995

按照1网址的顺序学习

14.STM32H7的电源,复位和时钟系统

1)STM32的最小系统主要有五个部分组成:

电源电路、时钟源电路、BOOT启动电路、调试接口电路、复位电路
STM32最小系统介绍

2)供电(别搞晕了哟)

STM32H7学习之路继续(stm32H7系列2)

3)上电启动过程

当系统上电后,POR(Power on reset 上电复位)会检测VDD供电,当VDD大于POR设置的阀值时,将使能电压稳压器,注意看VDD那条线的变化。
看VCORE那条曲线,只要VOSRDY未就绪,就会一直处于复位状态。
一旦VCORE正常输出,系统将走出复位状态,内部高速RC振荡器HSI将使能。
HSI稳定后,将开始系统初始化,主要是Flash和可选字节的加载,这些都是由硬件完成的,CPU也将以受限的方式运行(主要是指不允许对RAM进行写操作)。
软件程序初始化系统,包括供电配置。当供电配置完成后,等待ACTVOSRDY位置1,完成置1后,CPU就进入正常的运行的模式,允许读写RAM了。
————————————————
版权声明:本文为CSDN博主「Simon223」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Simon223/article/details/89704170

4)为了实现各种低功耗模式,CPU和D1,D2,D3域支持的各种模式

STM32H7学习之路继续(stm32H7系列2)

5)电源去耦电容的选择

每个电源对 (VDD/VSS, VDDA/VSSA …)必须使用下述的滤波陶瓷电容去耦。这些电容必须尽量靠近芯片引脚,以确保器件正常工作。不建议去掉滤波电容来降低PCB 尺寸或成本,这可能导致器件工作不正常。

电源去耦的原因-和如何电源去耦

总结:电源去耦的最终目标是为了负载能够正常工作,使电源特性更加接近理想电源——能快速响应负载的电流需求、电压稳定、干净无噪声。使电路各部分之间通过电源产生的耦合干扰降至最小。
STM32H7学习之路继续(stm32H7系列2)
我的毕业设计的电源去耦

6)硬件复位

[1] 51单片机上电复位 (阻容复位) ,按键复位

所以,51一般都使用阻容复位来让其cpu在上电后在复位重启一次。如下图,去掉SW-PB和R6就是一个普通的51阻容复位,上电瞬间因为电容的压降不可突变的原理,电容等同导通。电容C23和电阻R27之间RESET点的电位就是VC5的电压,一直使能复位端。上电后VC5对C23充电,RESET点的电位降低趋近于GND的电平,后复位解除CPU开始正常工作。(其实这图的R27有点大,C23有点小)STM32H7学习之路继续(stm32H7系列2)

作者:陈俊直
链接:https://www.zhihu.com/question/21035836/answer/19153215
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
为什么需要复位,(知乎)

[2] STM32H7开发板的硬件复位原理图如下:

STM32H7学习之路继续(stm32H7系列2)
STM32这款CPU的复位引脚是低电平有效,即NRST为低电平时,CPU处于复位状态。
R173单的RC复位电路。当系统上电瞬间,C114电容两端电压可以认为是0,CPU处于复位状态。3.3V电源通过R173给C114充电,当C114的电压升到CPU的高电平门槛电压时,CPU退出复位状态转入运行状态。
在设计电路时,需要选择适当的R值和C值,以保证NRST低电平持续时间满足CPU复位最小脉宽的要求。
当按下S4轻触开关时,C114两端被短路接地,可实现手动复位CPU。
————————————————
版权声明:本文为CSDN博主「Simon223」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Simon223/article/details/89704170

7)复位序列

硬件复位之后,CPU 内的时序逻辑电路首先完成如下两个工作(程序代码下载到内部flash为例,flash首地址0x0800 0000)

将0x08000000位置存放的堆栈栈顶地址存放到SP中(MSP)。
将0x08000004 位置存放的向量地址装入 PC 程序计数器。
CPU 从 PC 寄存器指向的物理地址取出第 1 条指令开始执行程序,也就是开始执行复位中断服务程序 Reset_Handler。

STM32H7学习之路继续(stm32H7系列2)

复位中断服务程序会调用SystemInit()函数来配置系统时钟、配置FMC总线上的外部SRAM/SDRAM,然后跳转到C 库中__main 函数。由C库中的__main 函数完成用户程序的初始化工作(比如:变量赋初值等),最后由__main 函数调用用户写的 main()函数开始执行 C 程序。
————————————————
版权声明:本文为CSDN博主「Simon223」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Simon223/article/details/89679535

8)软件复位

除了上电和手动复位,程序设计设置中还经常要用到软件复位,即调用一条函数就可以实现复位功能。此函数已经由CMSIS软件包中的core_cm7.h文件提供,函数如下:

/**
\brief System Reset
\details Initiates a system reset request to reset the MCU.
/
__STATIC_INLINE void __NVIC_SystemReset(void)
{
__DSB(); /
Ensure all outstanding memory accesses included
buffered write are completed before reset /
SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
(SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
SCB_AIRCR_SYSRESETREQ_Msk ); /
Keep priority group unchanged /
__DSB(); /
Ensure completion of memory access */

for(;???? /* wait until reset */
{
__NOP();
}
}
软件复位反映到实际硬件上,就是给硬件复位部分发一个复位信号:

————————————————
版权声明:本文为CSDN博主「Simon223」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Simon223/article/details/89704170

9) RCC时钟控制

STM32H7有如下六种时钟可供使用:

相关文章:

  • 2021-05-31
  • 2021-07-10
  • 2021-06-12
  • 2021-11-21
  • 2022-12-23
  • 2021-11-21
  • 2021-11-17
  • 2021-12-23
猜你喜欢
  • 2021-04-29
  • 2021-10-30
  • 2022-12-23
  • 2021-11-21
  • 2021-11-21
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案