零-STM32与嵌入式

news2024/11/23 15:42:41

目录

一、嵌入式概述

二、微控制器的关系

三、STM32的学习原因

四、STM32的应用领域

五、STM32的就业前景

六、STM32开发方式

(1) 寄存器开发(自己做饭,自己吃)

(2) 函数库开发(别人做饭,自己吃)

(3) 图形库开发(别人做饭,喂你吃)

七、STM32开发平台

(1) STM32开发平台的芯片  

(2) STM32开发平台的资源

八、程序下载

 1、固件库工程

2、STM32程序下载


一、嵌入式概述

        国内定义:嵌入式就是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于对于体积、可靠性、功耗、性能等方面有严格要求的专用计算机系统,要求嵌入式开发人员对嵌入式知识体系有清晰的认知。

二、微控制器的关系

        C51属于传统的8位单片机,诞生于上世纪70年代,是由Intel公司在1980年开发的MCS-51系列单片机发展出来,也被称为8051。一般现在在大学中教学,满足不了现在的市场需求(成本低、性能高、功耗低、多任务、易用界面),一般用在小家电、消费类电子产品。

        基于这样的市场需求,ARM公司推出了一款基于ARMv7架构的Cortex M3/M4的32位的内核,一般用在工控场景,ST(意法半导体)公司就基于这个内核推出了一款新的MCU(微处理器),就叫做STM32。  GD32(国产芯片,兼容STM32)

三、STM32的学习原因

        STM32系列芯片介于低端和高端芯片之间。相对于低端芯片而言,STM32拥有强大的内核架构、更多的片上外设、可以运行uCOS、FreeRTOS等实时操作系统,相对于高端芯片而言STM32成本更低、实时性较强。所以学习STM32是大多数嵌入式开发人员的必经之路。

        需要注意:学习STM32不是仅仅对相关外设(串口、定时器....)进行学习,而是要掌握软件的设计流程,这样在设计一款产品的时候才知道如何进行(器件选型、协议选择、数据格式.....),并且大多数复杂的产品都会搭载实时操作系统,所以也要掌握实时操作系统的设计架构和使用方法。

四、STM32的应用领域

        STM32属于微控制器MCU,自带了各种常用通信接口,比如 USART、 I2C、 SPI 等,可接非常多的传感器,可以控制很多的设备。一般STM32都是主要用在低功耗的产品上,如智能手环,智能门锁、微型四轴飞行器,二轴平衡车、移动POS机,智能电饭锅,3D 打印机等等。

五、STM32的就业前景

        大家都清楚目前国内已经处于物联网时代,而物联网也就是指万物互联,2014年也被称为智能家居的元年,华为和很多国内的大型公司都在打造智能家居的生态链,但是目前而言还没有达到普及智能家居的程度,而国内的人口基数大,并且开放了三胎政策,所以智能家居的市场前景是非常广阔的,而华为推出了鸿蒙操作系统,鸿蒙操作系统的理念就是“一生万物,万物归一”,也就是把手机当做控制终端,再结合其他的智能硬件,最终达到万物互联的程度。

六、STM32开发方式

        目前主流的STM32的开发方式大体分为三种:函数库开发 + 寄存器开发 + 图形界面开发(STM32CubeMaax)!

(1) 寄存器开发(自己做饭,自己吃)

        STM32的资源外设比较丰富,所以导致寄存器的数量增多并且复杂度增大,要求开发人员需要掌握底层开发的相关知识才行。

        一般情况下,只有涉及对实时性要求比较高,如频繁调用的中断服务函数等才会直接使用寄存器开发,其余大部分情况下,都是使用函数库开发。

注意:必须会,面试笔试:

  • 置位: a &=~(1
  • 清除:a | =(1

(2) 函数库开发(别人做饭,自己吃)

        对于函数库开发来说,ST公司一共开发了两套库(标准外设库+HAL库),对于目前的市场趋势而言,ST公司主推HAL库,已经对标准外设库停止维护,但是对于实际的开发过程而言,目前绝大多数公司都采用标准外设库进行项目的开发(更稳定,资料更多,容易维护)

        STM32标准外设库是ST公司专门针对STM32提供的一系列API(函数接口),用户可以调用这些函数来配置STM32底层的寄存器,所以开发人员不需要特别关注底层寄存器操作,有利于快速开发和维护。

        库是架设在寄存器和用户代码之间的代码,向下与寄存器相关,向上提供给用户相关接口。

(3) 图形库开发(别人做饭,喂你吃)

        指的是利用ST公司专门设计的一款图形界面软件(STM32CubeMX)来自动生成代码,所以这款软件也被称为代码生成器,基于HAL库,用户只需要根据实际需求进行参数选择,就可以自动生成初始化代码,极大的提高了开发效率,所以也是ST公司这几年主推的一种方式。该软件内部集成的HAL库,所以生成的初始化代码也是基于HAL库的。注意:适合有经验的工程师。运行效率低。

七、STM32开发平台

(1) STM32开发平台的芯片  

        本次阶段的开发平台为GECM4开发板,M4开发板搭载的芯片是ST公司设计的芯片,型号为STM32F407ZET6,芯片采用的内核为ARM公司设计的Cortex M4内核(主频高达168MHZ,带DSP和FPU 浮点运算单元),对于芯片型号的说明可以参考ST公司提供的芯片选型手册。

(2) STM32开发平台的资源

  • 光敏电阻:光照越强、阻值越小(电压下降),转换出来的数字量越小
  • CH340芯片:USB转串口,将信息打印在电脑屏幕上(AA口线(两头都是USB的线))
  • 摄像头:两排排针的摄像头
  • 红外接收头:遥控器
  • mpu6050:陀螺仪
  • at24c02,i2c:存储芯片256字节
  • SPI FLASH:16M
  • 触摸屏:480*320 640*180

八、程序下载

 1、固件库工程

        想要开发的前提就是创建好一个工程模板,为了可以尽快的入门,所以搭建的工程是以标准外设库为例,如果想要采用标准外设库,则需要从官网下载标准外设库的源码包,并完成移植。

2、STM32程序下载

        STM32想要下载程序的方法有两种:串口下载 + 下载器下载(JTAG、JLINK、STLINK...),这里就涉及到STM32启动方式(自举模式)。这里可以参考STM32F4中文参考手册的2.4章节。

        STM32启动方式(自举模式)有三种:从用户闪存启动(Flash)、从系统存储器启动、从内部SRAM启动。

l 主Flash启动

        指的是从用户闪存空间启动(FLash空间 512K),也是最常用的工作模式,一般用JTAG接口和SW接口下载程序的时候意味着程序要下载到Flash中,在复位之后也是从Flash运行程序。一般用户闪存(Flash)可以反复擦除10万次左右,所以不用担心芯片锁死或者被擦爆。

(1) 把开发板的BOOT引脚进行设置(BOOT0 =0,BOOT1= x),然后把JLINK下载器和开发板链接

(2) 安装JLINK下载器的驱动程序,并检查JLINK驱动安装成功,设备管理器--->通用串行总线

(3) 打开KEIL5软件,对工程进行下载配置,选择JLINK作为下载器,并设置JLINK的一些参数

(4) JLINK和Flash的配置完成后,需要对程序进行编译,编译通过后点击Download下载程序

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

喜报 亚信安全再次入选湖北省网络安全应急技术支撑单位

近日,中共湖北省委网络安全和信息化委员会办公室和国家计算机网络应急技术处理协调中心湖北分中心公布了《关于开展第二届湖北省网络安全应急技术支撑单位评选工作的通知》,亚信安全凭优秀的产品技术实力和丰富的安全服务实践经验,连续两届成…

调研适合c++训练和部署的框架

目录 1. caffe 2. TensorFlow 3. Pytorch 4. PaddlePaddle 5. darknet 1. caffe GitHub - BVLC/caffe: Caffe: a fast open framework for deep learning. Caffe (Convolutional Architecture for Fast Feature Embedding) Caffe是一个早期流行的深度学习框架&#xff0…

GreptimeDB融资数百万美元; Oracle提供免费长期MySQL; 谷歌大模型支持云数据库问题洞察

重要更新 1. 开源时序数据库 GreptimeDB宣布完成数百万美元的新一轮融资。GreptimeDB是一款Rust 语言编写的时序数据库,具有分布式,开源,云原生,兼容性强等特点,帮助企业实时读写、处理和分析时序数据的同时&#xff0…

Linux设备驱动——模块的构造、运行与设计 与众不同的hello world与点灯

编写一个Linux下的设备驱动,首先要准备好对应内核版本的内核源码树文件。 该系列的全部文章都以嵌入式系统的ARM-Linux的环境进行阐述,并以交叉编译的方式在主机Ubuntu20.04系统上编译和ARM开发板上跑测 (E2000Q、H616、或者IMX6ULL看情况交叉着使用) 关…

MySQL基础练习题44-只出现一次的最大数字

目录 题目 情况一 准备数据 分析数据 情况二 准备数据 实现一 题目 单一数字 是在 MyNumbers 表中只出现一次的数字。 找出最大的 单一数字 。如果不存在 单一数字 ,则返回 null 。 情况一 准备数据 ## 创建库 create database db; use db;## 创建表 Cre…

腾讯云短信正文模板每个变量取值最多支持6个字符出现的问题及应对方法

目录 一、参考链接二、应对方法 一、参考链接 对于长期未使用的账号及 2024 年 1 月 25 日后开通的新账号,腾讯云对短信正文模板的变量进行了限制: 验证码短信:每个变量取值最多支持6位纯数字。 非验证码短信:每个变量取值最多支…

MySQL架构设计

MySQL架构设计 查询语句: select * from users;返回结果为: 问题: 一条SQL查询语句是如何执行的? Server层 MySQL架构可以分为server层和Engine层两部分: 连接器(connector) 1. 连接管理 …

关于python中的get,set方法

一般在python面向对象中,每个类内都会有其所对应的属性。 而在定义属性值的时候,可能还得会对这些属性值进行修改和获取。为了确保代码的安全性,封装性和可操作性,我们可以使用get,set方式去操控。 get方法用于获取属…

贝莱德与摩根大通的最新季度持仓分析

近期,华尔街的两大投资巨头贝莱德和摩根大通公布了其2024年第二季度的13F报告,揭示了他们在投资组合上的最新动向。通过分析这些持仓数据,我们可以更清楚地了解这些顶级投资机构的投资策略和市场偏好。 贝莱德的科技巨头与能源投资 根据贝莱…

Trilium Notes:你的个人知识库!【送源码】

简介 Trilium Notes是一款功能全面的层次化笔记应用,通过树形结构构建个人知识库,支持Markdown编辑、网页内容剪切、笔记搜索与映射,并特别提供了基于画布的自由涂画功能,极大地提升了笔记的灵活性和创造性,是知识管理…

移动UI:把握好这9点,轻松设计积分兑换页面。

设计移动UI的积分兑换页面需要考虑用户体验和交互设计,以下是一些设计建议: 1. 清晰的积分信息展示: 在页面顶部或者中间位置展示用户当前的积分数量,让用户清晰地了解自己的积分情况。 2. 商品列表展示: 以列表或者…

[数据集][目标检测]违规撑伞检测数据集VOC+YOLO格式341张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):341 标注数量(xml文件个数):341 标注数量(txt文件个数):341 标注类别…

浅看MySQL数据库

有这么一句话:“一个不会数据库的程序员不是合格的程序员”。有点夸张,但是确是如此。透彻学习数据库是要学习好多知识,需要学的东西也是偏难的。我们今天来看数据库MySQL的一些简单基础东西,跟着小编一起来看一下吧。 什么是数据…

什么是树的先/中/后序遍历

前言 很久没有写c教程(有几个月)了,今天来讲讲树 为什么之前不讲树因为我不会但我现在能写出一些树的选择题了 首先我们画一棵树: 有些潦草 遍历是什么 我们要研究先/中/后序遍历,我们应该先知道什么叫遍历 遍历…

论文精要:《对静态分析缺陷报告进行聚类,以降低维护成本》

1. 前言 周末找到一篇《对静态分析缺陷报告进行聚类,以降低维护成本》,读了之后受到不少启发,特此将笔记整理出来。 论文出处: Published in: 2013 20th Working Conference on Reverse Engineering (WCRE)Date of Conference:…

疫情期间高校人员管理

TOC springboot322疫情期间高校人员管理 绪论 1.1 选题背景 当人们发现随着生产规模的不断扩大,人为计算方面才是一个巨大的短板,所以发明了各种计算设备,从结绳记事,到算筹,以及算盘,到如今的计算机&a…

C语言家教记录(六)

导语 本次授课的内容如下:指针,指针和数组 辅助教材为 《C语言程序设计现代方法(第2版)》 指针 指针变量 计算机按字节划分地址,每个地址访问一个字节 指针变量指向变量的地址,指的是变量第一个字节的…

MySQL InnoDB中一个update语句从执行到提交的全过程(1)

目录 一、开启事务 二、sql解析、查询计划生成 三、查询要修改的数据 1、读buffer pool的过程 buffer pool的结构组成 1)Free List (空闲链表) 2)LRU List (最近最少使用链表) 3)Flush List (刷新链表) 三条链表之间的关系 2、怎么…

[Linux][OS][信号的保存和处理]

目录 信号的处理 1. 在内核中的表示 2. 相关概念 3. 信号集操作函数 4.sigprocmask 5.sigpending 信号的捕捉 重谈地址空间 信号的处理 1. 在内核中的表示 普通信号,多次产生只会记录一次 信号范围 [1,31],每一种信号都要有自己的一种处理方式…

Java Spring|day3.SpringBoot

Spring Boot 定义 从本质上来说,Spring Boot就是Spring,它做了那些没有它你自己也会去做的Spring Bean配置。Spring Boot使用“习惯优于配置”的理念让你的项目快速地运行起来,使用Spring Boot很容易创建一个能独立运行、准生产级别、基于S…