野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 102759|回复: 489

【F1-固件库】什么是固件库、固件库文件分析, 你是老手也不一定能完全分析出来

  [复制链接]
发表于 2015-10-13 12:06:12 | 显示全部楼层 |阅读模式
掌握STM32的估计库的构成和每个库文件的作用,对我们使用库非常有帮助,我们这里以3.5版本的库来分析。
按照内核和外设的关系,我把库分成两个部分:内核相关处理器相关
_________________
|跟CM3(内核)相关的|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
cor_cm3.h
这个头文件实现了:1、内核结构体寄存器定义 2、内核寄存器内存映射 3、内存寄存器位定义。跟处理器相关的头文件stm32f10x.h实现的功能一样,一个是
针对内核的寄存器,一个是针对内核之外,即处理器的寄存器。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
misc.h :内核应用函数库头文件
misc.c:内核应用函数库
在CM3这个内核里面还有一些功能组件,如NVIC、SCB、ITM、MPU、CoreDebug,CM3带有非常丰富的功能组件,但是芯片厂商在设计MCU的时候
有一些并不是非要不可的,是可裁剪的,比如MPU、ITM等在STM32里面就没有。其中NVIC在每一个CM3内核的单片机中都会有,但都汇被裁剪,只能
是CM3内核的一个子集。在NVIC里面还有一个SysTick,是一个系统定时器,可以提供时基,一般为操作系统定时器所用。这两个文件提供了操作这些
组件的函数,并可以在CM3内核单片机直接移植。处理器中与这两个文件相对应的就是:stm32f10x_xxx.h和stm32f10x_xxx.c。
_____________
|跟处理器相关的:|即内核之外,由SOC芯片厂商添加的
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
启动文件
在F1大容易产品中用的是这个:startup_stm32f10x_hd.s,该文件由汇编编写,主要作用是:
1、设置初始SP
2、设置初始PC=Reset_Handler
3、Set the vector table entries with the exceptions ISR address
     意译过来就是:设置向量表的入口地址,并用异常地址初始化向量表。向量表里面保存的是异常响应的时候服务例程的入口地址。     STM32把向量表放在0地址开始的code区。
4、调用库函数SystemInit,把系统时钟配置成72M,SystemInit在库文件system_stm32f10.c定义
5、跳转到标号_mian,最终来到C的世界。
我们着重需要理解的就是第四和第五点
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
stm32f10x.h
这个头文件非常重要,可以说上帝之手。这个头文件实现了:1、处理器外设寄存器的结构体定义 2、处理器外设的内存映射 3、处理器外设寄存器的位定义
关于1和2我们暂时知道一概念即可,在其他的章节会有详细的说明。3:处理器外设寄存器的位定义,这个非常重要,具体是什么意思呢。我们知道一个寄存器
有很多个位,每个位写1或者写0的功能都是不一样的,处理器外设寄存器的位定义就是把外设的每个寄存器的每一个位写1的16进制数定义成一个宏,宏名即
用该位的功能名称表示,如果我们操作寄存器要开启某一个功能的话,就不用自己亲自去算这个值是多少,可以直接到这个头文件里面找。我们以片上外设
ADC为例,假设我们要启动ADC开始转换,根据手册我们知道是要控制ADC_CR2寄存器的位0:ADON,即往位0写1即可,即:ADC->CR2=0x00000001;
这是一般的操作方法。现在这个头文件里面有关于ADON位的位定义:#define  ADC_CR2_ADON     ((uint32_t)0x00000001),有了这个位定义,我们刚刚的
代码就变成了:ADC->CR2=ADC_CR2_ADON。这对于我们编程是何其方便,简直就是天降救星,感激之情无以言表啊。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
system_stm32f10x.c
这个文件的作用是里面实现了各种常用的系统时钟设置函数,有72M,56M,48,36,24,8M,我们使用的是是把系统时钟设置成72M。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
stm32f10x_xxx.h:外设xxx应用函数库头文件
这里面主要是实现外设某一功能的结构体,比如通用定时器有很多功能,有定时功能,有输出比较功能,有输入捕捉功能,而通用定时器有非常多的寄存器
要实现某一个功能,比如定时功能,我们根本不知道具体要操作哪些寄存器,这个头文件就为我们打包好了要实现某一个功能的寄存器,是以机构体的形式
定义的,比如通用定时器要实现一个定时的功能,我们只需要初始化TIM_TimeBaseInitTypeDef这个结构体里面的成员即可,里面的成员就是定时所需要
操作的寄存器。 具体的初始化函数在对应的stm32f10x_xxx.c文件中。
stm32f10x_xxx.c:外设xxx应用函数库
这里面写好了操作xxx外设的所有常用的函数,我们使用库编程的时候,使用的最多的就是这里的函数。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------









回复

使用道具 举报

发表于 2015-10-26 22:13:51 | 显示全部楼层
学习者





回复

使用道具 举报

发表于 2015-10-28 09:25:00 | 显示全部楼层
赞赞赞。。。。。
回复

使用道具 举报

发表于 2015-10-28 10:53:48 | 显示全部楼层
看看  顶                  
回复 支持 反对

使用道具 举报

发表于 2015-10-28 12:32:16 | 显示全部楼层
看看和书上讲的一样不~
回复 支持 反对

使用道具 举报

发表于 2015-10-28 22:13:47 | 显示全部楼层
过来学习,辛苦了.看看和书上讲的一样不~
回复 支持 反对

使用道具 举报

发表于 2015-10-29 10:18:38 | 显示全部楼层
回复

使用道具 举报

发表于 2015-10-29 10:50:04 | 显示全部楼层
看看,顶                        
回复 支持 反对

使用道具 举报

发表于 2015-10-29 14:31:30 | 显示全部楼层
新手  好东西  
回复 支持 反对

使用道具 举报

发表于 2015-10-29 16:38:11 | 显示全部楼层
火哥 有个小问题 3.5库中stm32_eval.h这个头文件是做什么的 我看新建的工程中默认会添加这个头文件 但是实际却没有用到
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-29 16:40:27 | 显示全部楼层
I_Origin 发表于 2015-10-29 16:38
火哥 有个小问题 3.5库中stm32_eval.h这个头文件是做什么的 我看新建的工程中默认会添加这个头文件 但是实 ...

这个实际不是库的文件,是ST的工程师根据他们的评估板写的头文件,跟他们的板子的硬件有关,eval就是评估的英文缩写。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-29 16:40:44 | 显示全部楼层
liuzx66 发表于 2015-10-28 22:13
过来学习,辛苦了.看看和书上讲的一样不~

有点不一样
回复 支持 反对

使用道具 举报

发表于 2015-10-29 17:20:06 | 显示全部楼层
本帖最后由 I_Origin 于 2015-10-29 18:01 编辑
fire 发表于 2015-10-29 16:40
这个实际不是库的文件,是ST的工程师根据他们的评估板写的头文件,跟他们的板子的硬件有关,eval就是评估 ...

原来是这样 !多谢火哥
回复 支持 反对

使用道具 举报

发表于 2015-10-29 22:48:45 | 显示全部楼层
不错不错 学习了
回复 支持 反对

使用道具 举报

发表于 2015-10-30 09:07:07 | 显示全部楼层
正好看看学习
回复 支持 反对

使用道具 举报

发表于 2015-10-30 11:14:50 来自手机 | 显示全部楼层
学习中………
回复

使用道具 举报

发表于 2015-10-30 12:02:39 | 显示全部楼层
火逼专注专一STM32,令人佩服啊
回复 支持 反对

使用道具 举报

发表于 2015-10-30 13:15:20 | 显示全部楼层
一等就是N个5分钟
回复 支持 反对

使用道具 举报

发表于 2015-10-30 14:01:27 | 显示全部楼层
111111111111111111111111
回复 支持 反对

使用道具 举报

发表于 2015-10-30 14:22:01 | 显示全部楼层
新手过来学习学习
回复 支持 反对

使用道具 举报

发表于 2015-10-30 17:13:00 | 显示全部楼层
看看  顶  
回复 支持 反对

使用道具 举报

发表于 2015-10-31 11:16:54 | 显示全部楼层
支持野火!!!支持每日一题!!!
回复 支持 反对

使用道具 举报

发表于 2015-11-1 23:59:23 | 显示全部楼层
好,回复下载看下
回复 支持 反对

使用道具 举报

发表于 2015-11-2 00:31:15 | 显示全部楼层
学习一下
回复

使用道具 举报

发表于 2015-11-2 16:14:55 | 显示全部楼层
为什么老要回复。。。。。。
回复 支持 反对

使用道具 举报

发表于 2015-11-2 18:41:31 | 显示全部楼层
前来学习报道
回复 支持 反对

使用道具 举报

发表于 2015-11-2 20:02:37 | 显示全部楼层
过来学学啦啦啦啊
回复 支持 反对

使用道具 举报

发表于 2015-11-2 21:11:58 | 显示全部楼层
来学习一下,辛苦火哥了
回复 支持 反对

使用道具 举报

发表于 2015-11-2 22:49:14 来自手机 | 显示全部楼层
刚学到串口通信,可对微库重设似懂非懂,比如fput(),火哥能讲下吗?
回复 支持 反对

使用道具 举报

发表于 2015-11-3 10:42:21 | 显示全部楼层
把外设相关解释为处理器相关很有意思,对初学者有帮助
回复 支持 反对

使用道具 举报

发表于 2015-11-3 14:03:46 | 显示全部楼层
看看先,,
回复

使用道具 举报

发表于 2015-11-3 14:28:42 | 显示全部楼层
1111111111111111111
回复 支持 反对

使用道具 举报

发表于 2015-11-4 18:16:33 | 显示全部楼层
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
回复 支持 反对

使用道具 举报

发表于 2015-11-4 18:30:34 | 显示全部楼层
看看,新手过来学习学习
回复 支持 反对

使用道具 举报

发表于 2015-11-4 23:10:48 | 显示全部楼层
看看,
回复

使用道具 举报

发表于 2015-11-5 07:39:59 | 显示全部楼层
正好看看学习
回复 支持 反对

使用道具 举报

发表于 2015-11-5 08:40:16 | 显示全部楼层
好好学习一下
回复 支持 反对

使用道具 举报

发表于 2015-11-5 11:56:12 | 显示全部楼层
安放多萨法守法
回复 支持 反对

使用道具 举报

发表于 2015-11-7 13:33:25 | 显示全部楼层
开源共享,共同进步。
回复 支持 反对

使用道具 举报

发表于 2015-11-7 19:46:07 | 显示全部楼层
我在网上找到的固件库中文版不全,来看看火哥的
回复 支持 反对

使用道具 举报

发表于 2015-11-7 20:46:04 | 显示全部楼层
好东西必须顶
回复 支持 反对

使用道具 举报

发表于 2015-11-7 20:54:54 | 显示全部楼层
6666666666666666
回复 支持 反对

使用道具 举报

发表于 2015-11-7 23:01:59 | 显示全部楼层
过来学习一下!初学者火哥请多关照
回复 支持 反对

使用道具 举报

发表于 2015-11-8 09:46:48 | 显示全部楼层
I need it.
回复

使用道具 举报

发表于 2015-11-8 11:07:11 | 显示全部楼层
初学者一枚,下载看看,谢谢火哥
回复 支持 反对

使用道具 举报

发表于 2015-11-8 11:42:53 | 显示全部楼层
看看。我的库和库介绍文件不同
回复 支持 反对

使用道具 举报

发表于 2015-11-9 11:45:01 | 显示全部楼层
不错,希望可以完全理解
回复 支持 反对

使用道具 举报

发表于 2015-11-9 15:15:12 | 显示全部楼层
赞一个        
回复 支持 反对

使用道具 举报

发表于 2015-11-9 15:31:18 | 显示全部楼层
顶一个,好好学习!
回复 支持 反对

使用道具 举报

发表于 2015-11-9 20:29:26 | 显示全部楼层
zxvcxcvxcv
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-4-25 10:32 , Processed in 0.043164 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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