编辑推荐: |
本文主要介绍单片机的一些常识,其次介绍单片机的内部功能,最后介绍实际编程的实践,希望对您的学习有所帮助。
本文来自于CSDN,由火龙果软件Alice编辑、推荐。 |
|
一、应该知道的常识
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启动,下载程序快,但是断电丢失。
15.附加功能:CRC
CRC用于数据正确性的校验。
16.附加功能:芯片号
每个芯片有一个唯一的96位的序列号。
三、实际编程
0.软件准备
keil5、Jlink驱动
1.需要会的C知识
#if #endif
enum
char8 int16 long float32
typedef
struct
32位MCU下,字=4字节
2.工程文件
3.
|