一、ARM Core-tex-M4微处理器
1.内部结构概要
(1)M4内核
Cortex-M4微处理器支持Thumb指令集和Thumb-2技术,具备IEEE 754单精度浮点单元和除法指令,拥有中断处理程序和线程模式,支持指令和调试状态。它在处理中断时可自动保存处理器状态,定点运算速度是Cortex-M3的两倍,浮点运算速度快10倍,功耗减半
(2)嵌套向量中断器
嵌套向量中断控制器(NVIC)是Cortex-M4内嵌的中断控制器,在STM32系列芯片中支持64个中断源,优先等级为0到7,其中0为最高。NVIC支持中断优先级分组,实现抢占和非抢占级别。M4微处理器通过NVIC实现中断尾链和迟到功能,无需处理状态保存和恢复,自动保存和恢复中断入口。NVIC采用向量中断机制,自动调用中断服务例程,减少延时,并集成可选的唤醒中断控制器(WIC),在低功耗模式下快速进入超低功耗状态,只能被WIC唤醒。M4内核还包含一个24位倒计时定时器SysTick,即使在睡眠模式下也能工作,有助于实时操作系统移植。
(3)存储保护单元
存储器保护单元(MPU)用于保护选定的内存单元,将存储器划分为8个子区域,优先级可自定义。处理器可以使这些区域禁用或启用,以实现灵活的内存保护
(4)调试访问端口
调试访问端口可以访问存储器和寄存器,支持SWD或JTAG调试访问,或同时支持两种。Flash修补和断点(FPB)单元用于硬件断点和代码修补。数据监视点及追踪(DWT)单元实现观察点、触发资源和系统分析。指令跟踪宏单元(ITM)支持printf()类型调试。跟踪端口接口单元(TPIU)用于连接跟踪端口分析仪,包括单线输出模式。
(5)总线接口
Cortex-M4微处理器提供先进的高性能总线(AHB-Lite)接口,包括I-code存储器接口、D-code存储器接口、系统接口和基于高性能外设总线(ASB)的外部专用外设总线(PPB)。其位段操作支持原子级的读写,对存储器的访问是对齐的,并在写数据时使用写缓冲区方式。
(6)浮点运算单元
Cortex-M4微处理器能处理32位单精度指令数据,结合乘法和累积指令提高计算精度。硬件支持加减法、乘除法和平方根运算,并支持所有IEEE数据四舍五入模式。它拥有32个专用32位单精度寄存器,也可作为16个双字寄存器寻址。采用解耦三级流水线,加快处理器运行速度。
2.内部寄存器
二、指令
1.数据传送类
取数指令
存数指令
传送指令
堆栈操作指令
ADR指令
2.数据操作类
算数运算指令
逻辑运算指令
移位指令
位测试指令
数据序转指令
拓展类指令
3.跳转控制类
4.其他指令
三、伪指令
1.系统预定义的段
它们的地址排序分别是text,然后是data,最后是bss;
2.常量的定义
可以使用.equ汇编指令
也可以使用.set汇编指令
3.程序中插入常量
插入方式参考下图
4.条件伪指令
. if 条件伪指令后面紧跟一个恒定的表达式(即该表达式的值为真),并且最后要以.ifend结尾。中间如果有其他条件,可以用.else填写汇编语句
5.文件包含伪指令
6.其他常用伪指令
用来给用户自定义一个段
用来定义一个全局变量
用来引入外部函数
用来填充字节,使其能够对齐
作业
1.理解并学习main.s汇编源文件。
打开04-Software/ch02/CH02-1-20220118工程目录编译下载运行
进行串口更新,结果如下
2.修改main.s源文件
修改main.s源文件,增加以下内容
1、在第一行显示“广州大学”字样
2、编写一个1+2+..+10的程序,将求和结果存入名为“sumresult”的内存单元中,并将求和结果用printf显示出来。
1.在数据段定义要输出的信息以及变量
2.在代码段实现1至10的累加
3.将所有信息输出
运行结果
(可以看到成功输出自己的信息与累加结果)
(小灯也顺利的亮起来)