单片机初级(持续更新)

发布于:2024-10-13 ⋅ 阅读:(19) ⋅ 点赞:(0)

        单片机是一种单片微型计算机的简称(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中的指令进行识别,将指令(机器码)解析(翻译)成具体的运算操作(+/-/*...)

  1. 执行:控制器控制运算器中对应的运算单元进行运算,运算结果写入寄存器

注意:PC每取地址一次,自加一次。PC的值自动增加使PC指向内存中的下一条指令

思考:

1.运算器不同,处理指令不同。不同的处理器上如何运行同一个c语言程序?

2.假设指令集有乘法指令,结果并没有加法运算器,怎么办?

可以转换为加法指令

        汇编语言

  1. 汇编整体分类

1》指令:编译完生成一条机器码存储在内存单元当中,CPU执行时能完成对应的操作(类似于C中的语句)

2》伪操作(相当于c中的#的内容,告诉编译器怎么编译):不会生成机器码也不会占用内存,其作用是告诉编译器怎样编译(类似于C中的预处理指令)

3》伪指令:不是指令,编译器在编译时将其替换成等效的指令 (如:cpu中没有除法器,对应没有除法法指令,使用>>,替换实现)

汇编中注释代码用@或;注释一行 ,/* */注释一段代码  

2、指令分类

1.数据处理指令: 对数据进行逻辑、算数运算

2.跳转指令: 实现程序的跳转,实质是修改PC

3.Load/Store指令: 对内存的读写操作

4.状态寄存器传送指令:对状态寄存器进行读写操作

5.异常中断产生指令:触发软中断,常用于内核的系统调用 //SWI:软中断

6.协处理器指令:操作协处理器的指令