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

一、应该知道的常识

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.

猜你喜欢

转载自blog.csdn.net/weixin_44029896/article/details/126760894