版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式微控制器原理及设计基于STM32及Proteus仿真开发(第2版)以STM32F103R6芯片为核心|配合Proteus仿真开发从底层硬件到上层操作系统的完整知识体系书籍基本信息书名嵌入式微控制器原理及设计副标题基于STM32及Proteus仿真开发(第2版)作者毕盛等编著出版社电子工业出版社ISBN978-7-121-52559-9定价49.00元页数约228页出版时间2026年(新版第2版)核心定位本书以STM32F103R6芯片为核心载体,配合Proteus仿真软件,系统讲解嵌入式微控制器的原理与设计方法。全书涵盖三大层面:①基础理论:嵌入式系统概念、ARM体系结构②硬件与软件:最小系统、开发环境、库函数③接口技术:GPIO、中断、串口、定时器、ADC、DMA等每章均配有Proteus仿真开发实例,实现零硬件成本的学习体验。02全书内容架构基础理论层第1章嵌入式系统与微控制器—概念、发展历史、芯片类型第2章微控制器体系结构及汇编语言—Cortex-M3内核、指令集、寻址方式硬件与软件层第3章微控制器硬件系统—最小系统、时钟、低功耗第4章微控制器软件开发—C语言、库函数、开发工具接口与系统层第5-11章接口技术GPIO/中断/串口/定时器ADC/DMA/I2C/CAN/USB第12章嵌入式操作系统—Linux/RT-Thread/μC/OS学习路径:理论奠基→软硬结合→接口实战→系统进阶01理解概念嵌入式系统定义、特点、应用领域02掌握架构ARMCortex-M3内核、寄存器、指令集03动手实践Proteus仿真、GPIO/中断/串口编程04综合提升ADC/DMA高级接口、操作系统移植0301嵌入式系统与微控制器嵌入式系统核心概念定义:以应用为中心、计算机技术为基础,软硬件可裁剪的专用计算机系统四大特点:功耗低、体积小、专用性强、软硬件可裁剪硬件最小系统:电源电路+复位电路+时钟电路存储体系:RAM(SRAM/DRAM)+ROM(Flash/EEPROM)嵌入式芯片四大类型MCU(微控制器):单片化,集成RAM/Flash/外设,适合控制类应用MPU(微处理器):外接DDR/NANDFlash,可运行Linux/AndroidDSP(数字信号处理器):集成硬件乘法器,适合运算密集型任务SOC(片上系统):如FPGA,可通过硬件逻辑语言实现自定义功能微控制器发展历史与趋势发展历程:8051(1980s)→AVR/PIC/MSP430(1990s)→ARMCortex-M(2000s)→RISC-V开源架构(近年)Cortex-M系列演进:M0(最低功耗)→M3(主流,如STM32F103)→M4(含DSP/FPU)→M7(高性能)→M55/M85(AI+Helium技术)五大发展趋势:①网络化(IoT无线接入)②高集成化(SoC理念)③多核化(异构大小核)④内核开发集成化(IP核复用)⑤智能化(TinyML边缘AI)0402微控制器体系结构及汇编语言Cortex-M3内核架构哈佛结构:独立的指令总线(I-Code)和数据总线(D-Code),取指与数据访问并行三级流水线:取指(Fetch)→解码(Decode)→执行(Execute)4种总线:I-Code/D-Code/系统总线/私有外设总线(APB)寄存器组:R0-R12通用寄存器+R13双堆栈指针(MSP/PSP)+R14链接寄存器(LR)+R15程序计数器(PC)存储器映射:4GB统一地址空间,支持大端/小端模式操作模式与异常机制两种操作模式:处理者模式(Handler)—异常服务例程专用线程模式(Thread)—普通应用程序代码两级特权:特权级(全访问)/用户级(受限访问)异常系统:15个内置异常+240个外部中断源MPU:可选存储器保护单元,最多8个保护区域汇编指令系统9种寻址方式:寄存器寻址、立即寻址、寄存器移位寻址、寄存器间接寻址、基址寻址、多寄存器寻址、堆栈寻址、相对寻址指令类别:存储器访问(LDR/STR)、数据处理(MOV/ADD/SUB/AND)、乘法(MUL/MLA)、分支(B/BL/BX)、软中断(SWI)、状态寄存器访问(MRS/MSR)Thumb-2指令集:16/32位混合指令,代码密度高、执行效率优,是Cortex-M3的默认指令集0503微控制器硬件系统内部结构与总线Cortex-M3内核通过AHB总线矩阵连接各模块APB2:高速外设(72MHz)—USART1/SPI1/TIM1/ADC/GPIOAPB1:低速外设(36MHz)—USART2-5/SPI2/I2C/CAN/USB/TIM2-74GB地址空间:代码区/SRAM区/外设区/保留区最小系统电路电源电路:VDD(2.0-3.6V)+VDDA(模拟电源)+VBAT(备份电源)复位电路:系统复位/电源复位/备份域复位三种形式时钟源:HSE(4-16MHz高速外部)+LSE(32.768kHz低速外部)+HSI(8MHz内部)+LSI(40kHz内部)+PLL(锁相环倍频)下载与启动配置调试接口:JTAG(5线)/SWD(2线)串行调试三种启动模式:Flash启动(BOOT0=0)—正常运行系统存储器(BOOT0=1,BOOT1=0)—ISP串口下载SRAM启动(BOOT0=1,BOOT1=1)—调试时钟管理与低功耗模式时钟管理单元:系统时钟SYSCLK经AHB分频器产生HCLK(72MHz),再经APB1/APB2分频器分配给各外设。定时器时钟根据APB分频系数自动倍频。三种低功耗模式对比:睡眠模式—CPU停止,外设运行,任意中断唤醒,程序从中断点继续停止模式—所有时钟关闭,SRAM/寄存器保留,外部中断唤醒,需重新配置时钟待机模式—1.8V区域断电,SRAM丢失,仅备份域保留,WKUP/RTC/复位唤醒,程序从头执行0604微控制器软件开发嵌入式C语言核心要点位操作:&清零、|置位、^取反、<<左移、>>右移—寄存器操作的核心技能volatile:禁止编译器优化,确保硬件寄存器每次都被真实读取const:只读变量,编译器将其存放于Flash节省RAMstatic/extern:控制变量/函数的作用域和链接属性内存分配:静态存储区(全局/static)/栈(局部变量)/堆(malloc动态分配)三种开发库对比维度STD库HAL库LL库抽象层次中等高低代码效率中等较低高易用性中等高较低开发环境与工具链CMSIS标准:ARM与芯片厂商共同制定的硬件抽象层标准,确保软件跨芯片兼容性,包含内核函数层和外设访问层MDK(Keil):集成IDE+编译器+调试器,支持Cortex-M全系列,与STM32CubeMX无缝连接VSCode+ARMGCC+OpenOCD:开源免费方案,高度可定制,跨平台支持STM32CubeMX:图形化配置工具,自动生成初始化代码,支持引脚冲突检测和功耗预测Proteus:虚拟仿真环境,支持STM32F103等处理器模型,实现零硬件开发调试0705GPIO通用输入输出接口GPIO内部结构与功能模式每个GPIO端口有7个寄存器:CRL/CRH(配置)、IDR(输入数据)、ODR(输出数据)、BSRR(置位/复位)、BRR(复位)、LCKR(锁定)输入模式:浮空输入、上拉输入、下拉输入、模拟输入输出模式:推挽输出(PMOS+NMOS驱动)、开漏输出(需外接上拉)复用功能:复用推挽输出、复用开漏输出—供片内外设使用四种开发方式对比寄存器方式:直接操作寄存器,最高效但最繁琐例:GPIOA->CRL|=0x08;GPIOA->CRL&=~0x07;STD库:封装寄存器操作,函数调用便捷例:GPIO_Init(GPIOA,&GPIO_InitStruct);HAL库:高度抽象,配合CubeMX使用例:HAL_GPIO_Init(GPIOA,&GPIO_InitStruct);LL库:静态内联函数直接操作寄存器,兼顾效率与可读性综合应用实例实例1—按钮控制LED:PA0输入检测按钮状态,PB0输出控制LED亮灭。通过寄存器/STD库/HAL库/LL库四种方式分别实现同一功能,帮助读者理解不同开发层次的差异。实例2—数码管动态显示:PA0-PA7连接数码管段码(A-G+DP),PB0-PB3连接4个数码管位选。利用人眼视觉暂留效应,以1-2ms间隔轮流点亮各数码管,实现"2021"数字的稳定显示。实例3—行列式键盘扫描:2x2键盘矩阵,行线配置为输出,列线配置为下拉输入。依次给每行输出高电平,检测列线电平变化判断按键位置,控制对应LED亮灭。0806中断系统中断体系结构76个中断源:10个内核异常(Reset/NMI/HardFault等)+66个外部中断NVIC(嵌套向量中断控制器):7组核心寄存器—ISER/ICER(使能控制)、ISPR/ICPR(挂起控制)、IABR(激活状态)、IPR(优先级)、STIR(软件触发)SCB(系统控制块):SHPR(系统处理优先级)、SHCSR(使能控制)、CFSR/HFSR(故障状态)优先级管理与EXTI两级优先级:抢占优先级(可嵌套)+响应优先级(仅决定同抢占级下的处理顺序)4位优先级分组(5种):第0组(0:4)到第4组(4:0),通过NVIC_PriorityGroupConfig()设置,一个程序只能设定一次EXTI外部中断:19条中断线(EXTI0-EXTI15对应GPIO,EXTI16=PVD,EXTI17=RTC闹钟,EXTI18=USB唤醒)中断vs事件:中断需CPU参与执行ISR;事件由硬件自动完成,不占用CPU应用实例:按键中断控制LED实例1—单按键中断:PA0配置为外部中断输入(上升沿触发),NVIC使能EXTIline0。在HAL_GPIO_EXTI_Callback()回调函数中翻转PB0状态,实现每次按键LED反转,并清除中断标志位。实例2—双按键中断嵌套:PA0(按键1)和PA1(按键2)均为外部中断,按键1抢占优先级0(最高),按键2抢占优先级3(较低)。当处理按键2中断时,按键1可打断并优先执行,完成后返回继续处理按键2,演示真正的中断嵌套机制。0907串行通信串行通信基础异步通信:起始位(0)+7-9数据位+校验位+1-2停止位(1),双方波特率必须一致同步通信:统一时钟驱动,无起始/停止位,效率高传输方式:单工(单向)/半双工(分时双向)/全双工(同时双向)三种接口:UART(异步全双工)/USART(同步+异步)/SPI(同步全双工,主从架构)USART与SPI详解USART:波特率可达2Mbit/s,支持8/9位字长、奇偶校验、1/2停止位、硬件流控制(nCTS/nRTS)。扩展模式:LIN/智能卡/IrDA/半双工/多处理器通信SPI:4线接口(MOSI/MISO/SCK/NSS),主模式控制时钟,支持软件NSS管理多从设备。数据可按MSB/LSB传输,波特率预分频2-256工业接口与无线通信RS-232:逻辑1(-15~-3V)/逻辑0(+3~+15V),需MAX232电平转换,DB-9接口,传输距离约15mRS-485:差分信号(+2~+6V为0,-6~-2V为1),抗干扰强,半双工总线拓扑,最多32节点,距离可达1219m,适合工业环境无线通信模块(均通过串口AT指令控制):GPRS(MC35)—蜂窝网络数据传输|蓝牙(SPP协议)—短距离无线串口Wi-Fi(ESP8266)—内置TCP/IP协议栈|ZigBee—低功耗短距离组网星闪(SparkLink)—中国原生无线技术,SLE低功耗+SLB高性能双模1008定时器定时器分类与功能高级定时器TIM1:16位,4捕获/比较通道,互补PWM输出(带死区),刹车输入,重复计数器—专为电机控制设计通用定时器TIM2/TIM3:16位,4通道,支持输入捕获/输出比较/PWM/单脉冲模式,增量编码器接口特殊定时器:SysTick(系统滴答,OS心跳)/IWDG(独立看门狗)/WWDG(窗口看门狗)/RTC(实时时钟)计数模式与PWM原理三种计数模式:向上计数:0→ARR→溢出→0向下计数:ARR→0→下溢→ARR中央对齐:0→ARR-1→溢出→1→下溢→0PWM占空比=CCR/(ARR+1)×100%计数器CNT与比较值CCR比较,决定输出电平高低时钟源:内部时钟(CK_INT)/外部时钟模式1(TIx)/外部时钟模式2(ETR)/内部触发(ITRx)应用实例定时功能:TIM1定时0.1s控制LED闪烁。Prescaler=7200-1(分频至10kHz),Period=1000-1(计数1000次=0.1s),支持查询和中断两种方式检测定时到达。计数功能:TIM1_ETR(PA12)作为外部输入计数源,对按键按下次数进行计数,通过串口输出计数值。输入捕获:TIM3_CH1(PA6)捕获按键按下脉冲宽度,72分频后计数精度1μs,结合定时器溢出次数计算总脉宽时间。PWM输出:TIM3_CH2(PA7)输出PWM控制电机转速。36分频+周期1000,通过调整CCR值改变占空比,实现电机无级调速。1109ADC模数转换ADC模块架构2个12位ADC(ADC1/ADC2),分辨率1/4096≈0.8mV(3.3V参考电压下)18个模拟通道:16个外部通道(ADC_IN0-IN15)+2个内部通道(温度传感器/内部参考电压)转换原理:逐次逼近型(SAR),通过二分搜索逐步逼近输入电压值数据对齐:左对齐/右对齐(12位数据存放在16位寄存器中)工作模式与通道类型四种工作模式:单次转换—启动一次转换后停止连续转换—完成一次自动启动下一次扫描模式—按顺序转换多个通道间断模式—将通道分组分批转换规则通道:常规ADC转换序列,最多16个注入通道:可打断规则通道的优先转换,最多4个采样时间:1.5~239.5个ADC时钟周期可配置,影响转换精度与速度应用实例:滑动变阻器电压采集查询方式:配置ADC1_IN0(PA0)为模拟输入,启动转换后循环查询EOC标志位,读取DR寄存器获取12位转换结果,通过公式V=ADC_Value×3.3/4095计算实际电压值,串口输出显示。中断方式:使能ADC转换结束中断(EOC),转换完成后自动进入ADC_IRQHandler()中断服务函数,在中断中读取转换结果并启动下一次转换,主程序无需轮询等待。温度传感器应用:读取内部温度传感器通道(ADC1_IN16),利用公式T=(V25-Vsense)/Avg_Slope+25计算芯片内部温度,实现过温监测功能。1210DMA直接存储器存取DMA工作原理DMA控制器可在无需CPU干预的情况下,直接在内存与外设之间传输数据,大幅减轻CPU负担DMA1:7个通道,连接ADC/SPI/I2C/USART/TIM等外设DMA2:5个通道(仅存在于大容量产品)传输方向:外设→存储器/存储器→外设/存储器→存储器传输宽度:字节(8bit)/半字(16bit)/全字(32bit)通道配置与传输模式通道优先级:4级—最高/高/中/低,软件配置,同优先级时通道号低者优先Normal模式:传输指定数量数据后停止,需重新配置才能再次传输Circular模式:传输完成后自动重新加载,持续循环传输,适合ADC连续采集等场景中断事件:传输完成(TCIF)/半传输完成(HTIF)/传输错误(TEIF)应用实例实例1—ADC数据采集DMA方式:配置DMA1_Channel1连接ADC1,Circular循环模式,将ADC连续转换的结果自动传输到内存数组中。CPU只需在需要时读取数组数据,无需参与每次ADC转换的数据搬运,实现真正的后台数据采集。实例2—串口发送DMA方式:配置DMA1_Channel4连接USART1_TX,Normal模式,将待发送的数据缓冲区内容自动传输到USART发送寄存器。传输完成后触发TC中断,在中断中可准备下一批数据。相比查询方式,CPU可在DMA传输期间执行其他任务。1311其他接口(I2C/CAN/USB)I2C总线二线制同步串行总线SDA(数据线)+SCL(时钟线)特点:多主从架构,每个设备有唯一7位地址,支持总线仲裁,标准模式100kbit/s,快速模式400kbit/s应用:连接EEPROM(24C02)、传感器、OLED显示屏等实例:模拟I2C时序实现EEPROM的读写操作CAN总线控制器局域网总线多主串行通信协议特点:差分信号(CAN_H/CAN_L),最高1Mbit/s,内置CRC校验和错误处理,优先级仲裁机制(标识符越小优先级越高)四种帧类型:数据帧/远程帧/错误帧/过载帧应用:汽车电子、工业自动化USB接口通用串行总线三种模式:Host(主机)/Slave(从机,需外部PHY)/OTG(双角色切换)四种传输类型:控制传输/批量传输/中断传输/同步传输应用:USB转串口、U盘读写、HID设备(键盘/鼠标)三种总线对比特性I2CSPICANUSB信号线数2422最高速率400kbit/s几十Mbit/s1Mbit/s480Mbit/s典型应用传感器/EEPROMFlash/显示屏汽车/工业PC外设/存储1412嵌入式操作系统大型嵌入式操作系统(面向MPU)共同特征:需要MMU内存管理单元支持,内核体积大,功能全面Linux:开源、生态丰富、支持多用户多任务,需外接DDRSDRAM+NANDFlash鸿蒙(HarmonyOS):分布式架构、一次开发多端部署、微内核设计Android:基于Linux内核,面向移动设备,应用生态庞大VxWorks:硬实时、高可靠性,广泛应用于航空航天和军事领域小型嵌入式操作系统(面向MCU)共同特征:无需MMU,内核极小(2KB-10KB),适合资源受限MCURT-Thread:国产开源RTOS,内核3KB,组件丰富,社区活跃FreeRTOS:全球最流行的开源RTOS,内核4-9KB,市场占有率高μC/OS-II:经典教学RTOS,内核仅2KB,抢占式调度,最多64个任务核心机制:任务调度(优先级/时间片)、任务间通信(信号量/消息队列/邮箱)、中断管理、时钟管理物联网操作系统与实时性嵌入式小型物联网操作系统:在RTOS基础上集成网络协议栈(TCP/IP、MQTT、CoAP、LwIP)和物联网组件(OTA升级、云连接、安全加密)代表系统:华为LiteOS(1+N架构,1个内核+N个组件)/阿里AliOSThings(云端一体)/腾讯TencentOSTiny实时性核心指标:可预测性—任务响应时间确定,不受系统负载影响可靠性—任务在规定时间内完成,满足deadlines调度策略—抢占式优先级调度+时间片轮转调度1513综合设计实例嵌入式系统开发流程需求分析:明确功能需求(系统"做什么")、性能需求(响应速度/精度)、成本需求(开发+量产)、规格需求(尺寸/功耗)方案设计:确定硬实时/软实时系统类型,软硬件划分决策,核心元器件选型,分层架构设计具体开发:PCB制板与焊接,搭建交叉开发环境,代码编写与编译链接,JTAG/SWD下载调试系统测试:硬件功能测试+信号完整性/EMC测试,软件黑盒/白盒/灰盒测试,软硬件协同集成测试分层软件架构硬件层:STM32芯片、DHT11传感器、按键S1、LED指示灯D1/D2、串口—负责电信号采集与输出驱动硬件抽象层:封装GPIO/定时器/中断/USART寄存器操作,提供统一硬件访问接口,屏蔽底层差异驱动层:DHT11驱动(单总线时序+数据解析)、按键驱动(中断+去抖)、LED驱动(亮灭控制)、串口驱动(数据发送)应用层:主状态机(停止/运行/报警三状态流转)、报警判断逻辑(温度30℃/湿度50%RH阈值)、500ms任务调度器实例:温湿度自动检测与报警系统系统功能:按键S1(PA0)控制系统启停,DHT11(PB6)以500ms周期采集温湿度,超阈值(温度>30℃或湿度>50%RH)时D2(PB0)红灯报警+串口发送"B",恢复正常后自动解除报警。三状态有限状态机:SYSTEM_STOPPED(停止)—上电初始状态,所有外设关闭,D1/D2熄灭,等待S1按键→进入RUNNINGSYSTEM_RUNNING(运行)—D1绿灯点亮,500ms定时采集DHT11数据,持续环境监测→超阈值进入ALARM/S1按键返回STOPPEDSYSTEM_ALARM(报警)—D2红灯点亮,串口200ms间隔发送"B",D1保持点亮→数据正常返回RUNNING/S1按键返回STOPPED设计特点:状态职责边界清晰,S1按键在任何状态具有最高优先级(强制停止),报警条件解除后自动恢复,体现"用户优先+自动恢复"的智能设计理念。16本书特色与教学优势01零硬件成本的仿真教学以STM32F103R6芯片为核心,配合Proteus仿真软件,无需购买任何硬件开发板即可完成全部实验,大幅降低学习门槛和成本。02理论与实践紧密结合每章均设计Proteus仿真开发实例,从GPIO控制到操作系统移植,通过动手实践加深对理论知识的理解和掌握。03完整的知识体系覆盖从底层汇编语言到上层操作系统,从硬件最小系统到软件库函数,从基础GPIO到高级DMA,构建完整的嵌入式知识图谱。04四种开发方式全面对比寄存器/STD库/HAL库/LL库四种开发方式贯穿全书,帮助读者理解不同抽象层次的优劣,灵活选择适合项目的开发策略。配套资源全书提供完整的Proteus仿真工程文件和源代码,涵盖从第5章到第12章的全部实例每章末尾配有习题,涵盖概念理解、代码分析和设计实践三种类型支持MDK和VSCode两种开发环境,适配不同读者的使用习惯第2版新增星闪无线通信、VSCode开发环境、LL库开发方式等前沿内容17适用读者与使用建议目标读者高校本科生/研究生电子工程、自动化、计算机、电气工程等专业嵌入式开发工程师从事STM32开发的初级和中级技术人员高校教师嵌入式系统课程的教学参考书推荐学习路径Step1夯实基础精读第1-4章掌握概念、架构、硬件和开发环境Step2接口实战按需学习第5-11章配合Proteus仿真边学边练Step3系统进阶研读第12章了解RTOS原理与移植方法Step4项目实战综合所学知识完成完整嵌入式项目前置知识要求•C语言编程基础(变量、函数、指针、结构体)•数字电路基础(逻辑门、时序电路、存储器概念)•计算机组成原理基础(CPU、内存、总线、中断的基本概念)18感谢阅读嵌入式微控制器原理及设计基于STM32及Proteus仿真开发(第2版)毕盛编著|电子工业出版社01嵌入式系统与微控制器嵌入式微控制器原理及设计——基于STM32及Proteus仿真开发(第2版)毕盛编著本章内容1.1嵌入式系统相关概念嵌入式系统的定义与特点主要硬件组成(基本电路、存储器、接口)嵌入式芯片四大类型1.2微控制器微控制器的特点与发展历史ARMCortex-M系列内核STM32系列与RISC-V1.3嵌入式系统开发方案设计与芯片选型硬件设计与软件开发代码编译、下载与调试1.4微控制器芯片的发展趋势网络化、高集成化、多核化内核开发集成化与智能化什么是嵌入式系统1.1.1定义以应用为中心、计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。核心要点专用性:为特定功能而设计,非通用计算机软硬件集合体:包含计算机硬件、软件,可能还有机械部件软硬件可裁剪:根据应用需求灵活配置严格要求:低功耗、小体积、高可靠性、低成本从广义上讲,所有带有微处理器的专用软硬件系统都可以称为嵌入式系统。嵌入式系统能够把PC中需要许多板卡完成的任务集成到芯片内部,有利于系统小型化。03嵌入式系统的特点与硬件组成1.1.2~1.1.3主要特点功耗低、体积小、专用性强与具体应用深度结合多板卡功能集成到芯片内部,小型化不具备自开发能力,需专用工具硬件最小系统电源电路:提供5V/3.3V电压,使用稳压芯片(如78XX系列)重启电路:上电重启+按钮重启,常用重启芯片或RC电路时钟电路:外接晶振(8~12MHz),内部PLL倍频至上百MHz时钟电路设计要点:现代芯片外接低频晶振(8~12MHz)再通过内部PLL升频,可避免高速外部时钟对电路电磁兼容性的影响。部分芯片内部集成RC振荡时钟,但精度不高,仅适用于对时钟要求不高的场合。04存储电路:RAM与ROM1.1.3RAM
随机存储器任意存储单元可任意次序读写,主要用于存放数据SRAM(静态RAM):并行总线模式(地址总线+数据总线),嵌入式MCU内部主要集成SRAM,但集成度较低、功耗较大DRAM(动态RAM):集成度高、成本低、耗电少,需额外刷新电路,地址分时传送行/列地址(如SDRAM)ROM
只读存储器主要用于存放程序,断电后数据不丢失掩模ROM:厂家掩模制造,大批量成本低PROM/OTP:一次性编程,出厂全为1EPROM:紫外线擦除,可反复编程EEPROM:电可擦除,按字节操作Flash:标准电压擦写,非易失易更新存储器选择原则:RAM用于运行时数据存储(速度快但掉电丢失);ROM用于程序存储(非易失)。嵌入式MCU内部通常集成SRAM和NORFlash。05Flash存储器:NANDFlash与NORFlash1.1.3NANDFlash用途:存储卡、嵌入式系统程序存储器接口:复杂I/O口串行存取写入速度:比NORFlash快很多擦除速度:远比NORFlash快擦除单元:更小,电路更简单使用方式:需要驱动程序特点:应用方式复杂,不适合直接运行代码NORFlash用途:嵌入式MCU内部程序存储接口:SRAM接口,可逐字节寻址读取速度:比NANDFlash稍快写入速度:比NANDFlash慢擦除速度:比NANDFlash慢使用方式:可直接使用,直接运行代码特点:适合存储并执行程序代码选型权衡:MPU运行Linux需外接NANDFlash存放大文件系统,Bootloader存放在NORFlash;MCU内部集成NORFlash存储程序。06模拟电路与其他常用接口1.1.3模拟电路ADC模数转换器,将传感器模拟信号转换为数字量。大部分嵌入式芯片内部集成ADC,直接引入模拟电压,需确保电压在Vref+和Vref-之间DAC数模转换器,将数字量转换为模拟量。典型应用:嵌入式芯片输出音频信号,通过DAC转换为驱动扬声器的模拟信号其他常用接口电路GPIO通用输入/输出接口I/O口的最基本形式按键接口按键输入人机交互基础显示接口8段数码管LED/LCD信息输出显示串口UART(异步)/SPI(同步)传输线少、成本低、适合远距离总线接口I2C/CAN/RS-485多设备通信、工业控制07嵌入式芯片四大类型1.1.4MCU
MicrocontrollerUnit嵌入式微控制器把RAM、Flash和各种外设集成在一个芯片中,实现单片化,集成度高缺点:各模块功能不够强大,RAM/Flash容量最大几百KB适用:专用控制领域,如电机控制、温度检测等单一功能场景MPU
MicroprocessorUnit嵌入式微处理器外接DDRSDRAM存储数据,NANDFlash存储程序,集成MMU优点:可运行Linux、Android等大型嵌入式OS适用:智能手机等高性能、低功耗、便携场合DSP
DigitalSignalProcessing嵌入式数字信号处理器集成硬件乘法器、FPU、卷积运算器等硬件运算模块优点:单指令实现浮点乘法,运算效率极高适用:视频解压缩、信号处理等计算密集型任务SOC
SystemOnChip嵌入式片上系统如FPGA,可用VHDL/Verilog直接实现硬件功能优点:灵活性极高,可开发专有IP核,适合并行计算挑战:涉及时序问题,开发难度大08微控制器的特点1.2.1最大特点:单片化——体积大大减小,功耗和成本下降,可靠性提高,因此也称为单片机。从20世纪70年代末出现至今,在嵌入式设备中仍有着极其广泛的应用。内部集成的功能部件掩模ROM/EPROM:程序存储RAM:数据存储总线及总线逻辑:内部数据通路定时/计数器:计时、计数、PWM看门狗:异常自动复位串口:UART等串行通信PWM输出:脉宽调制ADC/DAC:模数/数模转换Flash:可反复擦写的非易失存储09微控制器发展历史(一)1.2.220世纪80年代8051系列Intel最早生产(80C31、80C51、87C51等),后衍生出宏晶科技STC51(国产,出货量大)、Atmel89C51/89C52、NXP、华邦、Dallas等产品。至今仍具有广大开发生态圈,很多开发者从8051入门。1997年AVR系列Atmel利用Flash新技术推出RISC高速8位单片机。片内资源丰富、接口强大、价格低,可替代8051。Arduino平台采用ATmega8/16/32/64/128等,后又推出AVR32位微控制器。20世纪90年代PIC系列Microchip公司设计生产,8位(PIC10/12/16/18)、16位(PIC24/dsPIC)、32位(PIC32,MIPSM4K内核)。指令仅35条,简单易学,执行速度比8051快。10微控制器发展历史(二)1.2.2飞思卡尔Freescale原Motorola公司,8位和16位单片机主要产品:RS08、HCS08、HC08系列MC9S12G:汽车级16位单片机,低功耗、高性能、引脚少恩智浦NXP2006年从飞利浦独立出来的半导体公司内核:80C51内核(P89LPC系列)ARM内核:LPC1100、LPC1200、LPC1300等系列德州仪器MSP43016位单片机,25MHz晶振下40ns指令周期16位数据宽度+硬件乘法器,可实现FFT等DSP算法超低功耗:降低电源电压+灵活可控的运行时钟意法半导体STM8ST公司8位单片机,三个系列:STM8A:汽车级应用系列STM8S:标准系列STM8L:超低功耗系列11Cortex-M系列内核概述1.2.2~1.2.3ARM公司推出专用于微控制器的Cortex-M系列内核,针对成本和功耗敏感的微控制器应用。芯片厂商直接采用ARM内核和工具链,降低设计难度。主要内核系列Cortex-M0/M0+门数最少、能耗最低以8位价格获得32位性能Cortex-M3高性能、低动态功耗Thumb-2指令集Cortex-M4DSP+可选FPU控制与信号处理混合Cortex-M7高性能内核双精度浮点运算Cortex-M55Helium向量处理技术机器学习+DSP增强Cortex-M85Cortex-M性能巅峰标量性能极大飞跃采用Cortex-M内核的厂商国外:ST(意法半导体)、NXP(恩智浦)、TI(德州仪器)等国内:兆易创新、洪芯、灵动、极海、雅特力、航顺等12Cortex-M0/M3/M4内核详解1.2.3Cortex-M0架构:ARMv7-M特点:门数最少、能耗最低的ARM内核优势:代码占用空间小,以8位价格获得32位性能应用:模拟/混合信号设备代表产品:STM32F0系列NXPLPC11xx/12xxCortex-M3架构:ARMv7-M特点:高性能、低动态功耗指令集:Thumb-2,硬件除法、单周期乘法、位字段操作中断:NVIC最多240个系统中断代表产品:STM32F1系列NXPLPC17xxCortex-M4架构:ARMv7-M特点:M3+DSP模块增强:单周期MAC、SIMD运算、饱和运算、可选FPU定位:控制+信号处理混合代表产品:STM32F4系列飞思卡尔Kinetis演进关系:M0(入门级)→M3(主流高性能)→M4(DSP增强),三者均基于ARMv7-M架构,软件生态高度兼容。13Cortex-M55/M85内核详解1.2.3Cortex-M55ARMv8.1-M架构里程碑:首款基于ARMv8.1-M架构的处理器核心技术:Helium向量处理技术(M-ProfileVectorExtension)能力:显著提升终端ML和DSP能力,复杂算法(语音识别、传感器融合、轻量级视觉)的吞吐量远超传统标量内核优势:维持MCU级功耗和成本,实现以往需MPU才能达成的智能应用代表产品:STM32N6(集成Ethos-UNPU)Cortex-M85ARMv8.1-M架构定位:Cortex-M系列性能巅峰之作增强:更深流水线+改进分支预测+增强加载/存储架构,标量性能极大飞跃市场:实时工业自动化、高级汽车子系统、复杂AI推理智能设备安全:内置指针认证和分支目标识别等高级安全特性代表产品:瑞萨RA8D1(480MHz,CoreMark超3000分)演进路径:ARMv7-M(M0/M3/M4,专注实时控制)→ARMv8-M(M55/M85,控制+高性能计算+AI),开启智能边缘设备新可能性。14STM32系列微控制器1.2.4STM32系列专为高性能、低成本、低功耗的嵌入式应用设计,采用ARMCortex-M0/M0+/M3/M4/M7内核。按内核架构分为四大产品线:主流产品STM32F0、STM32G0、STM32F1、STM32F3、STM32G4超低功耗产品STM32L0、STM32L1、STM32L4、STM32L4+、STM32L5高性能产品STM32F2、STM32F4、STM32F7、STM32H7(Cortex-M7+M4双核)无线系列产品STM32WB(Cortex-M0+无线协处理器)本书选用芯片:以STM32F1系列的STM32F103R6为主,讲解嵌入式系统开发。STM32F1基于Cortex-M3内核,是STM32家族最经典、应用最广泛的系列。15RISC-V开源芯片内核1.2.2RISC-V是一种简单、开放、免费的全新指令集。其最大特点是"开放"——允许自由用于任何目的,允许任何人设计、制造和销售基于RISC-V的芯片或软件。2015年成立RISC-V基金会,已有150+企业和单位加入。基金会成员(部分)谷歌、华为、英伟达、高通、麻省理工学院、普林斯顿大学、印度理工大学、中科院计算所等国产RISC-V微控制器兆易创新GD32VF103基于RISC-V的量产通用微控制器,最高主频性能达153DMIPS,支持标准JTAG接口及RISC-V调试标准阿里平头哥玄铁910高性能RISC-V处理器,可用于5G、人工智能及自动驾驶等领域芯片设计适用领域:深嵌入式、IoT(物联网)、边缘计算、人工智能等对生态依赖较小的领域。RISC-V得到产业界和社区的广泛支持,发展前景广阔。16方案设计及芯片选型1.3.1开发流程(瀑布模型)需求分析系统结构设计编码测试维护芯片选型十大要素1.功能:存储器数量、外设接口种类及数量2.字长:数据基本位数,决定硬件复杂程度3.处理速度:单位时间内平均指令执行条数4.功耗/温度:工作温度范围、能耗指标5.寻址能力:地址线数目决定寻址空间6.可靠性:平均故障间隔时间(MTBF)7.性价比:性能与价格的综合权衡8.工艺:半导体工艺和设计工艺9.电磁兼容:器件选择、电路设计、外壳等10.封装:BGA、QFN等,取决于产品尺寸选型原则:够用原则(低端/中端/DSP应用)+成本原则(电路成本+PCB成本)17嵌入式系统硬件设计1.3.2设计工具:AltiumDesigner、OrCAD、Cadence流程:原理图设计→PCB布线→加工生产①确定电源电压:5V/3.3V/1.8V等,尽量使用LDO减小纹波电流:考虑负载,建议留30%余量②确定晶振无源/有源晶振,确定振荡频率走线靠近芯片,关键信号远离时钟走线③预留测试I/O连接指示灯和按钮便于判断系统是否正常运行④外扩存储大OS需MMU+外接SDRAM+NANDFlash信号线等长,差分线走线⑤功能接口串口/USB/网络/JTAG/音视频/HDMI注意电磁兼容设计,差分线使用⑥屏幕设计电容屏首选,靠近主控CPU配对信号走差分线,3W规则防干扰硬件最小系统:电源+晶振+嵌入式芯片,三者构成可运行的最简硬件平台。在此基础上根据需求逐步扩展存储、接口、显示等模块。18嵌入式系统软件开发1.3.3无操作系统(裸机)循环轮换系统功能分解为若干任务,包含在永不结束的循环中,按顺序逐一执行前后台系统前台:中断服务程序(ISR),处理异步事件后台:无限循环,负责资源分配和任务调度嵌入式操作系统四层软件架构:设备驱动层:与硬件直接打交道操作系统层:任务调度、存储管理、时钟管理、中断管理,扩展网络/文件系统/GUI/数据库中间件层:便捷服务和库函数应用软件层:具体应用功能的用户程序软件设计模型状态机模型(FSM)用一组可能的状态描述系统行为,适合以控制为主的系统数据流模型节点表示变换,边表示数据流向,适合数据处理和转换问题并发进程模型多进程并发执行,通过中断或DMA实现,进程间共享变量或消息传递19代码编译、下载与调试1.3.4~1.3.5嵌入式代码编译开发流程:源程序编写→交叉编译为目标模块→链接为目标程序开发环境:MDK(Keil)、IAR等集成开发环境,包含编辑器、交叉编译器、交叉链接器输出:最终产生二进制代码文件(.bin/.hex),供下载到目标芯片硬件调试方式硬件调试器通过仿真硬件执行过程,使开发者随时了解系统当前执行情况。常用方式:ROMMonitor、ROMEmulator、ICE、OCD。OCD片上调试优点:不占用目标机资源;支持软硬断点、追踪功能;可精确计量执行时间缺点:实时性不如ICE;芯片必须具有OCD功能OCD实现方式BDM:Motorola开发板使用JTAG:ARM开发板使用,STM32F103采用ONCE:片上仿真模式20微控制器芯片的发展趋势1.401网络化集成以太网、Wi-Fi、蓝牙、LoRa、5G等通信控制器和协议栈,使设备无缝接入网络,为万物互联奠定基础02高集成化单一硅片上集成高精度ADC、高级定时器、GPU、存储器控制器等,践行"片上系统"理念,RTOS和交叉开发工具保障软件质量03多核化异构大小核协同:Cortex-A处理宏观任务(Linux/OS),Cortex-M执行微观控制(传感器/电机),平衡性能、功耗与实时性04内核开发集成化IP核复用设计方法,像搭积木一样将预先验证的功能模块(CPU、GPU、接口控制器、AI加速器)快速整合到芯片设计中,大幅缩短设计周期,催生定制化芯片05智能化算力下沉至终端:DSP指令集→向量处理单元(Helium)→神经网络处理单元(NPU)。TinyML使深度学习模型运行在微控制器上,实现语音唤醒、视觉识别、预测性维护等边缘AI应用21本章小结本章从嵌入式系统的概念出发,介绍了嵌入式系统的组成、芯片类型(MCU/MPU/DSP/SOC)、微控制器的发展历史、ARMCortex-M系列内核、STM32系列产品、RISC-V开源架构,以及嵌入式系统开发流程和芯片发展趋势,为后续STM32具体开发学习奠定基础。嵌入式微控制器原理及设计——基于STM32及Proteus仿真开发(第2版)02微控制器体系结构及汇编语言嵌入式微控制器原理及设计——基于STM32及Proteus仿真开发(第2版)毕盛编著本章内容2.1Cortex-M3体系架构总体架构、总线结构、寄存器操作模式、存储器映射、流水线异常中断、存储器保护单元MPU2.2汇编指令寻址方式寄存器寻址、立即寻址、移位寻址间接寻址、基址寻址、多寄存器寻址堆栈寻址、相对寻址2.3ARM指令集指令格式、条件码、存储器访问指令数据处理与乘法指令、分支指令可选后缀、伪指令、协处理器指令2.4Thumb指令集ThumbvsARMvsThumb-2代码密度与执行效率的权衡Thumb-2特点与区别Cortex-M3总体架构2.1.132位处理器内核:数据路径、寄存器、存储器接口均为32位。采用哈佛结构(独立指令总线和数据总线),取指与数据访问并行。核心特性三级流水线+分支预测,分支延时仅1个时钟周期可选MPU(存储器保护单元)+外部缓存支持支持小端模式和大端模式集成调试组件:指令断点、数据观察点、跟踪接口主要组件Cortex-M3内核、NVIC(中断控制器)总线阵列、MPU、FPB(闪存断点)DWT(数据监测点与跟踪)ITM(仪表跟踪宏单元)ETM(嵌入跟踪宏单元)TPIU(跟踪接口单元)AMBA总线规范AHB(AdvancedHigh-speedBus):高性能、高时钟频率,连接处理器与高速RAM、NANDFlash、DMA等APB(AdvancedPeripheralBus):连接外部设备,低功耗优先ASB:AHB的替代方案03Cortex-M3总线结构2.1.2I-Code总线AHB-Lite协议,32位总线地址:0x00000000~0x1FFFFFFF负责取指,可一次取两条16位Thumb指令D-Code总线AHB-Lite协议,32位总线地址:0x00000000~0x1FFFFFFF负责数据访问,自动将非对齐访问转为对齐系统总线AHB-Lite协议,32位总线地址:0x20000000~0xDFFFFFFF及0xE0100000~0xFFFFFFFF负责所有数据传送(取指和数据访问均可)私有外设总线APB协议,32位总线地址:0xE0040000~0xE00FFFFF负责私有外设访问关键设计:I-Code和D-Code总线共享同一存储器空间但物理独立,实现了哈佛结构的并行访问优势。所有总线访问均为对齐访问。04通用寄存器R0~R152.1.3R0~R12:32位通用寄存器用于数据操作和参数传递16位Thumb指令只能访问R0~R7;32位Thumb-2可访问全部R13(SP):堆栈指针寄存器MSP(SP_main):主堆栈指针,OS内核、异常服务使用PSP(SP_process):进程堆栈指针,常规应用代码使用处理者模式和线程模式均可用MSP;仅线程模式可用PSP双堆栈设计防止用户堆栈溢出影响系统核心R14(LR):链接寄存器调用子程序时存储返回地址,也用于异常返回R15(PC):程序计数器读PC返回当前指令地址+4(因内部使用流水线)示例:0x3000:MOVR1,PC;R1=0x3004(因流水线,PC指向当前指令+4)05特殊功能寄存器2.1.3XPSR(程序状态寄存器组)N(负数):有符号补码结果为负时N=1Z(零):结果为0时Z=1C(进位/借位):加法进位C=1;减法借位C=0V(溢出):有符号溢出时V=1CPSR:当前程序状态寄存器SPSR:异常模式下的备份寄存器中断屏蔽寄存器组PRIMASK1位寄存器置位后除NMI和硬件错误外,屏蔽所有中断FAULTMASK1位寄存器置位后除NMI外,屏蔽所有中断BASEPRI9位寄存器定义优先级阈值,大于等于该值的中断不响应CONTROL寄存器:定义特权状态+决定当前使用哪个堆栈指针(MSP/PSP)06操作模式与特权级别2.1.4两种处理器操作模式线程模式(ThreadMode)运行普通应用程序代码可使用特权级或用户级处理者模式(HandlerMode)运行异常服务例程(包括中断服务)必须在特权级下执行两级特权操作特权级可访问所有存储器和指令复位后默认进入特权级特权级→用户级:直接切换用户级存储器访问受限用户级→特权级:执行SVC指令触发异常,由OS接管修改CONTROL寄存器设计目的:在硬件水平上限制不受信任或未调试好的程序,防止其随意配置涉及要害的寄存器。配合MPU可保护关键存储区域(如操作系统区域)不被破坏。07存储器映射2.1.5Cortex-M3支持4GB存储空间,支持32位字、16位半字和8位字节,支持非对齐数据传送。大端模式vs小端模式大端模式(Big-Endian)高字节存储在低位地址中低字节存储在高位地址中示例:0x12345678地址低→高:0x120x340x560x78小端模式(Little-Endian)低字节存储在低位地址中高字节存储在高位地址中示例:0x12345678地址低→高:0x780x560x340x12存储空间划分0x00000000~0x1FFFFFFF:Code区(Flash/ROM,I-Code/D-Code总线)0x20000000~0x3FFFFFFF:SRAM区(系统总线)0x40000000~0x5FFFFFFF:外设区(系统总线)0xE0000000~0xE00FFFFF:内部外设区(NVIC/MPU/Debug等)08三级流水线2.1.6取指Fetch解码Decode执行Execute流水线工作特点16位指令优化:处理器每隔一个周期做一次取指,因为一次可取32位(两条16位Thumb指令),取出第1条时第2条也一并取出分支预测:解码阶段包含取指预测,预取分支目标地址的指令,使分支延时减少到一个时钟周期流水线冒险:当遇到分支指令时,流水线可能需要刷新,分支预测机制就是为了减少这种性能损失09异常和中断2.1.7异常vs中断异常:内核活动产生复位、取指失败、未定义指令、软件中断、存储器访问失败等中断:来自内核外部片上外设或扩展外设产生的异步信号异常与中断数量15个异常(编号1~15)+240个中断源(具体数目由芯片厂商决定)处理异常前必须保留当前处理器状态,异常处理完成后恢复原程序继续执行。允许多个异常同时发生,按固定优先级处理。优先级规则优先级数值越小,优先级越高。支持中断嵌套:高优先级异常可抢占低优先级异常。3个固定优先级系统异常(优先级号为负数,高于所有其他异常):复位、NMI(不可屏蔽中断)、硬件失效。其他异常优先级均可编程。10存储器保护单元MPU2.1.8MPU是Cortex-M3的可选组件,可对特权级访问和用户级访问分别施加不同的访问限制。检测到违规访问时产生fault异常,由异常服务例程分析并改正。MPU主要特性8个保护区域支持多达8个不同区域的独立保护配置子区域划分每个区域可分为8个大小相同的子区域访问属性控制将关键区域设为只读,防止用户程序破坏典型应用场景:由操作系统使用MPU,保护OS内核数据不被用户程序破坏;保护向量表等关键存储区域;为不同任务分配独立的存储空间,实现任务间隔离。11汇编指令寻址方式(一)2.21.寄存器寻址操作数在寄存器中,指令指出寄存器编号MOVR1,R2;将R2的值存入R12.立即寻址操作数包含在指令中(立即数)MOVR0,#0xFF000;将0xFF000装入R03.寄存器移位寻址(ARM特有)第2操作数在与第1操作数结合前先移位MOVR0,R2,LSL#3;R2左移3位→R0ANDSR1,R1,R2,LSLR3;R2左移R3位后与R1相与4.寄存器间接寻址寄存器内容为操作数的地址指针LDRR1,[R2];R2指向的单元数据→R1SWPR1,R1,[R2];R1与R2指向单元互换5.基址寻址基址寄存器内容+指令中的偏移量=有效地址。常用于查表、数组操作、特殊功能寄存器访问。LDRR2,[R3,#0x0C];读取(R3+0x0C)地址的内容→R2STRR1,[R0,#-4]!;R0=R0-4,R1值保存到R0指向单元12汇编指令寻址方式(二)2.26.多寄存器寻址一条指令可传送多个寄存器值,允许传送16个寄存器的任何子集。LDMIAR1!,{R2-R7,R12};R1指向的数据→R2~R7、R12,R1自动加STMIAR0!,{R2-R7,R12};R2~R7、R12→R0指向的存储单元,R0自动加7.堆栈寻址使用堆栈指针(R13)指向存储区域,操作顺序"后进先出"。向上生长(递增堆栈):向高位地址生长,指令如LDMFA、STMFA向下生长(递减堆栈):向低位地址生长,指令如LDMFD、STMFD满递减堆栈(FullDescending)是ARM中最常用的堆栈类型。8.相对寻址基址寻址的变通,由PC提供基准地址,指令中的地址码作为偏移量。BLSUBR1;调用SUBR1子程序BEQLOOP;条件跳转到LOOP标号处13ARM指令格式与条件码2.3.1~2.3.2指令格式:<opcode>{<cond>}{S}<Rd>,<Rn>{,<operand2>}opcode:指令助记符cond:条件码S:影响CPSRRd:目标寄存器Rn:第1操作数operand2:第2操作数operand2三种形式#immed_8r8位常数循环右移偶数位得到Rm寄存器方式,操作数即寄存器值Rm,shift寄存器移位方式,Rm值保持不变指令条件码EQZ=1相等NEZ=0不相等CS/HSC=1无符号≥CC/LOC=0无符号<MIN=1负数PLN=0正数或零VSV=1溢出VCV=0无溢出HIC=1,Z=0无符号>LSC=0,Z=1无符号≤GEN=V有符号≥LTN≠V有符号<GTZ=0,N=V有符号>LEZ=1,N≠V有符号≤AL任何无条件14存储器访问指令2.3.3单寄存器存取LDR/STR加载:LDR目标寄存器,源地址存储:STR源寄存器,目标地址支持字/半字/字节(加B/H后缀)多种寻址方式:立即数、寄存器、寄存器移位寻址方式示例LDRR1,[R0,#0x12];立即数偏移LDRR1,[R0,R2];寄存器偏移LDRR1,[R0,R2,LSL#2];寄存器移位LDRRd,[Rn,#0x04]!;前索引(!后缀)LDRRd,[Rn],#0x04;后索引多寄存器存取LDMx/STMx数据块传送:IA(后加4)/IB(前加4)DA(后减4)/DB(前减4)堆栈操作:FD(满递减)/ED(空递减)FA(满递增)/EA(空递增)示例LDMIAR1!,{R2-R4,R6};R1指向的数据→R2~R4、R6STMFDSP!,{R0-R7,LR};R0~R7、LR压入满递减堆栈交换指令SWPSWPR2,R1,[R0];R0指向单元的内容↔R1,读入R215数据处理与乘法指令2.3.3数据处理指令数据传送MOV:寄存器/立即数传送MVN:取反后传送算术运算ADD/ADC/SUB/RSBSBC/RSC逻辑运算AND/ORR/EORBIC:位清除比较指令(结果不保存,只影响CPSR标志位):CMP(数值比较)/CMN(负数比较)/TST(位测试)/TEQ(相等测试)示例:CMPR3,R1;R3-R1影响标志位TSTR3,#0x02;测试R3第2位乘法指令32位结果MULRd,Rm,Rs;Rd=Rm×RsMLARd,Rm,Rs,Rn;Rd=Rm×Rs+Rn64位结果UMULL/UMLAL:无符号乘/乘加SMULL/SMLAL:有符号乘/乘加注意:数据处理指令只能对寄存器内容操作,不能对内存数据直接操作。所有指令均可选S后缀影响CPSR标志位。16分支、中断与其他指令2.3.3分支指令B(分支跳转)基于PC偏移量,24位常数跳转范围±32MBBL(带链接分支)跳转前将返回地址保存到LR适用于子程序调用BX(带状态切换)跳转同时切换ARM/Thumb状态地址最低位为1→Thumb;为0→ARM其他指令SWI(软中断):产生软中断,用于用户级→特权级切换MRS(读CPSR)/MSR(写CPSR)伪指令与协处理器指令伪指令(编译时被等效ARM指令代替):ADR(小范围地址)/ADRL(中范围)/LDR(大范围)/NOP(空操作)协处理器指令:CDP(数据操作)/LDC(数据加载)/STC(数据存储)MCR(ARM→协处理器)/MRC(协处理器→ARM)17指令可选后缀2.3.3S后缀使用S后缀:指令执行后刷新CPSR条件标志位不使用S后缀:条件标志位不发生变化ADDR1,R2,R3;R1←R2+R3,标志位不刷新ADDSR1,R2,R3;R1←R2+R3,标志位刷新比较指令(CMP、TST等)无需S后缀也会刷新标志位!后缀指令执行后,基址寄存器地址=执行前值+偏移量LDRR2,[R1,#02];无!后缀,R1值不变LDRR2,[R1,#02]!;有!后缀,R1=R1+2注意:!必须紧跟地址表达式,不能用于R15,需有偏移量B后缀/H后缀B:操作数据为字节(8位)H:操作数据为半字(16位)LDRR3,[R1,#30];传送32位字LDRBR3,[R1,#30];传送字节LDRHR3,[R1,#30];传送半字18Thumb指令集2.4Thumb是ARM指令集的子集,16位代码宽度。存储空间约为ARM的60%~70%,指令数多约30%~40%。使用Thumb代码,存储器功耗降低约30%。三种指令集比较ARM全部32位指令效率高,代码密度低Thumb全部16位指令代码密度高Thumb-2(Cortex-M3采用)16/32位混合兼顾密度与效率Thumb-2与ARM的主要区别无协处理器指令、无访问CPSR/SPSR指令、无乘加和64位乘法指令除B(跳转)指令外,其他指令均为无条件执行大多数数据处理指令采用2地址格式(结果放入操作数寄存器,而非第3个寄存器)单寄存器加载/存储指令只能访问R0~R7;多寄存器指令也只能操作R0~R719本章小结本章深入介绍了Cortex-M3体系架构,包括总线结构、寄存器组、操作模式与特权级别、存储器映射、三级流水线、异常与中断机制、MPU;详细讲解了9种汇编指令寻址方式、ARM指令集(数据处理、乘法、分支、伪指令等)以及Thumb/Thumb-2指令集的特点与区别,为后续STM32编程开发奠定底层基础。嵌入式微控制器原理及设计——基于STM32及Proteus仿真开发(第2版)03微控制器硬件系统嵌入式微控制器原理及设计——基于STM32及Proteus仿真开发(第2版)毕盛编著本章内容3.1微控制器概述内部总线结构、存储器映射、常用接口、芯片命名规则3.2微控制器基本电路电源电路、复位电路、时钟源、时钟管理单元、下载电路、启动配置电路3.3微控制器低功耗模式睡眠模式、停止模式、待机模式的工作原理与应用场景STM32F103概述3.1基于Cortex-M3内核的32位微控制器,最高工作频率72MHz,可达1.25DMIPS/MHz,支持单周期乘法和硬件除法。内存包括32KB~1MBFlash和20~64KBSRAM。本书主控芯片STM32F103R6Flash:32KB工作频率:72MHz定时器:3个16位输入捕捉:12个输出比较:12个PWM输出:14个SPI:1个I2C:1个USART:2个USB:1个CAN:1个电压范围:2~3.6V封装:LQFP64引脚数:6403内部总线结构3.1.1Cortex-M3内核通过指令总线连接Flash控制器;数据总线、系统总线和AHB相连。SRAM和DMA直接与AHB总线矩阵相连。APB总线APB1(低速外设总线)最大频率:36MHz连接:TIM2~7、RTC、WDG、SPI2/3、USART2~5、I2C、USB、CAN、DAC、PWR、BKPAPB2(高速外设总线)最大频率:72MHz连接:USART1、SPI1、TIM1/8、ADC1~3、GPIOA~G、AFIO、EXTIAHB总线:工作频率与内核一致(72MHz),挂有独立分频器可降低功耗。挂载设备:SDIO、DMA1/2、RCC、Flash接口、CRC。内核和DMA都可成为总线主机,同时申请时发生仲裁。04存储器映射—代码区与SRAM区3.1.1代码区Code
0x00000000~0x1FFFFFFF(512MB)用户Flash存储区:从0x08000000开始,存放用户程序代码系统存储区:0x1FFFF000~0x1FFFF7FF(2KB),出厂预置Bootloader程序Bootloader作用:通过USART1将代码下载到SRAM,再写入用户Flash,实现ISP串口编程选项字节:0x1FFFF800~0x1FFFF80F(16字节),配置读写保护、看门狗模式、BOR阈值等SRAM区
0x20000000~0x3FFFFFFF(512MB)存放片内SRAM数据:全局变量、栈、堆、运行时临时数据实际SRAM容量由芯片型号决定(如20KB、64KB等)低1MB(0x20000000~0x200FFFFF)支持位带操作,位带别名区位于0x22000000~0x23FFFFFF05存储器映射—片上外设区3.1.1片上外设区0x40000000~0x5FFFFFFF(512MB),低1MB支持位带操作。APB1总线外设TIM2~7,TIM12~14RTC,WWDG,IWDGSPI2/I2S,SPI3/I2SUSART2~5I2C1,I2C2USB,CAN,BKPPWR,DACAPB2总线外设AFIO,EXTIGPIOA~GADC1,ADC2,ADC3TIM1,TIM8SPI1USART1TIM9~11AHB总线外设SDIODMA1,DMA2RCCFlash接口CRC注意:TIM5/6/7/12/13/14、USART4/5、TIM9~11仅存在于大容量产品中;BxCAN2仅存在于互联型产品。小/中容量产品访问保留地址会导致HardFault。06外部存储器控制区与私有外设区3.1.1外部存储器控制区(FSMC模块可选)
0x60000000~0x9FFFFFFF(1GB)仅大容量(Flash≥256KB)和互联型产品内置FSMC模块Block1(0x60000000~0x6FFFFFFF):NORFlash/PSRAM/SRAM,支持4个片选Block2(0x70000000~0x7FFFFFFF):NANDFlash(16位数据总线)Block3(0x80000000~0x8FFFFFFF):NANDFlash(8位数据总线)Block4(0x90000000~0x9FFFFFFF):PCCard保留区:0xA0000000~0xDFFFFFFF(1GB),未使用,访问将导致HardFault私有外设区(PPB)
0xE0000000~0xFFFFFFFF(512MB)由ARMCortex-M3内核定义,芯片厂商不可修改,所有基于Cortex-M3的芯片行为一致NVIC:嵌套向量中断控制器SysTick:系统滴答定时器SCB:系统控制块调试组件:FPB、DWT、ITM、TPIU等07常用接口3.1.2SRAM:存放数据的存储空间Flash:存放程序的存储空间GPIO:通用输入/输出USART:异步串行通信(UART)SPI:同步串行通信I2C:I2C总线通信ADC:模拟量转数字量CAN:CAN总线通信USB:USB接口定时器:对内部时钟计数实现定时;对外部信号计数实现计数功能扩展功能:输入捕获(测量外部脉冲宽度)、输出比较/PWM(输出不同占空比脉冲)RTC(实时时钟):实现时间定时功能看门狗(WDG):窗口看门狗(WWDG)+独立看门狗
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026经营部主任面试题及答案
- 云计算与人工智能在金融系统中的融合
- 湖北黄石市2025-2026学年高一下学期7月期末英语试题(含答案)
- 2026年攀枝花市仁和区住房和城乡建设局人员招聘笔试备考试题及答案详解
- 2026年黄山市徽州区住房和城乡建设局人员招聘笔试备考题库及答案详解
- 2026四川泸州市选调公务员8人考试模拟试题及答案详解
- 保险AI模型可信度评估-第54篇
- 2026年甘肃省住房和城乡建设局人员招聘考试备考题库及答案详解
- 2026年海口市龙华区住房和城乡建设局人员招聘笔试备考题库及答案详解
- 2026年六安舒城县人民医院社会化用人(编外)公开招聘17名考试参考题库及答案详解
- 失业保险知识培训课件
- T/CHES 54-2021取水权交易可行性报告编制导则
- 血管活性药物静脉输注护理课件
- 动脉血气标本采集并发症预防及处理课件
- 2025年电工(中级)职业技能鉴定参考试指导题库(含答案)
- 2024继电保护作业指导书
- 劳务派遣投标方案(技术方案)
- 信息通信网络运行管理员(高级)理论考试题库(学员用)
- 《心脏骤停》课件
- 多孔功能陶瓷制备与应用
- 浮游选煤 课件
评论
0/150
提交评论