硬汉嵌入式论坛

 找回密码
 立即注册
查看: 964|回复: 2
收起左侧

[HAL] HAL库启动流程

[复制链接]

2

主题

7

回帖

13

积分

新手上路

积分
13
发表于 2021-11-9 19:45:24 | 显示全部楼层 |阅读模式
HAL库 启动流程
用cubeMX给我的blue-pill小板子生成了一个空白程序。以这个程序为例子,一路调试,研究了一下他的启动流程。
启动文件 startup_stm32f103xb.s
启动文件由汇编语言编写,进行堆栈初始化,中断向量表初始化,和复位中断处理Reset_Handler.以及我还不太清楚具体是做什么的Dummy Exception Handlers。
启动流程如下:
image-20211109190231126.png
file://D:\Workspace\Blog\2021\HAL%E5%BA%93%E5%90%AF%E5%8A%A8%E6%B5%81%E7%A8%8B.assets\image-20211109190231126.png?lastModify=1636458244
这里内容相对底层,我也没有太多自己的理解,所以不再复述,直接引用安富莱用户手册中的内容了(硬汉写手册的时候没关语法检查,这个红线很惹眼哈哈哈)。
查资料的时候发现,这里很多东西都是《cortex-m3权威》指南上有系统描述。先挖个坑,以后有机会回去看一看的。
main.c
先上图:
image-20211109192127751.png
file://D:\Workspace\Blog\2021\HAL%E5%BA%93%E5%90%AF%E5%8A%A8%E6%B5%81%E7%A8%8B.assets\image-20211109192127751.png?lastModify=1636458244
main()函数中执行了HAL_Init()和SystemClock_Config(),两个函数,后面就是外设初始化和用户函数了
HAL_Init()
对所有外设Reset,初始化 Flash接口 和 系统心跳。
SystemClock_Config()
在此之前一直使用HSI作为各个Clock的振荡源,在这里进行晶振和时钟的配置。配置结束后会重设系统心跳,使其依然保持1000Hz。



回复

使用道具 举报

2

主题

7

回帖

13

积分

新手上路

积分
13
 楼主| 发表于 2021-11-9 19:55:42 | 显示全部楼层
之前一直是做软件的,只是用rtthread写过上层逻辑,对基础一直没了解过,所以基础不牢,地动山摇。现在重新开始学一学。
有理解的不对的地方,欢迎各位大神斧正。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2021-11-10 08:34:19 | 显示全部楼层
谢谢楼主分享。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 13:18 , Processed in 0.158985 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表