尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

嵌入式学习 Day4

嵌入式学习 Day4 1.Cortex类似于大脑不同型号效果不同2.DSP数字信号处理器用于处理大量数字计算3.FPU浮点数运算单元4.PC 程序计数器 Program count 用于计第一个程序地址5.SP 栈指针 用于管理栈6.LP 连接寄存器用于保存返函数回地址7.xPSR 程序状态寄存器8.STM32上电后内部完整流程上电↓读取向量表 //理解为地址表↓设置SP //向量表数据要往里面压类似于要把一个个地址往里面压为什么压地址请看DAY1、2↓进入Reset_Handler //设置运行环境、初始化变量、清零BSS、进入main的一个函数↓初始化系统↓main()9.、GPIO外部中断完整流程完整过程按键↓GPIO输入变化 //高低电平等变化↓EXTI检测边沿//EXTI检测边沿一个检测器理解为检测高低电平↓产生中断请求↓NVIC判断优先级//嵌套中断控制器判断那个东西先中断优先级高先中断↓CPU响应↓进入IRQ_Handler函数//↓执行中断代码↓返回主程序10.RCC时钟信号树HSI高速内部时钟IntHSE高速外部时钟Ex PLL锁相环放大倍频率//8MHZ×972MHZ11.时钟树分APB1/APB2两条总线为APB1TIMER USART1 IICAPB2控制GPIO USART2 ADC一、今日学习目标今天开始从 STM32 外设层进入 CPU 内核层。前几天学习C语言 ↓ 指针 ↓ 结构体 ↓ 寄存器 ↓ GPIO控制今天继续深入ARM Cortex-M3 CPU ↓ 程序启动 ↓ 异常系统 ↓ NVIC中断管理 ↓ GPIO外部中断 ↓ 时钟系统目标理解 STM32 为什么可以运行程序为什么中断可以自动进入函数以及 GPIO 为什么需要时钟。二、ARM Cortex-M是什么1. Cortex含义Cortex 是 ARM 对处理器核心架构的命名。英文Cortex皮层、核心层例如大脑皮层Cerebral Cortex表示大脑负责高级处理的区域。ARM使用 Cortex 表示一套面向不同应用设计的处理器核心架构。2. Cortex-M含义CortexARM设计的CPU核心。MMicrocontroller微控制器所以Cortex-M表示ARM面向单片机领域设计的CPU核心系列。三、Cortex-M系列区别Cortex-M0/M0特点成本低功耗低结构简单应用简单控制器低功耗设备Cortex-M3STM32F103C8T6使用Cortex-M3特点32位架构支持复杂中断性能强适合通用嵌入式控制Cortex-M4M4相比M3增加DSPDigital Signal Processing数字信号处理。作用提升大量数学计算能力。例如音频处理ADC采样 ↓ 滤波计算 ↓ 输出M3需要普通指令完成大量乘法计算。M4拥有专门DSP指令可以更快完成。部分M4还有FPUFloating Point Unit浮点运算单元。适合电机控制音频信号处理机器人四、Cortex-M3核心寄存器CPU内部有高速寄存器。重要的1. PCProgram Counter程序计数器。作用保存下一条要执行指令的地址。注意PC不是存程序。程序存储Flash。例如Flash 0x08000000 ↓ 程序代码PC记录当前执行位置。2. SPStack Pointer栈指针。作用保存当前栈顶地址。栈用于保存局部变量函数参数函数现场例如voidtest(){inta;}变量a可能存放在栈中。为什么启动时需要设置SP因为CPU刚上电不知道栈在哪里。向量表第一个数据就是初始SP。例如向量表 0x08000000 ↓ 0x20005000表示RAM中的栈顶位置。3. LRLink Register连接寄存器。作用保存函数返回地址。例如main调用fun();CPU跳转到fun。执行结束后需要知道回哪里。LR保存返回地址。4. xPSR程序状态寄存器。保存CPU状态包括运算结果标志当前执行状态异常状态五、STM32启动流程STM32上电后不会直接进入main。完整流程上电 ↓ 读取向量表 ↓ 设置SP ↓ 进入Reset_Handler ↓ 初始化系统 ↓ main()六、向量表Vector Table向量表本质保存异常和中断函数地址的表。例如地址 内容 0x08000000 初始SP 0x08000004 Reset_Handler 0x08000008 HardFault_Handler 0x0800000C EXTI_HandlerCPU发生异常查找对应地址。跳转执行。七、Reset_Handler是什么Reset_Handler不是中断。它是芯片复位后的启动函数。主要作用1. 设置运行环境例如初始化栈。2. 初始化变量例如inta10;需要从Flash加载到RAM。3. 清零BSS区域例如intb;默认b04. 系统初始化例如配置时钟系统参数5. 调用main最终main();八、异常和中断Cortex-M统一称Exception异常包括Exception ├── Reset ├── HardFault ├── SysTick └── 外部中断IRQ九、NVIC中断控制器全称Nested Vectored Interrupt Controller中文嵌套向量中断控制器。作用管理中断。NVIC负责1. 开启中断例如允许USART中断。2. 设置优先级例如电机保护高优先级。按键低优先级。3. 中断嵌套例如正在执行UART中断。突然发生高优先级定时器中断。CPU暂停UART。执行Timer。完成后回来。十、EXTI外部中断控制器全称External Interrupt/Event Controller作用检测GPIO输入变化。例如按键连接PA0。按下GPIO电平1 ↓ 0这个变化叫下降沿。EXTI检测到产生中断请求。十一、边沿概念GPIO有两个状态0和1。变化过程叫边沿。上升沿0 → 1例如低电平变高。下降沿1 → 0例如按键按下。十二、GPIO外部中断完整流程完整过程按键 ↓ GPIO输入变化 ↓ EXTI检测边沿 ↓ 产生中断请求 ↓ NVIC判断优先级 ↓ CPU响应 ↓ 进入IRQ_Handler函数 ↓ 执行中断代码 ↓ 返回主程序十三、STM32时钟系统RCC全称Reset and Clock Control作用管理时钟复位1. HSIHigh Speed Internal高速内部时钟。来源芯片内部RC振荡器。例如8MHz。2. HSEHigh Speed External高速外部时钟。来源外部晶振。STM32开发板通常8MHz晶振。3. PLLPhase Locked Loop锁相环。作用倍频。例如STM32F103HSE 8MHz ↓ PLL ×9 ↓ 72MHz十四、APB1和APB2STM32内部有不同总线。APB1连接TIM2USART2I2CAPB2连接GPIOUSART1ADC十五、今天解决的问题总结问题1为什么启动需要设置SP答案不是存地址。而是告诉CPU栈在哪里。问题2Reset_Handler是什么答案芯片复位后的启动函数。负责初始化环境初始化变量配置系统调用main问题3EXTI检测边沿是什么意思答案检测GPIO电平变化。包括上升沿0→1下降沿1→0问题4Cortex是什么意思答案ARM处理器核心架构名称。问题5M3和M4区别答案M4增加DSP部分有FPU更适合复杂数学运算。十六、今日总结今天学习最大的收获以前GPIOC-BRR(113);只知道控制LED。现在知道完整链路C代码 ↓ CPU执行 ↓ 寄存器访问 ↓ 外设工作 ↓一 GPIO变化 ↓ 硬件响应同时理解程序启动 向量表 ↓ SP ↓ Reset_Handler ↓ main 中断 GPIO ↓ EXTI ↓ NVIC ↓ CPU ↓ Handler这为后续学习GPIO外部中断定时器UARTDMARTOS打下底层基础。
返回列表