【嵌入式基础&常识】单片机

2023-05-16

学习知识:先广度,后深度

  • 一、应该知道的常识
    • 1.ARM(内核)
    • 2.单片机=MCU=微控制器(芯片)
    • 3.电路板(板卡)
    • 4.嵌入式系统(应用)
    • 5.CPU性能
    • 8.倍频、分频
    • 9.TTL和CMOS电平
    • 10.常见编译错误 ?
    • 11.仿真器
    • 12.精简指令集
    • 13.ST、ARM官网
    • 14.STM32命名规则
    • 15.阅读芯片手册
    • 16.软件和硬件如何联系
    • 17.程序下载到SRAM还是FLASH
  • 二、单片机的内部功能
    • 0.将单片机内部功能划分为三部分
    • 1.核心功能:内核
    • 2.核心功能:存储器
    • 3.核心功能:时钟
    • 4.重要功能:低功耗
    • 5.重要功能:ADC
    • 6.重要功能:DMA
    • 7.重要功能:GPIO
    • 8.重要功能:调试
    • 9.重要功能:定时器
    • 10.重要功能:通信接口
    • 11.RTC
    • 12.NVIC
    • 13.EXTI
    • 14.自举模式
    • 11.附加功能:CRC
    • 12.附加功能:芯片号
  • 三、实际编程
    • 0.软件准备
    • 1.需要会的C知识
    • 2.工程文件
    • 3.

一、应该知道的常识

1.ARM(内核)

  • ARM:是一个模糊词,它可以代表ARM公司、ARM内核=ARM处理器。
  • 内核和框架:框架像原理图,内核像PCB,一种框架可以画多个版本PCB。
  • ARM处理器 :英国ARM公司设计了ARM处理器,我们通常说的ARM就是指ARM处理器。ARM处理器只是众多中央处理器- (CPU)中的一种。
  • Cortex 处理器:Cortex是ARM公司一个系列处理器的名称。例如:cortex M0 M3 M4 M7

2.单片机=MCU=微控制器(芯片)

  • 单片机:是集成电路芯片。包含了中央处理器CPU(例如32单片机包含了ARM处理器)、RAM、ROM…
  • STM32单片机:是意法半导体公司设计的嵌入式单片机。(单片机型号有:STM32 F0 F1 F2 F3 F4 F7 H7)。CPU采用的是ARM处理器。(STM32F1采用cortex-M3内核、F4采用cortex-M4内核、F7采用cortex-M7内核、H7采用双核M7+M4)

3.电路板(板卡)

4.嵌入式系统(应用)

  • 嵌入式系统最大的特点是根据产品的需要设计功能,没有过多的功能,最大限度降低成本。低成本+高性能,所以才有那么多低端的单片机,成本低,但能满足产品需求。
  • 嵌入式系统 = 单片机板卡 + 嵌入式操作系统 。(不一定非要操作系统,一切都是为了低成本,便开发)

5.CPU性能

  • DMIPS、MIPS:都是用来测试CPU的几种不同方法不同程序,仅供参考,不能全信。

8.倍频、分频

  • 倍频:把外部晶振频率提升到CPU需要的高频率。
  • 分频:把高频降下去,给单品机其他部分提供不同的频率。
  • PLL:倍频器。锁相环。
  • Prescaler:预分频器。

9.TTL和CMOS电平

  • 电平就是人为规定的一种规则,用01逻辑信号代表高低电压信号。
  • 常见的电平类型:TTL、CMOS、LVTTL、LVCOMS、RS232、RS485等
  • TTL:VCC=5V。
  • LVTTL(Low Voltage):VCC=3.3V。VIH>=2V,VIL<=0.8V。
  • TTL输入引脚悬空时,默认高电平。
  • CMOS:VCC=+5~+15
  • 不同系统相连,比如单片机、DSP、FPGA等,需要查下手册,看看电平定义。

10.常见编译错误 ?

11.仿真器

  • 程序下载到仿真器里,不是Flash里。没用过

12.精简指令集

  • 指令集:软件和硬件转换的点。
  • 精简指令集和复杂指令集,电脑是复杂指令集,硬件比较庞大复杂功耗大。
  • ARM处理器是32位(兼容16位)精简指令集。

13.ST、ARM官网

  • ST官网: link
  • 通过看公司官网能看出他是做啥的,面向的客户是谁。
  • ST就是面向开发者,官网资料多一些,页面也比较友好。ARM就是面向芯片工厂,官网感觉就不太友好。

14.STM32命名规则

  • ST代表公司名。M代表微处理器。32代表ARM32位处理器。F表示性能。103系列。后面几位表示引脚数、内存大小、封装类型、工作温度。
  • 总结:STM32F103几位就决定了一款芯片。C8T6几位决定其引脚数和内存大小等。

15.阅读芯片手册

  • 先浏览目录标题,看下有些什么东西。
  • 主要还是图表
    • 11页:单片机内部模块框图
    • 12页:时钟树
    • 13页及后面:引脚图
  • 读图:梯形是选择器、粗线是总线、细线是单引脚、线内为单片机内部。
    在这里插入图片描述

16.软件和硬件如何联系

  • 软件就是指用户程序,目前有寄存器、库函数、HAL库三种。不论哪种,最终都是在操作 地址和状态,最终操作单片机。
  • SRAM里有单片机内置的功能配置寄存器,最终去操作硬件。
  • 详细查看数据手册 存储器映像、寄存器地址表。

17.程序下载到SRAM还是FLASH

  • 一开始,代码、常量、全局变量 都是下载到flash里的。
    然后程序开始运行后,全局变量就到sram里了,代码和常量还在flash里
  • 参考大佬文章:https://blog.csdn.net/yangkuiwu/article/details/78219995

二、单片机的内部功能

(第一部分的图都放最后,试试第二部分插在文章中间,之前感觉插入图会很乱,现在感觉没有图太抽象)

0.将单片机内部功能划分为三部分

  • 核心功能:内核、存储器、时钟。(类似电脑的CPU、内存条、硬盘)
  • 重要功能:外设。
  • 附加功能:CRC、芯片号。

1.核心功能:内核

  • 采用ARM32位处理器,cortex-M3。最高工作频率72MHz。

2.核心功能:存储器

  • SRAM和FLASH。STM32F103中等容量系列,64K或128K的FLASH,20K的SRAM。
  • 两者主要区别是:掉电能否保存、速度快慢。

3.核心功能:时钟

  • HSE外部高速晶振振荡器:4~16MHz,用作系统时钟。
  • LSE外部低速晶振振荡器:32khz,用于RTC。
  • HSI内部高速RC振荡器:8MHz,用作系统时钟。
  • LSI内部低速RC振荡器:40KHz,用于RTC。
  • 总结:外接的精准,但贵。
  • 时钟分类:内核与外设时钟、独立时钟

4.重要功能:低功耗

5.重要功能:ADC

  • 2个12位ADC,共用16个外部通道。
  • 可以使用DMA

6.重要功能:DMA

  • 7通道DMA,支持外设有定时器、ADC、USART、I2C、SPI。

7.重要功能:GPIO

  • I/O:input和output。引脚不等于IO,IO指的是能输入输出的引脚,引脚还包括电源脚之类。C8T6有48个引脚,其中37个IO口。
  • GPIO:32里的定义。就是通用IO口。
  • 输出电流最大:8ma,输入电流最大:20ma。所以对LED的驱动方式就有推挽驱动和灌电流驱动,关电流驱动就会更亮一点。
  • 32里输入输出方式有:
    • 四种输入:模拟、浮空、上下拉。
    • 四种输出:推挽、开漏,复用推挽、开漏。(推挽是大电流输出,有驱动能力,开漏无驱动能力。)

8.重要功能:调试

  • 有SWD和JTAG,是内嵌在ARM内核里的。

9.重要功能:定时器

  • 7个定时器,3个普通16位,1个高级16位,2个开门狗12位、7位,1个嘀嗒定时器。

10.重要功能:通信接口

  • 9个通信接口,3个USART、2个I2C、2个SPI、一个CAN、一个USB2.0。
  • USART1 通信速率4.5M每秒,另外两个2.25。
  • I2C通信速度:
  • SPI通信速度18M每秒。
  • CAN通信速度1M每秒。
  • USB通信速度12M每秒。

11.RTC

12.NVIC

13.EXTI

14.自举模式

  • 正常情况都是从FLASH启动。ISP下载时从系统启动。调试时从SRAM启动,下载程序快,但是断电丢失。

11.附加功能:CRC

  • CRC用于数据正确性的校验。

12.附加功能:芯片号

  • 每个芯片有一个唯一的96位的序列号。

三、实际编程

0.软件准备

  • keil5、Jlink驱动

1.需要会的C知识

  • #if #endif
    enum
    char8 int16 long float32
    typedef
    struct
  • 32位MCU下,字=4字节

2.工程文件

3.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【嵌入式基础&常识】单片机 的相关文章

  • 六、ROS2通信机制(服务)

    一 服务介绍 客户端发送请求给服务端 xff0c 服务端可以根据客户端的请求做一些处理 xff0c 然后返回结果给客户端 这里与话题的主要区别就是 xff1a 话题是没有返回的 xff0c 适用于单向或大量的数据传递 而服务是双向的 xff
  • 作业4-8-5:HBase Shell插入数据:学生表、课程表、选课表

    现有以下关系型数据库中的表和数据 xff0c 要求将其转换为适合于HBase存储的表并插入数据 xff1a 学生表 xff08 Student xff09 keyRow 学号 xff08 S No xff09 姓名 xff08 S Name
  • 树莓派4B连接PCF8591模块

    1 PCF8591是8位的数模 模数转换集成芯片 xff0c 如图 1 xff08 详细介绍可以点击参考 xff09 图 1 PCF8591 2 AIN0 AIN3接模拟输入 xff0c 比如气体传感器 xff0c 能外接三个通道的模拟输入
  • “指定的网络名不再可用”解决办法

    主机操作系统 xff1a win10 linux操作系统 xff1a ubuntu22 04 在Windows下安装ubuntu xff08 wsl xff09 时 xff0c 出现 指定的网络名不再可用 xff0c 解决办法如下 xff1
  • Jetson xavier nx 安装CUDA10.2,和cudnn8.0

    2022 6 16更新 现在Jetson xavier nx 安装CUDA和CUDNN不需要下面那么复杂了 xff0c 可以直接通过刷机将其安装到设备上 在官网下载SDK Manager可以直接将CUDA烧录进设备 xff08 特别注意如果
  • 关于return用法时,return报错。

    在for循环里面return想要跳出全部循环时 xff0c 会报语法错误SyntaxError return outside function 原因是return只能写在def函数里面 没有def n span class token op
  • 联邦卡尔曼滤波

    联邦Kalman滤波 利用Kalman滤波技术对多传感器数据进行最优融合有两种途径 集中式Kalman滤波和分散化滤波 集中式Kalman滤波利用一个滤波器来集中处理所有子系统的信息 分散化滤波利用子滤波器处理子系统的信息通过全局滤波器实现
  • 教你10分钟完成智能小车的PID调速

    简介 这是我在CSDN上面的第一篇博客 xff0c 来分享一下我是如何用最短的时间进行智能小车的PID调速的 在疫情期间比较无聊 xff0c 在某宝买了一个智能小车底盘和一堆零件 xff0c 基于Arduino Due和树莓派进行开发 xf
  • 实战低通滤波和卡尔曼滤波

    目录 背景所需硬件与软件理论基础一阶低通滤波卡尔曼滤波 仿真验证实际验证总结 背景 滤波这个词对任何一个工科生都不会陌生 xff0c 尤其是做控制或者信号方面的从业者和学生 我们不仅可以通过硬件滤波也可以通过软件设计算法滤波 xff0c 这
  • matplotlib保存图片为pdf格式,文字以字体形式保存,可以illustrator编辑,而不是喵点格式。

    用默认的 plt savefig xff08 xff09 保存的图片 xff0c 图利和label都是以瞄点保存的 xff0c 而不是以文字格式 这样在矢量图编辑中想要调整文字大小和字体时都不方便 使用mpl可以设置pdf图片文字以字体形式
  • 树莓派新系统无键盘安装与设置

    sudo raspi config 1 在Boot根目录下创建文件 xff1a wpa supplicant conf xff1a country 61 CN ctrl interface 61 DIR 61 var run wpa sup
  • 无人机自动驾驶软件系列 E01:OFFBOARD控制以及Gazebo仿真

    引言 https gaas gitbook io guide software realization build your own autonomous drone wu ren ji zi dong jia shi xi lie off
  • 一定能解决ROS系统 rosdep update超时问题de简单方法

    rosdep update命令使用 该方法是可以跳过sudo rosdep init初始化命令设置的 xff0c 前提是安装ros xff1a https blog csdn net weixin 44023934 article deta
  • 使用速腾雷达32线Helios和fast-LIO2算法建图(一)

    一 配置激光雷达数据 参考链接Ubuntu18 04 安装速腾聚创最新驱动RSLidar SDK采集XYZIRT格式的激光点云数据 SLAM不学无术小问题 下载驱动文件内部也有使用说明 第一步 xff1a 下载rslidar sdk xff
  • linux下发各种协议包及其详细分析

    申明 xff1a 本实验在一个虚拟机环境下完成 xff0c ip分别为 192 168 26 1 和 192 168 26 132 一 以太帧格式的分析 1 抓取方法描述 在192 168 26 132浏览网页产生数据包 xff1b 通过w
  • 使用速腾雷达32线Helios和fast-LIO2算法建图(三)

    一 建图 1 源码下载 https github com hku mars FAST LIO 2 配置环境 步奏一 安装PCL gt 61 1 8 PCL的安装可以参考 可选 xff0c 建议考虑不用安装 https blog csdn n
  • Ubuntu 18.04 安装RealSense D435教程

    1 更新内核 运行代码 uname r 如果 gt 61 4 4 0 50的版本则ok xff0c 否则需要升级内核 2 更新cmake xff08 需要3 6以上版本 xff09 xff08 需要科学上网 xff09 首先下载cmake
  • Ros 与 STM32 之Ros串口同设备USB固定

    研究后发现Ros与STM32 都是通过串口 TTL转USB 的方式连接到USB A xff1a 有两种形式 一种 使用 ros kinetic serial 中的py 包用的ROS的serial功能包 B xff1a 另一种则是使用编写的c
  • ROS 动态参数 实时调参方式

    前言 xff1a 开发者常常需要动态调整参数以查看机器人在不同参数下的性能表现 xff1b 无论是通过YAML 文件配置参数还是通过节点句柄操作参数 xff0c 都会面临一个问题 xff0c 如果节点不主 动查询参数值 xff0c 就无法获
  • 上下文切换的概念

    上下文切换 xff08 也可以称作进程切换或任务切换 xff09 xff0c 它指的是 CPU 从一个进程 xff08 或线程 xff09 切换至另一个进程 xff08 或线程 xff09 上下文指的是某一时间点 CPU 寄存器和程序计数器

随机推荐

  • 多旋翼-六轴硬件选型

    挑战杯所用六轴 机架 定 桨叶机重 定 拉力 xff08 机重除以0 4 xff09 拉力 电池 桨叶 定 电机定 电调
  • 基于51的扫地车

    51复习 AT89S51系列单片机的ISP下载是通过P15 P16 P1 7 RST引脚来下载的 xff0c 而宏晶国产STC单片机则具有串口ISP功能 xff0c 可直接使用串口 xff0c 将程序下载进单片机 40个引脚 https b
  • pix2.4.8 从入手到装机(2021.4.4)

    2023 2 10 我重新完完整整的又走了一次 xff0c 记录了一下过程 xff1a 飞控是pix2 4 8 xff0c 固件是APM 原文 xff1a 咸鱼入手2套辣鸡pix xff0c 第一次使用并检查硬件好坏 xff0c 确认是否退
  • 焊板常用元器件(2021.4.6)

    钽电容 正负 xff1a 有线一端为正级 耐压 xff1a 2 Led Key buzzer 按键 xff1a 对角线焊到电路中 灯 xff1a 绿条是负 蜂鸣器 xff1a 区分有无源 xff0c 引脚 xff0c 有正负为有源 xff0
  • 恒温箱课程设计(2021.4.12)

    第一步 方案选择 淘宝闲鱼csdn 主要难点在于 xff1a 小控大是难点 xff0c 对执行器和驱动的选择 最终 电磁和固态继电器都不行 xff0c 要可控相位的继电器 xff0c 太贵了 只能固态了 xff0c if控制 xff0c 效
  • JVAV学习笔记(二)—接口

    JVAV学习笔记 xff08 二 xff09 接口 abstract class AbsDemo abstract void show1 abstract void show1 interface Inter public static f
  • CAD2020入门学习(2021.4.13)

    学习途径 xff1a 软件管家CAD2018网课 第一步 界面熟悉 第二步 新建 保存 关闭 第三步 基本操作 xff1a 鼠标 xff0c 命令 xff0c 相对坐标和极坐标 第四步 搜索 xff1a CAD快捷键 画直线 L画圆 C画弧
  • 32平衡车

    1 组装 底板和主板到了 xff0c 组装 xff0c 测试 问题 xff1a tb6612电容炸了 原因 xff1a xff1f xff1f xff1f xff08 1 xff09 钽电容纹波电流小 xff0c 扛过流能力弱 xff0c
  • 储物柜2022.1.1

    keil pack http www keil com dd2 pack keil 安装 httpsblog csdn netMatcha ice creamarticledetails118684582 Jlink驱动 https www
  • 【动手学深度学习】环境配置(详细记录,从vmware虚拟机安装开始)

    目录 装了很多次环境 xff0c 步骤已精简每一步都不可缺 xff0c 也得按顺序第一大步 xff1a VMware 安装 43 使用 VMware 下载及安装 ubuntu18 04 下载 VMware 使用 第二大步 xff1a ubu
  • 【物资投放无人机】记录( ROS + PX4 + YOLOV5 + ESP8266 + 舵机)

    目录 写在前面 xff1a 硬件环境写在前面 xff1a 软件环境一 无人机组装 调试 xff08 PX4或APM xff09 二 Jetson Nano 43 ROS 43 YOLO 目标检测实现 win10安装YOLOv5环境 训练模型
  • 【K210踩坑】pytorch模型转kmodel,Dock上使用。(最终未实现)

    目录 前言一 踩大坑二 pytorch 转 kmodel第 步 xff1a pytorch模型搭建 训练 保存第 步 xff08 思路一 xff09 xff1a pytorch 转 onnx 转 pb 转 tflite 转 kmodel1
  • 【常用命令】conda、linux、ros

    目录 一 conda xff08 0 xff09 获取帮助 xff08 1 xff09 列出所有环境 xff08 2 xff09 创建新环境 xff08 3 xff09 删除环境 xff08 4 xff09 激活环境 xff08 5 xff
  • 【车机协同slam】miniPC、Nano、T265、UWB linktrack P-B

    目录 0 前言0 1 软硬件0 2 实现步骤 一 装系统 换源 装ROS1 1 装系统 换源2 1 装ROS 二 T2652 1 ubuntu 安装 T265 SDK xff08 已测18 20 Nano xff09 xff1a 2 2 u
  • 【keil使用】

    目录 一 下载安装1 1下载安装破解1 2 pack包下载 二 颜色设置三 基础使用四 仿真使用 一 下载安装 1 1下载安装破解 1 2 pack包下载 二 颜色设置 三 基础使用 四 仿真使用
  • 【焊接基础】

    目录 一 焊接工具 xff08 多了解 xff09 一 常见元器件焊接1 1 稳压管1 2 保险丝1 3 二 常见电路2 1 降压电路2 2 防反接电路 三 焊接方法3 1 焊接步骤3 2 芯片 QFP封装3 3 芯片 BGA封装 四 常见
  • ONOS安装和运行

    安装运行ONOS 1 安装Karaf Maraf http archive apache org dist karaf 3 0 3 apache karaf 3 0 3 tar gz http archive apache org dist
  • 【mavros安装】GeographicLib踩坑及解决

    目录 xff08 0 xff09 介绍 xff08 1 xff09 安装mavros xff08 2 xff09 安装GeographicLib xff08 官网方法 xff0c 报错了就用下一个我用的方法 xff09 xff08 2 xf
  • 【PCB设计】

    目录 一 原理图二 PCB2 1 走线宽度 一 原理图 二 PCB 2 1 走线宽度 电流 xff1a xff08 主要考虑发热和压降问题 xff0c 走线相当于电阻 xff0c 越粗电阻越小 xff0c 发热越小 xff09 过1A电流
  • 【嵌入式基础&常识】单片机

    学习知识 xff1a 先广度 xff0c 后深度 一 应该知道的常识1 ARM xff08 内核 xff09 2 单片机 61 MCU 61 微控制器 xff08 芯片 xff09 3 电路板 xff08 板卡 xff09 4 嵌入式系统