单片机是一种单片微型计算机的简称(MCU),采用集成电路技术将有数据处理能力的中央处理器、随机存储器、只读存储器、定时器/计时器、多种IO口与中断系统等功能集成在一块硅片上。
开发板/最小系统板
开发板通常是学习用途,功能齐全,接口丰富,适用于研发、学习
STM32 开发板底板,支持 5V 电源适配器与 TypeC 供电。
提供 RTC 时钟电源,提供三轴加速度与角速度传感器,用于姿态感知。
板载 ESP-12F 无线模组,用于物联网云平台项目开发。
提供 1 路五向按键,采用中断与 A/D 模式采样。
提供 1 路有源蜂鸣器,1 路 2*17P 扩展接口,用于资源扩展板的接入。
核心板接口通过 2.54mm 间距的插针引出,方便用户外接其它设备
显示屏
电容触摸显示屏在很多智能设备上得到应用,提升了设备的交互感。
在开发板套件中使用方型显示屏用来模拟圆形的一个手表项目。显示屏尺寸为 2.8寸,分辨率 320*240(RGB)。
驱动 IC采用 ILI9341,自带 172,800 字节的 GRAM 存储。电容触摸屏采用 I2C 接口,驱动 IC 采用 FT6336G。
资源拓展板
资源扩展板提供基于 I2C 总线的温湿度传感器、环境光感知、心率/脉搏测量。基于模数转换接口的电压/电流采集。
基于 EXTI 事件/中断控制类型的人体红外、光电开关、火焰感知传感器。
基于 SPI 总线的数码管驱动电路。
基于 PWM 控制的风扇、蜂鸣器、震动马达。
基于 GPIO 的按键、LED 指示灯。
基于异步串行通信的 485 总线电平转换。基于控制器局域网总线的 CAN 电平转换等外设。
资源扩展板主要用于微控制器入门外设的使用,硬件图纸原理以及项目案例的应用开发学习。
系统架构
STM32G0
系统主要由以下几个模块组成 :
● 二个主模块 :
– Cortex-M0+ 内核及先进高性能总线 (AHB bus)
– 通用 DMA (通用的直接存储器存取)
● 三个从模块 :
– 内部 FLASH
– 内部SRAM
– AHB和AHB到APB的连接桥,所有的外设都挂在APB总线上
问:flash和SRAM的区别?
Flash存储器是一种非易失性存储器,可以在掉电之后保存数据,通常用于存储程序代码。Flash存储器的可写入次数有限,且需要执行擦除操作才能写入新的数据,因此,在使用过程中需要注意擦写周期和数据备份问题。
SRAM存储器则是一种易失性存储器,具有相对较快的读写速度和无限的读写次数,但掉电时将会丢失所有内容。SRAM存储器主要用于暂存数据和临时变量,读写操作由CPU直接完成,访问速度较快。
单片机的Flash存储器和SRAM存储器通常都嵌入在单片机芯片内部,能够方便地实现对程序和数据的读写操作。通常,编译器会将程序代码烧录到Flash存储器中,并使用SRAM存储器来存储变量、函数堆栈和其他临时数据。
问:什么是外设?如何理解片上外设?
与传统的外设不同,片上外设通常具有以下优点:
高效性:片上外设能够与主处理器实现高速的数据传输,响应时间短,执行效率高。
集成度高:片上外设多个模块都嵌入到处理器芯片内部,极大地降低了PCB面积和电路复杂度。
低功耗:处理器和片上外设采用相同的工艺,能够满足高密度和低功耗的需求。
可靠性高:提高了整体系统的可靠性和稳定性,也降低了电磁干扰的可能。
问:AHB和APB的区别?
AHB是高速总线,是一种系统总线,它主要负责连接处理器、DMA等一些内部接口。AHB系统由主模块、从模块和基础结构3部分组成,整个AHB总线上的传输都由主模块发出,由从模块负责回应。
APB是低速总线,它主要负责连接外围设备,它又分为APB1和APB2,它的总线架构不像 AHB支持多个主模块,在APB里面唯一的主模块就是APB桥。
ARM
- ARM可以表示一些处理器的统称
早期经典处理器:ARM7 ARM9 ARM11
后续处理器开始以cortex命名
Cortex-A系列
针对开放式操作系统的高性能处理器
应用于智能手机、数字电视、智能平板等高端运用
Cortex-R系列
提供非常高的性能和吞吐量,同时保持精准的时序属性和可预测的中断延时,通常用于时序关键的应用中
针对实时系统、满足实时性的控制需求
应于汽车制动系统、动力系统等
Cortex-M系列
为单片机驱动的系统提供了低成本优化方案
应用于传统的微控制器市场、智能传感器、汽车周边、物联网设备等
- ARM表示一种指令集(一种计数)
指令:能够指示处理器执行命令称为指令 + - << >>
指令集:处理器能够识别的指令的集合称为指令集
ARM指令集:所有指令(机器码),都专用32bit存储空间,代码灵活,指令简洁,执行ARM指令PC每次自加4
Thumb指令集:所有指令(机器码),都专用16bit存储空间,代码灵活,指令简洁,执行ARM指令PC每次自加2
ARM的命名有指令集架构、 处理器架构、 处理器型号三类命名规则
架构:
arm-v4,arm-v5,arm-v6,arm-v7(32Bits),arm-v8(64Bits)
ARM内部结构
Cortex-M33的寄存器
(1)通用寄存器
R0-R12:13个通用寄存器。其中 R0-R7为低端寄存器,可作为16位或32 位指令操作数,R8-R12为高端寄存器,只能用作32位操作数
R13:栈指针寄存器 SP(the stark pointer)
R14:链接寄存器LR(the link register),用于存储子程序或者函数调用的返回地址
R15:程序计数器PC(the program counter register)存储下一条将要执行的指令的地址。
(2)特殊寄存器XPSR
xPSR:组合程序状态寄存器,该寄存器由三个程序状态寄存器组成
应用程序状态寄存器 (APSR):保存程序计算结果的状态标志 N负数标志 Z零标志 C进位借位标志 V溢出标志
中断程序状态寄存器 (IPSR):包含当前ISR(中断服务程序)的异常编号
执行程序状态寄存器 (EPSR):包含Thumb状态位
CONTROL:控制寄存器
控制处理器处于线程模式时,使用哪个堆栈
=0,使用MSP 处理器模式时,固定使用MSP
=1,使用PSP
CPU运行原理
一条指令(机器码)的执行通常分为三个阶段:
1)取指:控制器将PC寄存器中的值发送给内存,内存将对应地址中的指令(机器码)传送回CPU的指令寄存器IR中
2)译码:指令译码器对IR中的指令进行识别,将指令(机器码)解析(翻译)成具体的运算操作(+/-/*...)
- 执行:控制器控制运算器中对应的运算单元进行运算,运算结果写入寄存器
注意:PC每取地址一次,自加一次。PC的值自动增加使PC指向内存中的下一条指令
思考:
1.运算器不同,处理指令不同。不同的处理器上如何运行同一个c语言程序?
2.假设指令集有乘法指令,结果并没有加法运算器,怎么办?
可以转换为加法指令
汇编语言
- 汇编整体分类
1》指令:编译完生成一条机器码存储在内存单元当中,CPU执行时能完成对应的操作(类似于C中的语句)
2》伪操作(相当于c中的#的内容,告诉编译器怎么编译):不会生成机器码也不会占用内存,其作用是告诉编译器怎样编译(类似于C中的预处理指令)
3》伪指令:不是指令,编译器在编译时将其替换成等效的指令 (如:cpu中没有除法器,对应没有除法法指令,使用>>,替换实现)
汇编中注释代码用@或;注释一行 ,/* */注释一段代码
2、指令分类
1.数据处理指令: 对数据进行逻辑、算数运算
2.跳转指令: 实现程序的跳转,实质是修改PC
3.Load/Store指令: 对内存的读写操作
4.状态寄存器传送指令:对状态寄存器进行读写操作
5.异常中断产生指令:触发软中断,常用于内核的系统调用 //SWI:软中断
6.协处理器指令:操作协处理器的指令