STM32开发

news/2024/5/4 2:04:32/文章来源:https://blog.csdn.net/MyArrow/article/details/127533622

STM32开发

  • 1. 简介
  • 2. STM32启动文件
  • 3. CMSIS
    • 3.1 CMSIS结构
    • 3.2 CMSIS框架
  • 4. STM32CubeG0
    • 4.1 STM32CubeG0固件结构
      • 4.1.1 Level 0
      • 4.1.2 Level 1
      • 4.2.2 Level 2

1. 简介

  • STM32CubeG0 github
  • CMSIS on GitHub
  • STM32CubeG0:为STM32G0 Series提供封装
  • 官方从F4后面再出的产品就没有标准外设库了,所以G0是比较新的产品,只能用HAL或LL库。一般来说,用CUBE库上手更容易,而且大把例程可以参考,对于时序苛刻的应用,可以用LL库的。
  • G0没有SPL(Standard Peripheral Libraries:标准外设库),G0和F0是不兼容的,所以只能使用HAL、LL、寄存器
  • STM32Cube™ Hardware Abstraction Layer (HAL): 确保整个 STM32 产品系列的最大可移植性
  • STM32Cube™ Low-Layer(LL)APIs:通过对硬件的高度用户控制确保最佳性能和占用空间

2. STM32启动文件

  • 启动文件主要用来进行堆栈的初始化、中断向量表的定义和中断函数的定义。启动文件要引导进入系统main函数,Reset_Handler中断处理函数是唯一被实现了的函数,其在系统启动时会被调用。以下就是Reset_Handler实现的代码:
; Reset handler
Reset_Handler    PROCEXPORT  Reset_Handler             [WEAK]IMPORT  __mainIMPORT  SystemInitLDR     R0, =SystemInitBLX     R0LDR     R0, =__mainBX      R0ENDP

3. CMSIS

  • CMSIS指的是ARM Cortex™ 微控制器软件接口标准(Cortex Microcontroller Software Interface Standard),其提供与供应商无关的硬件抽象层,为处理器和外设实现一致,简单的软件接口,从而简化软件的重用、缩短微控制器新开发人员的学习过程并缩短新设备的上市时间。
  • 我们知道不同厂家,比如TI,ST,Freescale,Nordic Semiconductor等不同半导体厂家都有基于Cortex M系列内核的MCU产品,但是这些MCU的外设却大不相同,外设的设计、接口、寄存器等都不一样,因此一个能够非常熟练对STM32进行开发的工程师很难快速地上手开发一款他不熟悉的,尽管是Cortex M内核的芯片。而CMSIS的目的是让不同厂家的Cortex M内核的MCU至少在内核层次上能够做到一定的一致性,提高软件移植的效率,而这就是CMSIS出现的最主要原因。

3.1 CMSIS结构

  • 这里简单介绍一下CMSIS的文件结构,CMSIS包含如下四个部分:
  • CMSIS-CORE
    • 提供与 Cortex-M0、Cortex-M3、Cortex-M4、SC000 和 SC300 处理器与外围寄存器之间的接口
  • CMSIS-DSP
    • 包含以定点(分数 q7、q15、q31)和单精度浮点(32 位)实现的 60 多种函数的 DSP 库
  • CMSIS-RTOS
    • 用于线程控制、资源和时间管理的实时操作系统的标准化编程接口
  • CMSIS-SVD
    • 包含完整微控制器系统(包括外设)的程序员视图的系统视图描述 XML 文件

3.2 CMSIS框架

  • 以下是CMSIS 5.x标准的软件架构图:
    在这里插入图片描述
  • 从上图可以看到,CMSIS 5.x软件架构主要分为以下三层:应用代码层、CMSIS软件层 和 微控制器层,其中 CMSIS软件层 起着承上启下的作用,一方面该层对微控制器层进行了统一的实现,屏蔽了不同厂商对Cortex-M系列微处理器核内外设寄存器的不同定义,另一方面又向上层的操作系统和应用层提供接口,简化了应用程序开发的难度,使开发人员能够在完全透明的情况下进行应用程序的开发。如果没有CMSIS标准,那么各个半导体公司可能会自己制定各自产品的库函数的命名规则,而这会使得软件在不同厂家芯片上的移植变得困难。也正是如此,CMSIS层的实现也相对复杂些。有关CMSIS更详细的介绍请访问ARM官网。

4. STM32CubeG0

  • STM32CubeG0固件组件
    在这里插入图片描述

4.1 STM32CubeG0固件结构

  • STM32CubeG0由3个独立的层级组成,但高Level可方便调用低Level。
    在这里插入图片描述

4.1.1 Level 0

  • Level0由以下子层组成:
    • Board support package (BSP) :该层提供了一组与硬件板中的硬件组件(例如 LCD、Audio、microSD™ 和 MEMS 驱动程序)相关的 API。
    • Hardware abstraction layer (HAL)
      • HAL peripheral drivers:HAL 驱动程序提供面向高级功能的高度可移植的 API。 它们向最终用户隐藏了 MCU 和外围设备的复杂性。
      • Low-layer drivers:低层 API 提供寄存器级别的低级 API,具有更好的优化但可移植性较差。 他们需要对 MCU 和外设规范有深入的了解。LL 驱动程序旨在提供一个快速轻量级的面向专家的层,它比 HAL 更接近硬件。
    • Basic peripheral usage examples

4.1.2 Level 1

  • 本层包含两个子层:
    • Middleware components
      • USB PD (Power Delivery) library
      • FreeRTOS™:Open source standard、CMSIS compatibility layer、 Tickless operation during low-power mode、Integration with all STM32Cube™ middleware modules
      • FAT file system:FatFS FAT open source library、Long file name support、RTOS and standalone operation
    • Examples based on the middleware components

4.2.2 Level 2

  • 该级别由单层组成,包括基于中间件服务层、低级抽象层和基于板卡功能的基本外围使用应用程序的全局实时和图形演示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_218765.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

178、锐捷交换机恢复出厂和各种基本配置

锐捷最详细的基础命令。 一、锐捷交换机配置原理 我们来看下锐捷的日常配置命令原理。 1、进入特权模式 Ruijie>enable //进入特权模式 2、查看设备flash当前文件列表 Ruijie#dir //查看flash当前文件列表 3、将配置文件“config.text”删除 Ruijie#delete…

嵌入式典型ARM处理器介绍以及分类

笔者电子信息专业硕士毕业,获得过多次电子设计大赛、大学生智能车、数学建模国奖,现就职于南京某半导体芯片公司,从事硬件研发,电路设计研究。对于学电子的小伙伴,深知入门的不易,特开次博客交流分享经验&a…

day09 DOM

DOM的概述 DOM是文档对象模型(document object model) , 顾名思义就是用来操作对应的HTML文档的 . 它是一个遵从文档流的语句 , 是同步机制的 . DOM的分类document 是dom操作中最大的对象 ( 表示当前操作的html文档 )element 元素对象 ( 表示的是对应的标签元素 )attribute …

阻止 mousemove 或 touchmove 与 click 事件同时触发

最近做了自己的开源项目 Msw-Tools,参考了 VConsole 工具中按钮的拖拽功能,计划给 MSW 按钮也增加类似的拖拽效果,并兼容PC端和手机端,但是遇到一个问题:一个按钮绑定了多个事件,怎样才能阻止 mousemove 或…

Python还能这样玩?让你轻松实现配色自由

嗨嗨,你们好 好几天没更新了,最近有点点无聊,就琢磨出一个一个有趣的东西 教你们用python快速获取图片配色,做个可视化配色方案出来 这期分享一个Python快速提取任何图片配色方案的工具:Haishoku Haishoku是一个用来…

概论相关分布知识--回顾笔记

伯努利分布:如果变量X服从伯努利分布 Ber(p) ,那么 X只有两种取值,记为{0,1},有:二项分布:如果变量X服从二项分布B(n,p) ,那么X有 n 1 种取值,有:categorical 分布&…

Android靶场All Safe 靶场WP

环境准备 ADB DDMS ALLsafe app part 1 不安全的日志记录 挑战 在不反编译的情况下从日志中获取输入的密钥。 方法一 使用DDMS监控日志记录,工具在SDK/tools目录下的monitor.bat,需要java8的环境支持,java11会报错。 使用adb连接 测试机…

工业控制系统安全评估流程物理环境脆弱性

架构与设计脆弱性 表 4.2 架构与设计脆弱性检查表 脆弱性 描述 安全架构是企业架构的一部分,在工业控制系统 架构设计之初,应该融合考虑。 在架构搭建与设计过程中未考虑安全因素 在架构设计时需要解决用户识别与授权、访问控制机 制实现、网络拓扑绘制…

厨电智能化趋势下,究竟什么才是真正的“用户思维”?

文|智能相对论 作者|佘凯文 近期2022年前三季度的各项经济数据在陆续发布,大环境依然承压,各个行业都在负重前行。 厨电行业在房地产下滑、疫情反复等因素影响下,前三季度同样一直承受着不小的压力,AVC数据显示,202…

进程的创建终止、阻塞唤醒、挂起激活(操作系统)

目录 一、引起创建进程的事件 二、进程的创建 三、进制的终止 1.引起进程终止的事件 2.进程的终止过程 四、进程的阻塞和唤醒 1.引起进程阻塞和唤醒的事件 2.进程阻塞过程 3.进程唤醒过程 五、进程的挂起和激活 1&…

安装Mysql-zip安装

一、安装 1、下载 到mysql官网 http://dev.mysql.com/downloads/mysql/ 下载mysql 注:msi的是安装版 2、解压 解压到想安装的目录下,我的是D:mysql-5.7.13-winx64 3、配置my.ini 在D:mysql-5.7.13-winx64目录下新建my.ini文件,输入以下配置代码: [mysqld] port = 3306 base…

springboot嘉应房地产公司质量管理系统毕业设计源码453100

目 录 摘要 1 1 绪论 1 1.1研究背景及意义 1 1.2国内外研究现状及发展趋势 1 1.3系统开发技术的特色 1 1.4论文结构与章节安排 1 2 嘉应房地产公司质量管理系统 系统分析 3 2.1 可行性分析 3 2.2 系统流程分析 3 2.2.1数据增加流程 3 2.3.2数据修改流程 4 2.3.3数据删除流程 4…

Python提取pdf中的表格数据(附实战案例)

14天阅读挑战赛 今天给大家介绍一个Python使用工具,那就是从pdf文件中读取表格数据,主要用到第三方库 pdfplumber。 pdfplumber简介 pdfplumber是一款基于pdfminer,完全由python开发的pdf文档解析库,不仅可以获取每个字符、矩形…

[spark]transformation算子

1.sample算子 1)说明 sample算子:对rdd中的数据进行抽样。一个非常重要的作用就是开看rdd中数据的分布,进行各种调优与优化。 数据倾斜:数据分布的不均匀,shuffle会将相同key的数据汇总到一台机器上,就会…

水库水雨情监测系统 水雨情自动测控平台 水库雨水情监测及视频监控解决方案_设备_水位_远程

平升电子水库水雨情监测系统 水雨情自动测控平台 水库雨水情监测及视频监控解决方案_设备_水位_远程辅助水利管理部门实现水库雨水情信息“全要素、全量程、全覆盖”自动测报。系统具备水库水位、雨量、现场图像/视频等水文信息采集、传输、处理及预警广播等功能,有…

12-敏感的资料怎么存在K8S-Secret

12-敏感的资料怎么存在K8S-Secret 前言 今天的学习笔记将介绍Kubernetes另一个组件secret。secret协助开发者将一些敏感信息,像是数据库账密、访问其它server的access token、ssh key,用非明文的方式(opaque)存放在Kubernetes中…

【数据结构与算法分析】0基础带你学数据结构与算法分析06--树(TREE)

目录 前言 树的属性 树的实现 树的遍历与应用 深度有限遍历 (DFS) 广度优先遍历 (BFS) Not all roots are buried down in the ground, some are at the top of a tree. — Jinvirle 前言 Tree 是一些结点的集合,这个集合可以是空集;若不是空集…

中国锚杆行业竞争格局及投资风险分析报告

锚杆的概念 锚杆(又称土锚杆、土钉)是在天然土层侧壁钻孔,放置拉杆,注浆锚固而成。根据所用材料,拉杆可分为粗钢筋、高强度钢丝束、钢绞线等。通过计算确定了侧墙上锚杆的截面积、层数、间距和长度。钻孔直径应由设计确定。常用的孔道灌浆有水…

【QT + OsgEarth】(四)加载国界线矢量图

效果图 实现过程 获取国界线矢量图在.earth文件中加载矢量图文件在Qt程序中获取图层节点并控制参数 加载矢量图文件 < image > 标签定义要栅格化的shp文件 driver&#xff1a;使用agglite&#xff0c;将矢量文件栅格成为栅格文件< features > 子标签读取shp文件…

亿可控_第3章 指标数据持久化与设备详情展示

亿可控_第3章 指标数据持久化与设备详情展示 文章目录亿可控_第3章 指标数据持久化与设备详情展示第3章 指标数据持久化与设备详情展示学习目标1. InfluxDB入门及介绍1.1 InfluxDB简介1.2 InfluxDB相关概念1.3 InfluxDB的基本操作1.3.1 InfluxDB数据库操作1.3.2 InfluxDB数据表…