完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
4 个讨论
|
|
一、STM32复位产生 系统复位将复位除时钟控制寄存器CSR中的复位标志和备份区域中的寄存器以外的所有寄存器。 当以下事件中的一件发生时,产生一个系统复位: 1. NRST管脚上的低电平(外部复位) 2. 窗口看门狗计数终止(WWDG复位) 3. 独立看门狗计数终止(IWDG复位) 4. 软件复位(SW复位) 5. 低功耗管理复位 当以下事件中之一发生时,产生电源复位: 1. 上电/掉电复位(POR/PDR复位) 2. 从待机模式中返回 二、STM32复位过程 在STM32F10xxx里,可以通过BOOT[1:0]引脚选择三种不同启动模式。 在系统复位后,SYSCLK的第4个上升沿,BOOT管脚的值将被锁存。用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。 在从待机模式退出时,BOOT管脚的值将被被重新锁存;因此,在待机模式下BOOT管脚应保持为需要的启动配置。在启动延迟之后, 因为固定的存储器映像,代码区始终从地址0x0000 0000开始,而数据区(SRAM)始终从地址0x2000 0000开始 根据选定的启动模式,主闪存存储器、系统存储器或SRAM可以按照以下方式访问: ● 从主闪存存储器启动:主闪存存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x0800 0000)访问它,即闪存存储器的内容可以在两个地址区域访问,0x0000 0000或0x0800 0000。 ● 从系统存储器启动:系统存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x1FFF F000)访问它。 ● 从内置SRAM启动:只能在0x2000 0000开始的地址区访问SRAM。 在启动延迟,离开复位状态后,CM3 做的第一件事就是读取下列两个32 位整数的值: 从地址0x0000,0000 处取出堆栈顶的地址(MSP 的初始值)。 从地址0x0000,0004 处取出PC 的初始值——这个值是复位向量,LSB 必须是1。然后从这个值所对应的地址处取指。 因为CM3 使用的是向下生长的满栈,所以MSP 的初始值必须是堆栈内存的末地址加1。举例来说,如果你的堆栈区域在0x20007C00‐0x20007FFF 之间,那么MSP 的初始值就必须是0x20008000。 向量表跟随在MSP 的初始值之后——也就是第2 个表目。要注意因为CM3 是在Thumb态下执行,所以向量表中的每个数值都必须把LSB 置1(也就是奇数)。正是因为这个原因,图3.18 中使用0x101 来表达地址0x100。当0x100 处的指令得到执行后,就正式开始了程序的执行。在此之前初始化MSP 是必需的,因为可能第1 条指令还没执行就会被NMI 或是其它fault 打断。MSP 初始化好后就已经为它们的服务例程准备好了堆栈。 启动代码: ; Reset Handler Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT __main LDR R0, =__main BX R0 ENDP |
|
|
|
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
1129 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1075 浏览 2 评论
2175 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1269 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1693 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 05:17 , Processed in 0.807054 second(s), Total 62, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号