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

  • 一、应该知道的常识
    • 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.

【嵌入式基础常识】单片机相关推荐

  1. 应邀ITGeGe在线教育社区嵌入式基础开发讲师

    最近,被一家IT在线公司邀请去做嵌入式基础课程的讲师,我感觉非常荣幸,虽然我还是菜鸟一个,难得有这样的企业会看得起我,这也是对我的一个磨练吧,可以培养我继续不断学习技术的动力,同时还能将技术通过自身的 ...

  2. 【Java开发语言 01】第一章 Java语言概述(基础常识+Java语言概述+Java程序运行机制及运行过程+Java语言环境的搭建+开发体验hello world+错误:编码GBK的不可映射字符)

    java入门-第一章Java语言概述 1基础常识 软件开发 人机交互方式 常用的DOS命令(win系统,有一些直接通过命令执行的) 2 Java语言概述 什么是计算机语言 关于面向对象和面向过程 Ja ...

  3. 嵌入式系统概念以及嵌入式基础知识

    嵌入式系统概念以及嵌入式基础知识 \\\插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的(禾厶-亻言-手戈).最近比较闲,带做毕设,带学生参加省级以上比赛/ ...

  4. (一)PPC的基础常识

    (一)PPC的基础常识 一.什么是PDA PDA是Personal Digital Assistant的缩写,照中文翻译称为"个人数位助理",它只是个概念 ,大体上就是一个能更有效 ...

  5. ChinaSoft 论坛巡礼 | 嵌入式基础软件论坛

    2022年CCF中国软件大会(CCF ChinaSoft 2022)将于2022年11月25-27日在线上举行.预期将有林惠民.陈左宁.邬江兴.何积丰.梅宏.吕建.柴洪峰.廖湘科.王怀民.郑纬民.蒋昌 ...

  6. 端口基础常识大全+常用端口对照

    端口基础常识大全+常用端口对照 [color=Red][size=4][b]端口基础常识大全[/b][/size][/color] [color=Green]1) 公认端口(Well Known Po ...

  7. 操作系统(三十二)内存的基础常识

    3.1 内存的基础常识 目录 3.1 内存的基础常识 3.1.1 计算机的多级存储结构 3.1.2 程序的装入和链接 3.1.1 计算机的多级存储结构 对于计算机的存储结构而言一般可以分为三层:最高层 ...

  8. 嵌入式基础(1)---硬件知识,搞嵌入式开发必备

    嵌入式基础硬件知识,搞嵌入式开发必备 做嵌入式系统开发,经常要接触硬件.做嵌入式开发对数字电路和模拟电路要有一定的了解. 这样才能深入的研究下去.下面我们简单的介绍嵌入式开发中的一些硬件相关的概念. ...

  9. 计算机奥林匹克竞赛基础知识,竞赛考什么?五大学科竞赛基础常识盘点

    原标题:竞赛考什么?五大学科竞赛基础常识盘点 继高校自主招生/综合评价认可奖项后,本文对五大学科竞赛进行盘点,从竞赛主办方.竞赛进程.竞赛考试范围.竞赛作用等方面进行分析,供家长和考生参考. 五大学科 ...

  10. 班章管家理财入门基础常识有什么?理财产品怎样买最合适

    关于新手小白来说,自己去探索是一个绵长的进程,假如呈现理财失利的状况,是会亏本钱的,那么多了解和看相关理财常识,是能让自己少走弯路的,那么理财入门基础常识有什么?新手小白理财产品怎样买最合适?理财入门 ...

最新文章

  1. mysql插入数据返回主键值_Mysql千万级别数据批量插入只需简单三步!
  2. ae saber插件_入门AE:影视特效中的黑洞是怎么做的?附带教程
  3. (原创总结) 几种通信编码方式
  4. 小玉家的电费(洛谷-P1422)
  5. C#LeetCode刷题之#111-二叉树的最小深度​​​​​​​(Minimum Depth of Binary Tree)
  6. CCActionEase想说爱你也不难(上)
  7. 从命令行接收多个数字,求和之后输出结果
  8. eclipse里maven install时,报错提示jdk为无效的目标版本:1.7
  9. LeetCode使用简介(leetcode中国-力扣)
  10. 博弈论概述 (转自百度百科)
  11. QQ隐藏图原理与C#实现(含源文件)
  12. 【整理学习Hadoop】Hadoop学习基础之一:服务器集群技术
  13. 阿博茨科技宣布完成3000万美元B轮融资
  14. NC Portal单据增加自定义按钮
  15. 【Hadoop】HBase 数据模型(Data Model)
  16. vue组件通信(传值)
  17. 学习笔记——day47(jsp)
  18. CCS(TI IDE)中英文切换
  19. 使用matlab进行凸轮设计
  20. Hyperledger Fabric 之Peers介绍

热门文章

  1. 计算主波长色纯度色温和色坐标转换CIE1931图色坐标显示NTSC色饱和度
  2. linux编译gdal geos,使用nmake编译GDAL+GEOS(傻瓜教程)
  3. java在线查看PDF
  4. 微信抽奖小程序怎么做怎么弄?微信抽奖小程序制作方法详细介绍
  5. linux文件复制和移动
  6. mysql分页查询公式
  7. 科学研究设计七:单案例设计
  8. polyval polyvalm
  9. scratch编程超好玩的解密游戏
  10. OpenCV-Python<八> 图像平滑处理