(一)固件库 stm32f10x.h 详细分析、同程序更换芯片时需要修改的地方;创建MDK5工程模板 |
您所在的位置:网站首页 › 库里是哪个地方的 › (一)固件库 stm32f10x.h 详细分析、同程序更换芯片时需要修改的地方;创建MDK5工程模板 |
STM32Fx-固件库开发
(一)固件库(二)CMSIS 标准(三)STM32F4 官方库包介绍(1)头文件 stm32f10x.h 详细分析(2)同程序更换芯片时,需要修改的地方
(四)MDK Keil5.0简介(五)基于固件库创建MDK5工程模板(六)编译时,设置相关优化等级(七)新C99语法的编译支持(八)调试时直接跳过启动文件,直接运行到main()![在这里插入图片描述](https://img-blog.csdnimg.cn/20210517190633688.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTcwNDMz,size_16,color_FFFFFF,t_70)(九)烧录后自动运行需要勾选
本文章是学习正点原子探索者开发板时所做的知识总结:stm32f407
基础知识(一)51与STM32单片机架构(内核和片上外设)的区别 — 汇总 + 拓展 基础知识(二)STM32的时钟系统RCC详细整理 基础知识(三)片内外设和核内外设的区别 (1)片内外设 片内和外设是两个概念,片内指做成芯片的集成电路内部,简称片内;外设是外部设备的简称,是指集成电路芯片外部的设备。集成电路芯片与外部设备的连接一般需要专门的接口电路和总线的连接(包括控制总线路、地址总线和数据总线等)。由于大规模集成电路的技术发展得很快,现在许多芯片在制造时已经能够将部分接口电路和总线集成到芯片内部。对于这部分电路与传统的接口电路和总线是有区别的,为了加于区别可以称之为片内外设,其含义是在集成电路芯片内部集成的用于与外部设备连接的接口电路和总线。 因此,简单的说,“片内外设”是芯片内部用于与外部设备连接的接口电路和总线。(2)核内外设 Cortex-M的核内外设是指 NVIC(中断控制器)和Systick的一些寄存器的标准接口,一般在core_cm4.c文件中 (一)固件库固件库就是函数的集合,固件库函数的作用是向下负责与寄存器直接打交道,向上提供用户函数调用的接口(API)。对于 STM32 这种级别的MCU,数百个寄存器记起来太难。于是ST(意法半导体)推出了官方固件库,固件库将这些寄存器底层操作都封装起来,提供一整套接口(API)供开发者调用。 (二)CMSIS 标准CMSIS 标准:ARM公司为了能让不同的芯片公司生产的 Cortex-M4 芯片能在软件上基本兼容,和芯片生产商(ST / TI)共同提出了一套标准 CMSIS 标准(Cortex Microcontroller Software InterfaceStandard) ,翻译过来是“ARM Cortex™ 微控制器软件接口标准”。ST 官方固件库就是根据这套标准设计的。
CMSIS 分为 3 个基本功能层: 核内外设访问层:ARM 公司提供的访问,定义处理器内部寄存器地址以及功能函数。中间件访问层:定义访问中间件的通用 API。由 ARM 提供,芯片厂商根据需要更新。外设访问层:定义硬件寄存器的地址以及外设的访问函数。在使用 STM32 芯片的时候首先要进行系统初始化,CMSIS 规范就规定,系统初始化函数名字必须为 SystemInit,所以各个芯片公司写自己的库函数的时候就必须用 SystemInit 对系统进行初始化。CMSIS 还对各个外设驱动文件的文件名字规范化,以及函数名字规范化等等一系列规定。 NVIC是什么意思? NVIC:提供中断控制器,用于总体管理异常,称之为“内嵌向量中断控制器:Nested Vectored Interrupt Controller” 。NVIC和处理器内核紧密相连,它提供以下特征: 支持嵌套和向量中断自动保存和恢复处理器状态动态改变优先级简化的和确定的中断时间(一)HAL库中,文件分析 (1)core内核编译兼容相关文件 2、不同编译文件的接口相同,但底部实现方式有差别. (2)内核访问层头文件 core_cmxxx.h文件,它对Cortex-Mx的内核硬件进行了简单的封装,并向上级文件提供了一些简单的接口 (3)设备硬件 Cortex-M7内核之上的是STM32H7xx的设备硬件,对应于文件stm32h7xx.h,并在stm32h7xx.h中细分,STM32H743ZIT6对应于stm32h743xx.h。stm32h743xx.h的内容大致类似于标准外设库的stm32fxxx.h,是对STM32外设的定义 (三)STM32F4 官方库包介绍1)目录介绍 (2)启动文件的作用:进行堆、栈的初始化,构建中断异常向量表及中断处理函数的定义,引导进入 main主函数等。 eg:Reset_Handler 中断函数是唯一实现了的中断处理函数,其他的中断函数基本都是死 循环。 Reset_handler 在我们系统启动的时候会调用,下面让我们看看 Reset_handler 这段代码: Reset handler//复位异常处理 Reset_Handler PROC EXPORT Reset_Handler [WEAK]//复位异常处理函数出口 IMPORT SystemInit//系统初始化入口 IMPORT __main//主函数入口 LDR R0, =SystemInit//系统初始化入口地址放进寄存器R0 BLX R0//执行系统初始化 LDR R0, =__main//main入口地址放进寄存器R0 BX R0//跳进main.c执行主函数 ENDP这段代码的作用是在系统复位之后引导进入 main 函数,同时在进入 main 函数之前,首先要调 用 SystemInit 系统初始化函数。 (1)头文件 stm32f10x.h 详细分析头文件 stm32f10x.h 详细分析 (2)同程序更换芯片时,需要修改的地方MDK(Keil5.0)C/C++全局宏定义:USE_STDPERIPH_DRIVER,STM32F10X_CL (1)如何切换大中小容量芯片 (2)同程序更换芯片时,需要修改的地方 (四)MDK Keil5.0简介MDK( “RealView MDK” 的简称):源自德国的 KEIL 公司。 MDK5 由两个部分组成:MDK Core 和 Software Packs。 其中,Software Packs 可以独立于工具链进行新芯片支持和中间库的升级。 Software Packs(包安装器)又分为:Device(芯片支持),CMSIS(ARM Cortex 微控制器软件接口标准)和 Mdidleware(中间库)三个小部分。通过包安装器,我们可以安装最新的组件,从而支持新的器件、提供新的设备驱动库以及最新例程等,加速产品开发进度。 MDK5 安装包可以在:http://www.keil.com/demo/eval/arm.htm 下载到。 而器件支持、设备驱动、CMSIS 等组件,则可以点击 MDK5 的 Build Toolbar 的最后一个图标调出 Pack Installer,来进行各种组件的安装。也可以在 http://www.keil.com/dd2/pack 下载,然后进行安装。 (五)基于固件库创建MDK5工程模板1)工程 project 下新建5个子文件夹:CORE,FWLIB,OBJ,SYSTEM,USER 3)将官方固件库里的源码文件复制到当前工程目录文件夹下 固件库:STM32F4xx_DSP_StdPeriph_Lib_V1.4.0 路径:Libraries\STM32F4xx_StdPeriph_Driver的 inc和src 将目录下面的 src/ inc 文件夹拷贝到新建的 FWLib 固件库文件夹下: 4)将固件库中相关的启动文件复制到工程目录 CORE 下 \STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm目录下,将启动文件 startup_stm32f40_41xxx.s 复制到 CORE 目录下。 然后再将目录\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Includ 里面的四个头文件: core_cm4.h 、core_cm4_simd.h 、core_cmFunc.h 、 core_cmInstr.h 同样复制到 CORE 目录下面 ![]() ![]() ![]() ![]() 7)往 Group 里面添加我们需要的文件 按照步骤 9 的方法, 右键点击点击Tempate,选择 Manage Project Items.然后选择需要添加文件的 Group,这里第一步我们选择 FWLIB,然后点击右边的 Add Files,定位到我们刚才建立的目录\FWLIB\src 下面,将里面所有的文件选中(Ctrl+A),然后点击 Add,然后 Close.可以看到 Files 列表下面包含我们添加的文件: (2)这里有个文件 stm32f4xx_fmc.c 比较特殊。这个文件是 STM32F42 和 STM32F43 系列才用到, 所以我们这里要把它删掉(注意是:stm32f4xx_fmc.c 要删掉,不要删掉 stm32f4xx_fsmc.c)。
注意: (1)全局宏定义: STM32F40_41xxx,USE_STDPERIPH_DRIVER 之间是用逗号,隔开的。 (2)STM32F40_41xxx,USE_STDPERIPH_DRIVER的作用是定义了全局宏定义,外设访问层头文件stmfxx.h中的一些模块就可以编译。 10)选择编译中间文件编译后存放目录 方法是点击魔术棒 ,然后选择“Output”选项下面的“Select folder for objects…”, 然后选择目录为我们上面的 新建的 OBJ 目录。同时将下方的三个选项框都勾上: 代码的优化与此相关,volatile一般经常和优化有关 (七)新C99语法的编译支持空数组的定义:MDK编译时,需要勾选这两个 (八)调试时直接跳过启动文件,直接运行到main()![]() |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |