摘要:
1. 基本介绍 有三个基础的寄存器: 计数寄存器(TIMx_CNT,Counter register) 预分频寄存器(TIMx_PSC,Prescaler register) 自动重载寄存器(TIMx_ARR,Auto-reload register) 重复计数寄存器(TIMx_RCR,Repeti 阅读全文
摘要:
2.3.1 异常状态 2.3.1 异常类型 阅读全文
摘要:
1. 内存区域、类型及属性 内存被分成不同的区域,不同区域有着不同的类型及属性;内存的类型及属性决定着访问这些区域时的行为。 内存的类型有: Normal,处理器可以为了效率而重新排序事务,或者执行推测性的读取。 Device, 处理器将保持相对于其他Device或者Strongly-ordered 阅读全文
摘要:
Handler模式一直使用MSP,所以在handler模式下处理器会忽略SPSEL位;异常进入及返回机制会更新CONTROL寄存器。 在操作系统的环境中,推荐线程在Thread模式下运行使用PSP,内核和异常处理使用MSP。 此外,线程模式下默认使用MSP,为了切换为PSP可以: 使用MSR指令把C 阅读全文
摘要:
1. Cortex-M4的内核设备 NVIC, Nested vectored interrupt controller SCB, System control block SysTick, The system timer MPU, Memory protection unit FPU, Floa 阅读全文
摘要:
虽然 BASEPRI 是8位寄存器,但是STM32的CortexM3&M4只用了高4位,低四位是没有用到的。 __set_BASEPRI(0x0f); // 无效,小于0x0f的值无效 __set_BASEPRI(0xf0); // 有效 阅读全文
摘要:
typeof 用于获取一个对象的类型,比如: unsigned int a = 1; // typeof (a) is unsigned int short b = 2; // typeof (b) is short offsetof #define offsetof(TYPE, MEMBER) ( 阅读全文
摘要:
1.MSR和MRS指令介绍 MRS 指令: 对状态寄存器CPSR和SPSR进行读操作。通过读CPSR可以获得当前处理器的工作状态。读SPSR寄存器可以获得进入异常前的处理器状态(因为只有异常模式下有SPSR寄存器)。 MSR指令: 对状态寄存器CPSR和SPSR进行写操作。与MRS配合使用,可以实现 阅读全文
摘要:
LR是用于保存函数调用的返回地址的link register。 SP是堆栈指针。堆栈通常用于在函数调用中保存”automatic”变量和上下文/参数。从概念上讲,您可以将”stack”视为您”pile”您的数据的地方。您将”stacking”保留在一个数据之上,堆栈指针告诉您”high”的数据是”s 阅读全文
摘要:
bx lr 的作用等同于 mov pc,lr 即跳转到lr中存放的地址处。 那么lr存放的是什么地址呢? lr就是连接寄存器(Link Register, LR),在ARM体系结构中LR的特殊用途有两种:一是用来保存子程序返回地址;二是当异常发生时,LR中保存的值等于异常发生时PC的值减4(或者减2 阅读全文