使用USART操作SPI设备
- 为什么需要USART产生SPI信号
- 片上SPI接口不够用
- 需要特殊的数据格式:9位/字节
- 或需要带奇偶检验的数据字节
- (7位数据+奇偶位)/字节
- (8位数据+奇偶位)/字节
- SPI接口有以下属性
- 四条信号线:MISO & MOSI & SCK (&NSS)
- 时钟相位和极性 CPOL & CPHA
- 数据帧格式:MSB / LSB
- USART接口以及时序要求
- RX & TX & SCLK
- 时钟相位和极性 CPOL & CPHA
- 数据帧格式:8/9位数据 (start和stop位没有对应的时钟脉冲)
- 最大时钟频率: 4.5MHz
USART同步方式时序
NVIC的优先级
- 为什么中断要有优先级
- 何为占先式优先级 (pre-emption priority)
- 高占先式优先级的中断事件会打断当前的主程序 / 中断程序运行——抢断式优先响应,俗称中断嵌套。
- 何为副优先级 (subpriority)
- 在占先式优先级相同的情况下,高副优先级的中断优先被响应;
- 在占先式优先级相同的情况下,如果有低副优先级中断正在执行, 高副优先级的中断要等待已被响应的低副优先级中断执行结束后才 能得到响应——非抢断式响应(不能嵌套)。
- 判断中断是否会被响应的依据
- 首先是占先式优先级,其次是副优先级;
- 占先式优先级决定是否会有中断嵌套;
- Reset、NMI、Hard Fault 优先级为负(高于普通中断优先级)且不可调整。
配置STM32中断的优先级
每一个中断都有一个专门的寄存器 (Interrupt Priority Registers) 来描述该中断的占先式优先级及副优先级,在这个寄存器中STM32使用4个二进制位描述优先级(Cortex-M3定义了8位,但STM32只使用了4位)
占先式优先级与副优先级的分配:4个描述优先级位有下列5种组合使用方式, “优先级组别”决定如何解释这4位。