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

资讯详情

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

【嵌入式学习】嵌入式原理知识-中断与时钟树(五)

【嵌入式学习】嵌入式原理知识-中断与时钟树(五) 1. 中断的概念中断是单片机应对突发事件的一种机制。如下图所示当遇到更高优先级的事件时单片机会记录当前执行节点转而处理突发事件处理完毕后再回到原程序节点继续执行。1.1 举例说明必要性假设有一个程序在不断地点亮、熄灭灯如果采用顺序执行的方式会导致很多数据被覆盖。此时可以采用中断的方式当接收到数据时根据接收数据寄存器的状态进行中断处理从而防止数据丢失。核心目的就是避免延迟函数耽误数据读取。2. 中断优先级的概念2.1 概念简单来说事件本身也有优先级之分。通过配置中断优先级可以确定事件执行的先后顺序。由于单片机是单核处理器同一时刻只能处理一个事件因此必须明确事件的先后顺序。2.2 表示中断优先级片上外设具备中断功能NVICNested Vectored Interrupt Controller嵌套向量中断控制器会对这些中断进行排序随后单片机在中断向量表中查找对应的执行函数并执行相应的中断处理。NVIC 包含以下内容公用 4 位比特位可以通过分组来分配抢占优先级与子优先级的数量。2.3 抢占优先级与中断嵌套当遇到更高的抢占优先级的时候会发生中断嵌套。抢占优先级定 “级别”子优先级定 “同级别内的顺序”维度抢占优先级子优先级作用层级跨优先级上下级同优先级内部平级决定什么谁能打断谁同级别里谁先执行是否可抢占是高抢低否不改变抢占关系2.4 子优先级与中断排队当抢占优先级相同会根据子优先级的先后来进行排序执行任务。优先级相同时遵循先来后到的准则。3. 串口中断的实现3.1 配置标志位中断在串口的结构图中含有如下的一个中断结构标志位经过逻辑或门产生中断配置对应的标志位中断让其可以产生中断。3.2 配置NVIC配置中断优先级分组- 配置抢占优先级与子优先级的位数4. EXTI的工作原理External Interrupt and Event Controller-外部中断和事件控制器4.1 EXTI的简介EXTI主要用来捕捉信号的上升沿与下降沿。并产生对应的中断。4.2 EXTI的应用一般情况使用连续两次的判断当之前为高电平连续两次读取电平状态为低电平的时候此时认为按键按下。但是EXTI中断可以实现上升沿或者下降沿的中断判断4.3 EXTI线的概念EXTI一共有16个外部中断在一个时间 EXTI只能给不同的ABC组一个使用。就是如果是EXTI0那么此时只能有GPIOA0,GPIOB0等等中的一个接入使用。EXTI一共具有20条线其中前16条是IO接口引入剩下4条分别是如下接口实现信号源全称作用线路PVD可编程电压检测器Power Voltage Detector电源电压低于 / 高于设定阈值时触发用于掉电预警Line16RTC实时时钟Real-Time Clock闹钟、唤醒定时器等时间事件Line17USB通用串行总线USB 从挂起 / 低功耗状态唤醒的事件Line18Ethernet以太网网线接入 / 网络唤醒事件ETH_WKUPLine194.4 EXTI边沿检测实现接入GPIO口然后经过边沿检测电路分别可以得到上升沿下降沿和双边延。也可以通过软件触发中断。5. 时钟树5.1 时钟和时钟树的概念时钟 单片机的心跳控制代码运行的时序。时钟树基准时钟经过分频得到不同外设系统的不同时钟频率。形似树的形状所以就称为时钟树。5.2 分频器锁相环和复用器分频器 对频率做除法锁相环 对频率做乘法复用器 对频率做选择-例如 HSE条路线 有三个选择 -一般就是梯形的东西5.3 时钟树的树根就是时钟的基准源HSI 高速内部时钟- 这个时钟准确性比较低HSE: 一般都使用高速外部时钟准确性高LSE低速外部时钟一般就是32.768Khz 作为实时时钟这个值为2的次方LSI低速内部时钟一般不使用 准确性比较低5.4 时钟树的树干就是系统时钟SYSCLK系统时钟有三个来源直接从HSI得到- 内部时钟源精度低且固定直接从HSE得到- 外部时钟源精度高且固定经过锁相环倍频后- SYSCLK灵活可变 但是需要注意推荐最高频率超过可能会导致错误。5.5 时钟树的树枝就是经过各部分分配到外设上的时钟频率共有三条总线AHBAdvanced High-Speed Bus先进高性能总线连接高速核心部件CPU 内核、Flash、SRAM、DMA 控制器等APB1/2Advanced Peripheral Bus先进外设总线专门挂外设USART、SPI、I2C、定时器、ADC、GPIO 等。分两条是为了让不同速度需求的外设分开供电 / 分频I-BusInstruction Bus指令总线CPU 要执行的程序代码存在 Flash 里所以 I-Bus 通过总线矩阵去Flash读取指令D-Bus Data Bus数据总线变量、数组、堆栈都存在SRAMRAM里所以 D-Bus 通过总线矩阵访问 RAM6. 时钟树的编程6.1 时钟树的初始状态当没配置时钟树时时钟树具有初始状态如下图的绿色粗线所示6.2 启动代码改变初始时钟虽然说默认情况是上述情况所示但是启动文件中具有如下的代码也就是经过SystemInit处理后会将单片机的频率设置为最高频率。也就是变成这样了
返回列表