STM32-01-认识单片机

文章目录

  • 一、单片机简介
  • 二、Cortex-M系列介绍
  • 三、初识STM32
  • 四、STM32原理图设计
  • 五、搭建开发环境
  • 六、STM32初体验
  • 七、MDK5使用技巧

一、单片机简介

  • 单片机是什么?

    单片机:Single-Chip Microcomputer,单片微型计算机,是一种集成电路芯片。

    下面是电脑与单片机的对应关系:

    在这里插入图片描述

  • 单片机的特点?

    • 体积小:<5mmx5mm
    • 功耗低:mA级
    • 集成度高:IO、TIM、AD、DA
    • 使用方便:C、Debug
    • 拓展灵活:IIC、SPI、FSMC
  • 单片机有什么用?

    • 仪器仪表:电源、示波器、焊台
    • 家用电器:空调、冰箱、洗衣机
    • 工业控制:机器人、PLC、电梯
    • 汽车电子:GPS、ABS、胎压监测
  • 单片机发展历程?

    在这里插入图片描述

  • 了解两种指令集?

    对比项复杂指令集计算机(CISC)精简指令集计算机(RISC)
    目的为了便于编程和提高存储器访问效率为了提高处理器运行速度
    指令特点1,指令多,模式多,格式可变
    2,指令的执行需要的时钟周期差距很大
    3,无流水线或流水线程度较低
    4,指令由微代码翻译执行
    1,指令少,模式少,格式固定
    2,大多数指令只需1个时钟周期
    3,流水线结构
    4,指令直接由硬件执行
    优点1,指令丰富、功能强大
    2,寻址方式灵活
    1,指令精简,易于设计,使用率均衡
    2,程序执行效率高
    缺点1,指令使用率不均衡
    2,不利于采用先进结构提高性能
    3,结构复杂不利于超大规模集成电路实现
    1,指令数较少,功能不及CISC强大
    2,寻址方式不够灵活

    使用CISC和RISC举例

    在这里插入图片描述

  • 冯诺依曼结构和哈弗结构的区别?

    在这里插入图片描述

    冯诺依曼结构的优点是占用的资源少,哈弗结构的优点是执行效率较高。

二、Cortex-M系列介绍

  • ARM公司:只做内核设计和IP授权,不参与芯片设计。
    在这里插入图片描述

  • ARM架构为什么能风靡全球?

    1. 低功耗、低成本、高性能
    2. 支持16/32位双指令集
    3. 拥有众多合作伙伴
  • Cortex内核分类及特征?

    对比项Cortex-A
    (Application)
    Cortex-R
    (Real-time)
    Cortex-M
    (Microcontroller)
    特点高时钟频率,长流水线,高性能较高时钟频率,较长的流水线,实时性强时钟频率较低,通常较短的流水线,超低功耗
    应用场景移动计算、智能手机、平板电脑、数字电视军工、汽车电子、无线基带、硬盘控制器工控、传感器、消费电子、家用电器、医疗器械

三、初识STM32

  • STM32是什么?

    ST:意法半导体, M:MCU/MPU,32:32位

    在这里插入图片描述

  • STM32命名规则?

    在这里插入图片描述

四、STM32原理图设计

  • 芯片的基本参数(STM32F103ZET6)

    参数范围
    主频72MHz
    FLASH512KB
    SRAM64KB
    工作电压2.0~3.6V
    最大电流150mA
    IO引脚接入电压范围COMS端口:-0.3V ~ 3.6V 兼容5V端口:-0.3V ~ 5.5V
    单个IO引脚最大电流25mA
  • STM32F103ZET6引脚分布

    在这里插入图片描述

    STM32引脚类型:电源引脚、晶振引脚、复位引脚、下载引脚、BOOT引脚、GPIO引脚。

  • 单片机最小系统?

    最小系统:保证MCU正常工作的最小电路组成单元

在这里插入图片描述

  • 电源电路

    在这里插入图片描述

  • 复位电路

在这里插入图片描述

  • BOOT启动电路

    在这里插入图片描述

  • 晶振电路

    在这里插入图片描述

  • 下载调试电路

    在这里插入图片描述

五、搭建开发环境

  • 常用开发工具

    工具名称所属公司说明
    集成开发环境(IDE)MDKKeilSTM32最常用的集成开发环境,简单易用
    EWARMIAR支持STM32开发,用的人少一些
    仿真器DAPARM开源、免驱、带虚拟串口功能、速度快、廉价
    STLINKST支持全面、稳定、廉价
    JLINKSegger稳定、高速、价格贵
    串口调试助手XCOM正点原子功能多、稳定、简单易用
    SSCOM丁丁稳定、小巧、简单易用
  • STM32串口和电脑USB通信示意图?

    在这里插入图片描述

六、STM32初体验

  • MDK5编译例程

    使用MDK5编译例程,在Program Size里面有四种数据类型,Code、 RO-Data、RW-Data、ZI-Data

    数据类型占用Flash or SRAM说明
    CodeFlash代码
    RO-DataFlash只读数据,一般是指 const 修饰的数据
    RW-DataFlash and SRAM初值为 非 0 的可读可写数据
    ZI-DataSRAM初值为 0 的可读可写数据
  • DAP下载

    • 电路连接

      在这里插入图片描述

    • 硬件连接

      在这里插入图片描述

    • 软件配置

      配置ST-Link
      在这里插入图片描述

      设置下载算法

      在这里插入图片描述

    • 开始调试

      在这里插入图片描述

    1. 复位:其功能等同于硬件上按复位按钮。相当于实现了一次硬复位。按下该按钮之后,代码会重新从头开始执行。
    2. 执行到断点处:该按钮用来快速执行到断点处,有时候你并不需要观看每步是怎么执行的,而是想快速的执行到程序的某个地方看结果,这个按钮就可以实现这样的功能,前提是你在查看的地方设置了断点。
    3. 停止运行:此按钮在程序一直运行的时候会变为有效,通过按该按钮,就可以使程序停止下来,进入到单步调试状态。
    4. 执行进去:该按钮用来实现执行到某个函数里面去的功能,在没有函数的情况下,是等同于执行过去按钮的。
    5. 执行过去:在碰到有函数的地方,通过该按钮就可以单步执行过这个函数,而不是进入这个函数单步执行。
    6. 执行出去:该按钮是在进入了函数单步调试的时候,有时候可能不必再执行该函数的剩余部分了,通过该按钮就可以一步执行完该函数的剩余部分,并跳出函数,回到函数被调用的地方。
    7. 执行到光标处:该按钮可以迅速的使程序运行到光标处,其实是挺像执行到断点处按钮功能,但是两者是有区别的。断点可以有多个,但是光标所在处只有一个。
    8. 反汇编窗口:通过该按钮,就可以查看汇编代码,可以用来分析程序。
    9. Call Stack窗口:通过该按钮,显示调用关系和局部变量窗口,显示当前函数的调用关系和局部变量,方便查看,对分析程序非常有用。
    10. 观察窗口:MDK5提供了2个观察窗口,该按钮按下,会弹出一个显示变量的窗口,输入你所想要观察的变量/表达式,即可查看其值,是很常用的一个调试窗口。
    11. 内存查看窗口:MDK5提供4个内存查看窗口,该按钮按下,会弹出一个内存查看窗口,可以再里面输入你要查看的内存地址,然后观察这一片内存的变化情况。是很好用的调试窗口。
    12. 串口打印窗口:MDK5提供4个串口打印窗口,该按钮按下,会弹出一个类似串口调试助手界面的窗口,用来显示从串口打印出来的内容。
    13. 系统分析窗口:图标下面有6个选项,我们一般用第一个,也就是逻辑分析窗口(Logic Analyzer),点击即可调出该窗口,通过SETUP按钮新建一些IO口,就可以观察这些IO口的电平变化情况,以多种形式显示出来,比较直观。
    14. 系统查看窗口:该按钮可以提供各种外设寄存器的查看窗口,选择对应外设,即可调出该外设的相关寄存器表,并显示这些寄存器的值,方便查看设置的是否正确。
    • Call Stack窗口:查看函数调用关系或局部变量

      在这里插入图片描述

    • Watch窗口:查看函数首地址或变量值

      在这里插入图片描述

    • Memory窗口:内存查看窗口

      在这里插入图片描述

      M3/M4/M7内核是小端模式,内存的值得倒着读

      • Peripheral窗口:查看寄存器的值

        在这里插入图片描述

    • 注意事项

      1. 仿真时,使用MDK的Level 0等级优化

        在这里插入图片描述

      2. 调试停止在断点处时,只是内核停止,外设会继续运行

      3. 断点的设置要有时间观念,考虑是否会打断正常通信

七、MDK5使用技巧

  • 编辑器设置

    在这里插入图片描述

  • 字体和颜色设置

    在这里插入图片描述

  • 用户关键字设置

    在这里插入图片描述

  • 代码提示/语法检查

    在这里插入图片描述

  • 快速定位函数或变量被定义的地方

    在这里插入图片描述

声明:参考文献来源: 战舰STM32F103ZET6开发板资源包

  1. Cortex-M3权威指南(中文).pdf
  2. STM32F10xxx参考手册_V10(中文版).pdf
  3. STM32F103 战舰开发指南V1.3.pdf
  4. STM32F103ZET6(中文版).pdf
  5. 战舰V4 硬件参考手册_V1.0.pdf

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

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

相关文章

【mysql】下一行减去上一行数据、自增序列场景应用

背景 想获取if_yc为1连续账期数据 思路 获取所有if_yc为1的账期数据下一行减去上一行账期&#xff0c;如果为1则为连续&#xff0c;不等于1就为断档获取不等于1的最小账期&#xff0c;就是离当前账期最近连续账期 代码 以下为mysql语法&#xff1a; select acct_month f…

基于 librosa和soundfile对音频进行重采样 (VITS 必备)

基于 librosa和soundfile对音频进行重采样 一、前言 在玩bert-vits2的时候有对音频进行重采样的需求&#xff0c;故写了一下批量对音频进行重采样的脚本。 优化点&#xff1a; 根据机器自适应线程数为最多&#xff0c;保证充分利用机器资源&#xff0c;提高速度>30%。支持…

Caching the Application Engine Server 缓存应用程序引擎服务器

Caching the Application Engine Server 缓存应用程序引擎服务器 Application Engine caches metadata just like the application server. This caching enhances performance because a program can refer to the local cache for any objects that it uses. 应用程序引擎…

iPaaS架构深入探讨

在数字化时代全面来临之际&#xff0c;企业正面临着前所未有的挑战与机遇。技术的迅猛发展与数字化转型正在彻底颠覆各行各业的格局&#xff0c;不断推动着企业迈向新的前程。然而&#xff0c;这一数字化时代亦衍生出一系列复杂而深奥的难题&#xff1a;各异系统之间数据孤岛、…

C语言猜数字升级版

题目概述 猜数字是一种益智游戏&#xff0c;既可以两个人一起玩&#xff0c;也可以与电脑一起玩。现在我们需要将这个游戏移到电脑上&#xff0c;让电脑与我们一起玩猜数字游戏. 需求分析 用户输入&#xff1a;确定用户输入的数据是否正确游戏过程&#xff1a;保证计算机能正…

Redis HyperLogLog 数据结构模型统计

HyperLogLog HyperLogLog 不是一种新的数据结构 &#xff0c; 本质上是字符串类型。 是一种基数算法。 通过 HyperLogLog 可以节省内存空间&#xff0c;并完成独立总数的统计。 HyperLogLog 数据结构可用于仅使用少量恒定内存来计算集合中的唯一元素&#xff0c;具体而言&…

Linux高级管理-基于域名的虚拟Web主机搭建

客服机限制地址 通过 Require 配置项&#xff0c;可以根据主机的主机名或P地址来决定是否允许客户端访问。在httpd服 务器的主配置文件的<Location>&#xff0c;<Directory>、<Files>、<Limit>配置段中均可以使用Require 配置 项来控制客户端的访问。使…

Linux——web网站服务(一)

一、安装httpd服务器Apache网站服务 1、准备工作 为了避免发送端口冲突&#xff0c;程序冲突等现象&#xff0c;卸载使用rpm方式安装的httpd #使用命令检查是否下载了httpd [rootserver ~]# rpm -qa httpd #如果有则使用 [rootserver ~]# rpm -e httpd --nodeps Apache的配置…

c语言插入排序及希尔排序详解

目录 前言&#xff1a; 插入排序&#xff1a; 希尔排序&#xff1a; 前言&#xff1a; 排序在我们生活中无处不在&#xff0c;比如学生成就排名&#xff0c;商品价格排名等等&#xff0c;所以排序在数据结构的学习中尤为重要&#xff0c;今天就为大家介绍两个经典的排序算法&…

异常处理详解

异常概述 什么是异常&#xff1f; 异常是程序在“编译”或者“执行”的过程中可能出现的问题&#xff0c;注意&#xff1a;语法错误不算在异常体系中。 比如:数组索引越界、空指针异常、 日期格式化异常&#xff0c;等。 为什么要学习异常? 异常一旦出现了&#xff0c;如果…

.9.png编译报错

android项目中使用9-patch图编译报错&#xff1a;AAPT: error: file failed to compile. 原因是因为.9.png图中有线之间断开或者黑点的存在&#xff0c;把线连上或者把黑点去掉就可以了。如下&#xff1a;

2024 年 SEO 现状

搜索引擎优化&#xff08;SEO&#xff09;一直以来都是网络知名度和成功的基石。随着我们踏上 2024 年的征程&#xff0c;SEO领域正在经历重大变革&#xff0c;有些变革已经开始&#xff0c;这对企业、创作者和营销人员来说既是挑战也是机遇。 语音搜索 语音搜索曾是一个未来…

Python爬取酷我音乐

&#x1f388; 博主&#xff1a;一只程序猿子 &#x1f388; 博客主页&#xff1a;一只程序猿子 博客主页 &#x1f388; 个人介绍&#xff1a;爱好(bushi)编程&#xff01; &#x1f388; 创作不易&#xff1a;喜欢的话麻烦您点个&#x1f44d;和⭐&#xff01; &#x1f388;…

用23种设计模式打造一个cocos creator的游戏框架----(十三)模板方法模式

1、模式标准 模式名称&#xff1a;模板方法模式 模式分类&#xff1a;行为型 模式意图&#xff1a;定义一个操作中的算法骨架&#xff0c;而将一些步骤延迟到子类中。Template Method 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 结构图&#xff1a…

BigData之Google Hadoop中间件安装

前言 Hadoop / Zookeeper / Hbase 因资源有限 这三个都是安装在同一台Centos7.9的机器上 但通过配置 所以在逻辑上是distributed模式 1 Java安装 1.1 下载java11 tar/opt/java/jdk-11.0.5/ 1.2 环境配置修改 文件/etc/profile export JAVA_HOME/opt/java/jdk-11.0.5/ e…

【复现】vid2vid_zero

问题及解决方法总结。 code&#xff1a;GitHub - baaivision/vid2vid-zero: Zero-Shot Video Editing Using Off-The-Shelf Image Diffusion Models 1.AttributeError: UNet2DConditionModel object has no attribute encoder 据说是预训练模型结构不匹配&#xff0c;偷懒把a…

java工程(ajax/axios/postman)向请求头中添加消息

1、问题概述 在项目中我们经常会遇到需要向请求头中添加消息的场景&#xff0c;然后后端通过request.getRequest()或者RequestHeader获取请求头中的消息。 下面提供几种前端向请求头添加消息的方式 2、创建一个springmvc工程用于测试 2.1、创建工程并引入相关包信息 sprin…

家具制造ERP软件包含哪些功能?家具制造业ERP系统哪个好

不同的家具有不同的用料、品质、制造工时、营销渠道等&#xff0c;而有些家具制造企业采用传统的管理方式在处理物料BOM、生产实际成本核算、库存盘点、供应商选择、班组计件核对、生产领用以及物料追溯等方面存在不少提升空间。 与此同时也有很多的皮具制造企业借助ERP软件优…

​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案

随着“第四次工业革命”的爆炸式发展&#xff0c;众多企业都将自己的业务与迅速发展的应用开发和网站建设领域高度绑定。而对于众多有上云需求的企业和个人用户来说&#xff0c;选择一款自己的服务器配置就成为了一项至关重要的任务。而随着需求端的不断扩大&#xff0c;云服务…

宝塔PostgreSQL设置数据库远程访问

宝塔PostgreSQL设置数据库远程访问 宝塔的PostgreSQL1. 添加数据库2. 打开PostgreSQL设置界面3. 修改配置4. 重载配置/重启数据库 Docker的PostgreSQL1. postgresql.conf2. pg_hba.conf3. 重启数据库 注意其他问题 宝塔PostgreSQL设置数据库远程访问&#xff1f;docker容器Post…