STM32嵌入式微控制器快速入手
时间:2022-08-23 18:30:01
嵌入式系统分类:
(冯*诺依曼结构),内部单地址总线和数据总线,单存储空间,不能同时取数据和指令,ARM7属于这种结构
哈弗结构有两个存储空间:数据和程序,吞吐量是普林斯顿的两倍(DSP,ARM9,Cortex)
CISC | RISC | |
价格 | 硬件复杂,价格高 | 软件复杂,价格低廉 |
指令集 | 复杂庞大 | 精简 |
指令周期 | 不固定 | 一个周期 |
编码长度 | 可变,1-15B | 固定,4B |
高级语言支持 | 软件完成 | 硬件完成 |
寻址模式 | 复杂,支持内存到内存寻址, | 简单,只允许LOAD和STORE基于寄存器的指令存储内存,其他操作 |
寄存器数目 | 少 | 多 |
总线结构 | 普林斯顿 | 哈弗 |
编译 | 编译器很难优化 | 优化编译生成高效代码程序 |
应用实例 | MCS-51系列,PC内部处理器芯片 | ARM系列 |
ARM
(1)ARM是一种RISC体系结构,x86架构是CISC还有系统结构MIPS,PowerPC
(2)Advanced RISC Machine Limited公司简称
(3)一类产品总称
ARM处理器的主要特点:
1.采用RISC体系结构 2.寄存器用途多种多样 3.Load/Store体系结构 4.执行每个指令条件 5.指令长度固定
Cortex-M体系结构
CM3处理器(32位):ARMv7-M系统结构、哈弗结构、三种功耗模式(睡眠模式、停止模式、待机模式)
分为特权级和用户级。用户级到特权级的唯一途径是异常。特权级可以保护关键存储区域免受损坏
通用寄存器包括R0-R12.R0-R7低组寄存器,字长32位,所有指令都可以访问,R8-R12高组寄存器16位指令无法访问。堆栈指针R连接寄存器R14、程序计数器R15
总线名称 | 类型 | 范围 |
ICode | AHB | 0x0000 0000~0x1fff ffff |
DCode | AHB | 0x0000 0000~0x1fff ffff |
系统总线 | AHB | 0x2000 0000~0xdfff ffff 0xe010 0000~0xffff ffff |
外部专用外设总线 | APB | 0xe004 0000~0xe00f ffff |
内部专用外设总线 | AHB | 0xe000 0000~0xe003ffff |
ARM 系统结构最大寻址空间4GB(2^32B)
RAM 分为静态SRAM动态(速度最快,价格贵)DRAM(读写慢,价格便宜)
ROM分为PROM,EPROM(紫外线擦除),EEPROM(电擦除,价格高,写入时间长,写入慢)
FLASH(可电擦除可编程,断电不丢失)用于存储BootLoader或U盘
NORFlash随机读取,可直接操作代码,NANDFlash一次读一块,不能直接操作代码(加一小块NORFlash操作启动代码)
SRAM别名区初值0x2200 原绑定内存区0000x2000 0000-0x200f ffff(1M),将位绑定区的每个字映射到别名区(地址扩大了32倍)。别名区地址=0x2200 0000 字节偏移地址*32 位*4.
外设区b别名区x4200 0000,原地址0x4000 0000-0x400f ffff(1M)
ARM指令集分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令、异常指令 六大类
ARM指令搜索包括立即搜索、寄存器搜索、寄存器间接搜索、基址变更搜索、堆栈搜索、块复制搜索、相对搜索
THumb指令集是ARM指令集子集操作32位,指令长度16位,大大节省了系统存储空间
CM3处理器3级流水线:取指、解码、执行。
异常通常定义为在正常程序执行过程中暂时停止并转向相应的处理。中断请求信号来自内核外部,异常是由内核活动引起的。CM3有15个异常,优先级值越小,优先级越高。三个系统异常(复位,NMI,硬fault),有固定的优先级且优先级是负数。如果一个发生的异常不能被立即响应,就称它被挂起。
中断(异常)基于优先级行动:第一(当前中断遇到更高的优先级中断),最后连锁(新中断不如当前中断优先级高,当前中断不直接相应的新中断),返回(栈),迟到(低优先级中断响应前高优先级中断)
存储器保护单元(MPU)关键数据,os仅读取内核、向量表等重要区域的属性。
STM32最小系统
电压调节器有三种工作模式(主模式)、停止模式(低功耗模式)、待机模式(关闭模式)
锁相环(PLL Phrase Locked Loop)它是一种反馈控制电路,利用外部参考信号控制环内振荡信号的频率和相位,使外部输入信号与内部振荡信号同步。
四大时钟频率:HSE(high speed External clock signal)4-16MHz,常用8MHz
HSI(high speed Internal clock signal)内部8MHz,可直接制作系统时钟或2分频PLL输入
LSE,外部32.768kHz LSI,内部40kHz
RCC管理时钟的寄存器
STM32F10xxx支持系统复位、电源复位、备份区复位三种复位形式
JTAG(Join Test Action Group)四个引脚接口JTMS(测试模式选择引脚)JTCK(测试时钟输入引脚)JTDI(测试数据输入引脚)JTDO(测试数据输出引脚)
STM32最小系统包括电源电路、时钟电路、复位电路、启动电路、程序下载电路
STM32程序设计
硬件逻辑被虚拟化为汇编语句,汇编语句再次被成高级语言句,再次被包装成函数,函数相互调用和组合,最终形成应用程序。
CMSIS(Cortex Microcontroller Software Interface Standard)独立于供应商Cortex-M处理器系列硬件抽象层提供了连续简单的处理器软件接口。
基于CMSIS标准软件架构主要分为四层,用户应用层,操作系统层,CMSIS硬件寄存器层,CMSIS起到承上启下的作用
自减运算符比自加效率高代码精简 a%8~a&7 a*8~a<<3 a/8~a>>3 if 比?效率高 dowhile比while效率高
GPIO原理及应用
GPIO输出功能:推拉输出(可以向前移动)载灌电流,也可以从负载抽电流,既提高电路负载能力,又提高开关速度)
开漏输出不输出电压,低电平接地高电平上拉到上拉电阻电压(外接上拉电阻时)
EXTI原理及应用
EXTI0到达时内核暂停当前程序执行跳转到0x0000 0058拿到中断处理函数EXTI0——IRQHandler()地址并跳转,函数执行结束后返回原地址(3次跳转)
挂起是暂停正在进行的中断去执行同级或更高级别的中断。
USART:同步通信与异步通信区别:
1、同步通信要求接收端时钟频率和发送端时钟频率一致,发送端发送连续的比特流;异步通信时不要求接收端时钟和发送端时钟同步,发送端发送完一个字节后,可经过任意长的时间间隔再发送下一个字节。
2、同步通信效率高;异步通信效率较低。
3、同步通信较复杂,双方时钟的允许误差较小;异步通信简单,双方时钟可允许一定误差。
4、同步通信可用于点对多点;异步通信只适用于点对点。
RS-232常用串行通信接口标准之一
存储器直接访问DMA(Direct Memory Access)是一种高速的数据传输操作,允许外部设备和存储器之间利用系统总线直接读写数据
操作系统是计算机硬件的封装和功能的扩充,操作系统是资源的管理者。
非抢占式内核一个特点是几乎不需要使用信号量来不糊共享数据,不担心被高优先级任务抢占,但响应高优先级任务较慢。
当系统响应时间重要时要使用占先式内核,高优先级任务一旦就绪总能剥夺CPU使用权。
可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反, 不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变量时保护自己的数据。访问全局变量时用互斥信号量保护全局变量。
绝大多数微处理器的堆栈都是从高地址向低地址增长。
UC/OS-II任务共有5种状态:休眠,就绪,运行,等待,中断服务,临界代码段要关闭中断。任务控制块用于记录任务堆栈指针,任务当前状态,任务优先级与任务管理有关的属性表。