<blockquote>
讯享网
超子物联网 HAL库学习 汇总入口:
超子物联网HAL库笔记:[汇总]
写作不易,如果您觉得写的不错,欢迎给博主来一波点赞、收藏~让博主更有动力吧!
汇编的启动文件(.s结尾的那个)在每次复位时,都是先调用SystemInit函数去配置时钟。 默认的最终时钟是 使用的是内部的HSI 内部高速时钟 8MHZ
- SystemInit首先会设置CR寄存器(时钟控制寄存器)把位0置1(使用内部高速时钟)。
- 然后会去设置CFGR寄存器,主要是设置路径,以及倍频之类的东西
我们可以调用 来把时钟输出8MHZ的方波到默认的PA8上验证一下。
在使用HAL库前要用HAL_Init()初始化一下。
main.c
讯享网
所以仅仅需要这两行就可以输出时钟了。示波器验证正确。
注意
- APB1最大时钟为36MHZ
- APB2最大时钟为72MHZ
需要设置的。和路线,其实就是在函数中一步步设置。
代码如下
main.c

rcc.c
讯享网
结果如下(转换成10进制):分别为 64M 32M 64M

流程如下

只修改了rcc.c的文件
rcc.c
结果:

HAL_Init 是 HAL库要求我们调用的第一个函数。
下面是HAL_Init调用时 做的工作:
- 把指令预取功能打开
- 设置中断分组
- 将Systick作为时间基准,配置为1ms的中断
- 初始化底层硬件
- 返回 HAL_OK
标准库和HAL库的很大的一个区别:Systick
- 每次进入Systick中断时 对32位全局变量uwTick累加1
- 提供了HAL_GetTick 获取uwTick全局变量
Systick时基最常用的地方就是各个外设采用阻塞轮训处理数据时,做超时判断、阻塞延时、

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/165289.html