在基于ARM Cortex-Mx(x>=0)的嵌入式MCU软件开发中,有时候会经常遇到让人头疼的类似HardFault硬件故障的问题,这个时候你可能就需要使用SCB的一些关键寄存器来进行问题分析了。那究竟什么是SCB?SCB又有哪些关键寄存器呢?Keil里又怎么查看SCB寄存器的值呢?后续连载文章将带大家一起来看下SCB的相关的关键寄存器,主要包括含义解释、字段说明和如何应用等方面。
什么是SCB?
SCB,即System Control Block,系统控制块,是ARM Cortex-M处理器内核中的一个关键模块,负责系统级的控制和管理功能(异常、复位、、低功耗等),具体功能主要包括:
系统异常配置与控制;
处理器特性控制;
向量表重定位;
系统复位与状态查询;
端序配置(配置大端模式和小端模式)。
而本文主要阐述系统复位与状态查询功能,即通过查看一些关键寄存器来进行异常诊断和错误分析。
SCB有哪些关键寄存器呢?
当然,不同Cortex-M版本的SCB所拥有的寄存器种类是存在差异的,因此要看具体使用的是哪个版本的Cortex-M。
连载文章将以常用的Cortex-M4为例进行介绍。 我们需要打开core_cm4.h文件,搜索SCB,就能看到一些相关的内容:


包含了SCB的相关寄存器定义及其寄存器的位定义,并且有具体解释说明。
为了让大家更好地理解,在介绍各个寄存器之前,我们先来看下怎么样在Keil里查看这些寄存器?
最直观的方式:
进入仿真,打开Watch窗口,直接在Name栏里输入“SCB”并按回车键即可看到SCB所包含的寄存器信息:



被折叠的 条评论
为什么被折叠?



