STM32学习基础知识

一:学习的原因

        1.1 嵌入式技术知识结构

        嵌入式是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。

        嵌入式开发的技术人员需要对计算机技术的各个方面都有了解,而在这个体系之中,每一个小部分又可以单独做出一番,因此嵌入式的技术要求比较高。

图1-1 嵌入式技术知识结构

 1.2 CMSIS标准

        我们知道由ST公司生产的STM32采用的是Cortex-M3内核,内核是 整个微控制器的CPU。该内核是ARM公司设计的一个处理器体系架构, ARM公司并不生产芯片,而是出售其芯片技术授权。ST公司或其他芯片 生产厂商如TI,负责设计的是在内核之外的部件,被称为核外外设或 片上外设、设备外设。如芯片内部的模数转换外设ADC、串口UART、定 时器TIM等。

        内核与外设,类似PC上的CPU与主板、内存、显卡、硬盘的关系, 见图1-2。

图1-2 内核与外设的关系

         因为基于Cortex的某系列芯片采用的内核都是相同的,区别主要 为核外的片上外设的差异,这些差异却导致软件在同内核、不同外设 的芯片上移植困难。为了解决不同芯片厂商生产的Cortex微控制器软 件的兼容性问题,ARM与芯片厂商建立了CMSIS标准(Cortex Microcontroller Software Interface Standard)。

        所谓CMSIS标准,实际是新建了一个软件抽象层,见图1-3。 

图1-3 CMSIS架构

 CMSIS标准中最主要的是CMSIS核心层,它包括:

内核函数层:其中包含用于访问内核寄存器的名称、地址定义, 主要由ARM公司提供。

设备外设访问层:提供了片上的核外外设的地址和中断定义,主 要由芯片生产商提供。

可见CMSIS层位于硬件层与操作系统或用户层之间,提供了与芯片 生产商无关的硬件抽象层,可以为接口外设、实时操作系统提供简单 的处理器软件接口,屏蔽了硬件差异,这对软件的移植有极大的好 处。STM32固件库就是按照CMSIS标准建立的。

二:库目录,文件简介

        本次讲解用STM32的3.5版本的库,这个库可以直接从官网进行下载,也可以通过我分享的链接进行下载。

STM32的3.5版本的库下载链接:https://pan.baidu.com/s/1KxA1ZgRO6p3Cjez-ajV18Q?pwd=tong     提取码:tong

 解压库文件后进入其目录:

 

 图2-1 STM32固件库目录

Libraries文件夹下是驱动库的源代码及启动文件。

Project文件夹下是用驱动库写的例子和一个工程模板。

库帮助文档,这是一个已经编译好的HTML文件,主要讲述如何使 用驱动库来编写自己的应用程序。

在使用库开发时,我们需要把Libraries目录下的库函数文件添加 到工程中,并查阅库帮助文档来了解ST提供的库函数,这个文档说明 了每一个库函数的使用方法。

进入Libraries文件夹看到,关于内核与外设的库文件分别存放在 CMSIS和STM32F10x_StdPeriph_Driver文件夹中。 Libraries\CMSIS\CM3文件夹下又分为CoreSupport和DeviceSupport文 件夹。 

2.1  core_cm3.c文件

         在CoreSupport文件夹中的是位于CMSIS标准的核内设备函数层的 CM3核通用的源文件core_cm3.c和头文件core_cm3.h,它们的作用是为 采用Cortex-M3核设计SoC的芯片商设计的芯片外设提供一个进入CM3内 核的接口。对于其他公司的CM3系列芯片这两个文件也是相同的。

         较重要的是在core_cm3.c文件中包含了stdin.h这个头文件,这是 一个ANSI C文件,是独立于处理器之外的,就像我们熟知的C语言头文 件stdio.h文件一样。它位于RVMDK这个软件的安装目录下,主要作用 是提供一些新类型定义。

 2.2 stm32f10x.h文件

         stm32f10x. h这个文件非常重要,是一个非常底层的文件。它包 含了STM32中寄存器地址和结构体类型定义,在使用到STM32固件库的 地方都要包含这个头文件。

 2.3 启动文件

2.3.1 名称

         Libraries\CMSIS\Core\CM3\startup\arm文件夹下是由汇编语言 编写的系统启动文件,不同的文件对应不同的芯片型号,在使用时要注意。

文件名的英文缩写的意义如下:

cl:互联型产品,stm32f105/107系列。

vl:超值型产品,stm32f100系列。

xl:超高密度(容量)产品,stm32f101/103系列。

ld:低密度产品,Flash小于64KB。

md:中等密度产品,Flash等于64KB或128KB。

hd:高密度产品,Flash大于128KB。 

2.3.2 作用 

         启动文件是任何处理器在上电复位之后最先运行的一段汇编程 序。在我们编写的C语言代码运行之前,需要由汇编语言为C语言的运 行建立一个合适的环境,接下来才能运行我们的程序。所以我们也要 把启动文件添加到我们的工程中。

        总的来说,启动文件的作用是:

初始化堆栈指针SP。 初始化程序计数器指针PC。 设置堆、栈的大小。 设置异常向量表的入口地址。 配置外部SRAM作为数据存储器(这个由用户配置,一般的开发板 没有外部SRAM)。 设置C库的分支入口__main(最终用来调用main函数)。

        3.5版的启动文件还调用了在system_stm32f10x.c文件中的 SystemIni()函数配置系统时钟,在旧版本的工程中要用户进入main函 数自己调用SystemIni()函数。

固件库里还有很多文件分别有着不同的作用,还需要大家自己慢慢了解,慢慢使用。无他,唯手熟尔,乃卖油翁之说。

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32单片机基础知识主要包括对STM32F1和STM32F4两个系列的了解。这两个系列分别基于Cortex-M3和Cortex-M4内核。了解这两种架构可以帮助我们快速学习其他系统架构。\[1\] 在对STM32F1和STM32F4的框架进行总结时,我们需要了解一些基础知识。虽然很多东西可能不理解也能写出代码并进行调试,但如果想更深入地了解,我们应该知其然也知其所以然。这需要我们在实践中不断学习和提升。\[2\] 在STM32单片机的开发中,标准库起到了重要的作用。它将寄存器底层操作封装起来,提供一整套接口供开发者调用。每款芯片都有对应的库文件,通过配置结构体变量成员,我们可以修改外设的配置寄存器,从而选择不同的功能。标准库大大降低了单片机开发的难度,但在不同芯片之间移植不太方便。\[3\] 总结来说,STM32单片机基础知识包括对STM32F1和STM32F4系列的了解,以及对标准库的应用。这些知识对于入门和进一步深入学习都非常重要。 #### 引用[.reference_title] - *1* *2* [STM32单片机基础知识总结(二)](https://blog.csdn.net/weixin_42506096/article/details/123553135)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [STM32基础知识](https://blog.csdn.net/qq_52902991/article/details/131268725)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值