HC32f460启动过程和时钟分析
软件环境系统:win10
sdk版本:hc32f460_ddl_Rev2.0.0
数据手册版本:HC32F460系列用户手册 Rev1.21.pdf
ide:keil5
开发板:官方评估板(EVB-HC32F460)
时间:2021.7.1
1. 启动过程
1.1 第一步:读取地址0x400上的内容
数据手册中写道如下:
我们要注意两个地方:
复位解除后执行,这就说明,这个读flash的0x400地址是要优于程序的,也就是要在程序启动前执行。
由硬件电路读取,这就说明,这个读取的位置无法人为控制,就是0x400,我们只能在程序下载的时候将信息写道0x400开始的位置。
这个0x400配置了很有用的东西,其中就有看门狗,其实stm32的看门狗一直有一个缺陷,那就是若在芯片启动到main函数执行这个时间发生了跑飞,那么程序就没办法重启,就死机了,而hc32避免了这个问题,可以在复位解除的时候直接配上看门狗,提高了系统的稳定性。至于其他功能,请自行查阅用户手册。
复位和系统时钟配置
这段代码在汇编中执行,也就是.s文件,这个与传统cortex-m的芯片一样,都是执行reset_handler,配置系统时钟systeninit,在执行__main,最后跳到用户函数main,因为和传统stm32的一样,这个不展开细讨论。 要注意这个配置系统时钟systeninit往往使用的是芯片内部的高速时钟,这个配置系统时钟函数由sdk提供,不建议直接在这一步修改为外部时钟(不要随意修改sdk的东西),所以等到执行用户程序的时候需要重新配置到外部高速时钟。 同时要注意在执行配置系统时钟systeninit函数,以及之前这段时间,由于没有时钟配置,所以使用的是内部高速时钟直连的方式驱动的,所以那段程序执行是很慢的。 在系统刚开始启动的时候是使用的默认的时钟配置吗 dd5yit 发表于 2022-11-17 14:42
我们要注意两个地方:
复位解除后执行,这就说明,这个读flash的0x400地址是要优于程序的,也就是要在 ...
整个这个流程是固定的妈 不可以由用户进行更改吧 dd5yit 发表于 2022-11-17 14:47
同时要注意在执行配置系统时钟systeninit函数,以及之前这段时间,由于没有时钟配置,所以使用的是内部高速 ...
一般情况下 启动时间大概是多长呢 HC32F460的时钟其实就是片内时钟和片外时钟两种
片内时钟有三种:
1.HRC 片内高速时钟
2.MRC 片内中速时钟
3.LRC 片内低速时钟
片外时钟有两种:
1.XTAL 片外高速时钟
2.XTAL32 片外低速时钟 外设挂在哪个总线上清晰了,那怎么配置时钟是多少合适呢 kxsi 发表于 2022-12-6 16:52
外设挂在哪个总线上清晰了,那怎么配置时钟是多少合适呢
有两个方法可以参考,第一参考用户手册,第二参考厂家给的例程
页:
[1]