STM32 认识STM32

 

目录

什么是嵌入式?

认识STM32单片机 

开发环境安装

安装开发环境

开发板资源介绍

单片机开发模式 

创建工程的方式

烧录STM32程序


什么是嵌入式?

1.智能手环项目

                  

主要功能有:

彩色触摸屏 显示时间 健康信息:心率,心跳,血氧等 闹钟 记录跑步数据 NFC刷公交,地铁,门禁 蓝牙连接手机接收信息等等  

智能手环整体框图设计:

2.智能门禁项目

                   

主要功能有: 显示屏 RDIF开锁开锁 指纹开锁 按键密码开锁 人脸识别开锁等功能

智能门禁整体功能框图:

认识STM32单片机 

STM32是单片机,它由意法半导体制造。ST是意法半导体的简称,M指的是微控制器,也 就是MCU的第一个英文。32指的是32位的CPU,32是指32位的CPU,它的CPU是采用 ARM公司的Cortex-m系列的内核设计。 学习STM32单片机可以访问两个官网,一个是意法半导体官网和STM32系列单片机的官 网,其中Cortex-M后面的数字越大性能越好。

以STM32F103C8T6为例:

        stm32是家族名,还有stm8,32和8的区别就是CPU处理数据的位数不一样,而且32采 用的是ARM公司的Cortex-M系列的内核,8是意法半导体自主研发的CPU内核。  

        F指的是产品类别,它是属于基础型,还有汽车A级,超低功耗L等类型。

        103这三个数字是指特点的功能,它指STM32的基础型,还有051入门级等等。

        C指的是STM32的引脚数量,不同的大写字母代表的不同的引脚数,C代表48引脚。

        8是指STM32的闪存(flash)大小,也就是放代码空间的大小,8指闪存大小是 64KB。

        T指的是芯片的封装形式QFP。

        6指的是芯片的工作环境的温度-40°到+85°。

开发环境安装

安装开发环境

1.安装MDK(keil)

Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。     目前软件对中文的支持不友好,不建议安装网上的一些汉化包之类的。另外建立的工程文件路径也尽量不要存在中文,否则可能会出现一些异常。

2.安装芯片包stm32f1xx

开发板资源介绍

1.原理图

用来表示电路板上各个元器件直接的连接原理的图表不同设计人员表示的方法有差异,没有统一的标准

在产品调试,维修以及改进过程中有着不可或缺的作用

 2.网络连接的表达方式

用连线表示两个器件有连接

用网络标号来表示两根期间有连接

单片机开发模式 

1.单片机开发模式

1.汇编操作寄存器。执行效率高。编写难度大,移植性差。

2.使用C语言操作寄存器。 执行效率适中。编写效率低,移植性差。

3.使用库开发

        标准库,执行效率稍低,但是编写效率高,移植性稍高

        标准库是ST公司最早发布的固件库,对STM32芯片进行了完整的封装,覆盖了对应的外设的所有功能。它的缺点就是,它是针对某款STM32型号设计的,可移植性差,例如,F1系列的库和F4系列的库是不同的,但是在F1系列中还是可以通用的。

        HAL库,执行效率稍低,但是编写效率高,移植性好

        HAL库是近几年官方极力推荐的库,覆盖了全系列的芯片,可以说HAL库就是用来取代标准库的,相对标准库,HAL库有着更高的抽象、整合水平,它的API更多的集中关注在外设的公共函数功能,HAL库的移植性好,它在STM32中的通用性很强。

创建工程的方式

创建工程方式有两种:使用Keil创建工程模板、 使用STM32CubeMX新建一个工程

1.新建一个文件,添加文件:

        DOC工程说明

                doc说明文档(里面写这个工程是用来干什么的)

        Libraries固件库

                cmsis内核文件(放一些内核文件,没有他们芯片就工作不起来)

                FWLIB外设文件(分为.c文件:翻译行数的定义和.h文件:每个.c文件对应有一个.h文件是放行数的声明)

                start_up启动文件(放一些单片机启动的代码,在内核文件里不同的后缀表示不同芯片的闪存的大小)

        Project工程文件

                keil工程

        User应用程序(指的是我们的代码要实现那些功能)

                应用程序

新建工程

打开keil5,projecr,第一个,放在桌面上面的project的project,选择芯片:F103C8

2.Keil里面新建文件

        START_UP 启动文件

        USER 应用程序

        CMSIS 内核配置相关文件

        DOC 说明文档

        FWLIB 外设相关配置

右键keil里的Target1:add group(或者点击红色绿色白色小方格:在中间一栏操作)

keil对应的文件夹里面放入电脑里的文件,双击文件或小方块右侧一列也可以

        START_UP:在Libraries:cmsis:start_up:hd.s

        USER:在 User:添加.c文件里面包含.h文件

        CMSIS:在Libraries:CMSIS:.c文件

        DOC:DOC

        FWLIB:Libraries:src:ctrl+a全选.c文件

然后点魔术棒:c/c++:includepaths里面的.h文件

缺少USE_STDPERIPH_DRIVER.h文件,需要在魔术棒中宏定义:c/c++

烧录STM32程序

1.配置keil生产hex文件(点击魔术棒,output,勾选create hex file,全局编译成功就会自动生产hex文件,生产在project:Object),要把hex文件烧录进去

2.使用flymcu串口烧录(为什么用串口烧录?我们如果烧录必须通过串口烧录,得外接一个串口芯片,如果要用串口芯片,首先得让它工作起来,所以要安装一个串口驱动)

        首先安装串口驱动

 3.使用jlink、stlink烧录工具在线烧录        

        安装stlink/jlink驱动

        3.3v-3.3v

        gnd-gnd

        SWDIO-SWDIO

        SWCLK-SWCLK

         配置魔术棒勾选然后烧录:Debug:选择烧录方式,LOAD标志

        

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

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

相关文章

C#核心笔记——(六)框架基础

我们在编程时所需的许多核心功能并不是由C#语言提供的,而是由.NET Framework中的类型提供的。本节我们将介绍Framework在基础编程任务(例如虚的等值比较、顺序比较以及类型转换)中的作用。我们还会介绍Framework中的基本类型,例如String、DateTime和Enum. 本章中的绝大部分…

AI——K近邻算法

文章目录 一、什么是K近邻算法二、KNN算法流程总结三、Scikit-learn工具1、安装2、导入3、简单使用 三、距离度量1、欧式距离2、曼哈顿距离3、切比雪夫距离4、闵可夫斯基距离5、K值的选择6、KD树 一、什么是K近邻算法 如果一个样本在特征空间中的k个最相似(即特征空…

transient关键字深度解析

Java transient 关键字深度解析 transient(意思:瞬时的,瞬间的) 1. 核心概念 (1) 基本定义 作用:标记字段不参与序列化 适用场景: 敏感数据(如密码、密钥) 临时计算字段 依赖运行时环境的字段(如Thread对象) (2) 语法示例 java public class User implements Se…

信刻电子档案蓝光光盘刻录安全检测长期归档

信刻一直致力于为档案馆、各行业档案部门,提供跨网数据交换、电子档案数据磁光异质备份归档解决方案。所研制的电子档案光盘智能长期归档系统,满足国产环境下”刻、管、存、检、用”全生命周期管理应用需求,能够提供一份离线归档、一份近线存…

Word 中“母版页”的等效机制

Word 和 PowerPoint 不太一样——**Word 实际上没有像 PowerPoint 那样的“母版页(Master Page)”**功能。但它有1个和“母版页”功能类似的东西,可能造成你看到的“校徽自动出现在每一页”的现象: ✅ Word 中“母版页”的等效机制…

Go:反射

为什么使用反射 在编程中,有时需编写函数统一处理多种值类型 ,这些类型可能无法共享同一接口、布局未知,甚至在设计函数时还不存在 。 func Sprint(x interface{}) string {type stringer interface {String() string}switch x : x.(type) …

SS25001-多路复用开关板

1 概述 1.1 简介 多路复用开关板是使用信号继电器实现2线制的多路复用开关板卡;多路复用开关是一种可以将一个输入连接到多个输出或一个输出连接到多个输入的拓扑结构。这种拓扑通常用于扫描,适合将一系列通道自动连接到公共线路的的设备。多路复用开…

vue3 nprogress 使用

nprogress 介绍与作用 1.nprogress 是一个轻量级的进度条组件,主要用于在页面加载或路由切换时显示一个进度条,提升用户体验。它的原理是通过在页面顶部创建一个 div,并使用 fixed 定位来实现进度条的效果 2.在 Vite Vue 3 项目中&#xf…

Jsp技术入门指南【六】jsp脚本原理及隐式对象

Jsp技术入门指南【六】jsp脚本原理及隐式对象 前言一、JSP 脚本元素1.1 声明1.2 表达式1.3 脚本标签 二、JSP 的隐式对象是什么三、隐式对象详解outrequestsessionapplicationconfigexception 前言 在之前的博客中,我们已经介绍了JSP的环境搭建、编译文件查找以及生…

vue3推荐的移动table库

vxe-table https://gitee.com/js-class/vxe-table#https://gitee.com/link?targethttps%3A%2F%2Fvxetable.cn 文档api https://vxetable.cn/#/component/table/other/bookkeepingVoucher 引入步骤 安装 npm install xe-utils vxe-tablenext 在项目main.js引入 import …

HOOPS Exchange 与HOOPS Communicator集成:打造工业3D可视化新标杆!

一、概述 在工业3D开发、BIM建筑、数字孪生和仿真分析等高端应用场景中,数据格式复杂、模型体量庞大、实时交互体验要求高,一直是困扰开发者的难题。Tech Soft 3D旗下的HOOPS Exchange和HOOPS Communicator,正是解决这类问题的黄金搭档。二者…

《软件设计师》复习笔记(14.3)——设计模式

目录 一、设计模式分类 1. 创建型模式(Creational Patterns) 2. 结构型模式(Structural Patterns) 3. 行为型模式(Behavioral Patterns) 真题示例: 一、设计模式分类 架构模式 高层设计决…

HarmonyOS:使用Refresh组件实现页面下拉刷新上拉加载更多

一、前言 可以进行页面下拉操作并显示刷新动效的容器组件。 说明 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。该组件从API Version 12开始支持与垂直滚动的Swiper和Web的联动。当Swiper设置loop属性为true时&…

55、⾸屏加载⽩屏怎么进⾏优化

答: (1)使⽤CDN 减⼩代码体积,加快请求速度; (2)SSR通过服务端把所有数据全部渲染完成再返回给客⼾端; (3) 路由懒加载,当⽤⼾访问的时候,再加载相应模块; (4) 使⽤外…

什么是Python单例模式

什么是Python单例模式 Python单例模式是一种创建型设计模式,目的是确保一个类仅有一个实例,并提供一个全局访问点来获取该实例。以下从作用和示例进行介绍: 作用 控制资源使用:避免对系统资源的重复消耗,像数据库连接、文件句柄等稀缺资源,只创建一个实例来管理使用,防…

Java 2025:解锁未来5大技术趋势,Kotlin融合AI新篇

各位Java开发者们好!🚀 2025年的Java世界正在经历一场前所未有的技术变革。作为深耕Java领域多年的技术博主,今天我将带大家深入探索Java生态即将迎来的5大技术趋势,特别是Kotlin的深度融合和AI技术的新篇章。准备好了吗&#xff…

计算机视觉cv2入门之车牌号码识别

前边我们已经讲解了使用cv2进行图像预处理与边缘检测等方面的知识,这里我们以车牌号码识别这一案例来实操一下。 大致思路 车牌号码识别的大致流程可以分为这三步:图像预处理-寻找车牌轮廓-车牌OCR识别 接下来我们按照这三步来进行讲解。 图像预处理 …

CExercise_13_1排序算法_3快速排序算法,包括单向分区以及双向分区

题目: 请手动实现快速排序算法,包括单向分区以及双向分区: // 单向分区快速排序算法 void quick_sort_one_way(int arr[], int len); //双向分区快速排序算法 void quick_sort_two_way(int arr[], int len); 关键点 分析: &#x…

FPGA-VGA

目录 前言 一、VGA是什么? 二、物理接口 三、VGA显示原理 四、VGA时序标准 五、VGA显示参数 六、模块设计 七、波形图设计 八、彩条波形数据 前言 VGA的FPGA驱动 一、VGA是什么? VGA(Video Graphics Array)是IBM于1987年推出的…

Linux和Ubuntu的驱动适配情况

旧 一、Linux Yocto3.0 二、Ubuntu 1.驱动 1.rtc正常 2.led正常 3.加密芯片正常 4.硬件看门狗不行,驱动已经适配好,等硬件修复后,直接使用脚本就可以 5.千兆网口可以,两个百兆网口不行 6.USB上面和下面都可以(插u盘…