嵌入式 STM32(二)
更多专栏:
超详细的嵌入式面经专栏(适用于小白学习和大佬复习):https://www.nowcoder.com/creation/manager/columnDetail/mGYoDz
校招公司汇总专栏:https://www.nowcoder.com/creation/manager/columnDetail/0ybKdp
目录:
1.什么是中断向量表?
2.定时器都有哪几种类别?区别是什么?
3.你在项目中用过定时器中断吗?请你说说流程?
4.你用过PWM吗?什么是PWM?
5.讲讲你对PWM控制舵机的理解?
6.什么是ADC什么是DAC?
内容:
1.什么是中断向量表?
基本概念
- 中断向量表是一个存储中断处理程序入口地址的表格或数组,其中每个中断源或中断类型都对应着一个中断处理程序的入口地址。当中断事件发生时,处理器会根据中断号或类型从中断向量表中查找相应的中断处理程序入口地址,并跳转到该地址执行相应的中断处理程序。
- 存储位置:中断向量表通常存储在系统的特定内存区域,如RAM 或 ROM。在系统初始化期间,中断向量表会被填充或初始化为相应的中断处理程序的入口地址。每个中断源通常有一个唯一的中断向量号或类型号,该号码在中断向量表中作为索引,用于定位对应的中断处理程序的入口地址。
工作流程
- 中断触发:当外部硬件或内部事件触发中断时,CPU会暂停当前执行的程序,转而去处理中断。
- 查找中断向量:CPU根据中断号(即中断向量)在中断向量表中查找对应的中断处理程序的地址。
- 执行中断服务程序:CPU跳转到中断向量表中对应的地址,开始执行中断服务程序(ISR)。
- 返回到主程序:中断服务程序执行完毕后,CPU返回到之前中断的程序,继续执行。
作用
- CPU通过查找中断向量表,能够迅速找到并跳转到对应的中断服务程序,确保中断事件得到及时处理。
- 通过不同的中断向量,可以同时处理来自多个硬件源的中断请求,每个中断源都对应一个特定的处理程序。
- 中断向量表能够使得每个中断源对应一个独立的中断处理程序。
2.定时器都有哪几种类别?区别是什么?
种类 |
位数 |
计数器模式 |
捕获/比较通道 |
互补输出 |
DMA请求 |
场景 |
高级定时器(TIM1,TIM8) |
16 |
向上,向下,向上/向下 |
4 |
有 |
可以 |
应用于PWM电机控制 |
通用定时器(TIM2~TIM5) |
16 |
向上,向下,向上/向下 |
4 |
无 |
可以 |
计数器计数,PWM输出,输入捕获,输出比较 |
基本定时器(TIM6,TIM7) |
16 |
向上,向下,向上/向下 |
0 |
无 |
可以 |
驱动DAC |
高级定时器
- 高级控制定时器(TIM1和TIM8)由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动。
- 它适合多种用途,包含测量输入信号的脉冲宽度(输入捕获),或者产生输出波形(输出比较、PWM、嵌入死区时间的互补PWM等)。
- STM32F103的通用定时器是TIM1、TIM8.
- 16位向上、向下、向上/下自动装载计数器
- 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意数值
- 多达4个独立通道:①输入捕获②输出比较③PWM生成(边缘或中间对齐模式)④单脉冲模式输出
通用定时器
- STM32F103的通用定时器是TIM2、TIM3、TIM4、TIM5
- 位于低速APB1总线上(时钟可以来源于APB1的时钟)
- 16位向上、向下、中心对齐 的计数模式,自动装载计数器(TIMx_CNT)。
- 16位可实时修改的预分频器(TIMx_PSC),计数器时钟频率的分频系数位1~65535之间的任意数值。(分频之后计数器的时钟频率变小,因此可以计数更长的周期)
- 每一个定时器都有4个独立通道(TIMx_CH1~4),这些道路可以用来作为: ①输入捕获 ②输出比较 ③PWM生成 ④单脉冲模式输出
- 通用定时器可以向上计数、向下计数、向上向下双向计数模式。
向上计数模式:
计数器从0计数到自动加载值(TIMx_ARR),然后重新从0开始计数并且产生一个计数器溢出事件。
向下计数模式:
计数器从自动装入的值(TIMx_ARR)开始向下计数到0,然后从自动装入的值重新开始,并产生一个计数器向下溢出事件。
中央对齐模式(向上/向下计数):
计数器从0开始计数到自动装入的值,产生一个计数器溢出事件;然后向下计数到1并且产生一个计数器溢出事件;然后再从0开始重新计数。
基本定时器
- 基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动。
- 它们可以作为通用定时器提共时间基准,特别地可以为数模转换器(DAC)提供时钟。实际上,它 们在芯片内部直接连接到DAC并通过触发输出直接驱动DAC.
- 16位自动重装载累加计数器
- 16位可编程(可实时修改)预分频器,用于对输入的时钟按系数为1~65536之间的任意数值 分频
- 触发DAC的同步电路
- 在更新事件(计数器溢出)时产生中断/DMA请求
3.你在项目中用过定时器中断吗?请你说说流程?
定时器中断的配置流程
- 开启TIM时钟,配置时钟源并使能
- 配置时基单元
- 中断输出配置
- NVIC配置,使能
- TIM使能
4.你用过PWM吗?什么是PWM?
PWM(脉宽调制)是一种通过调节信号的占空比(即高电平与低电平的时间比例)来控制功率输出的技术。
- pwm的频率:是指1秒钟内信号从高电平到低电平再回到高电平的次数(一个周期)
- 单位: Hz
- 表示方式: 50Hz
- **pwm的周期:**T=1/f
- 周期=1/频率
- 占空比:信号高电平持续时间与整个周期的比例,通常用百分比表示。占空比越大,输出的平均电压或功率越大。
例子:比方说周期的时间是10ms,脉宽时间是6ms 那么低电平时间就是4ms 总的占空比 6/(6+4)= 60%,这就是占空比为60%的脉冲信号。
PWM的应用:
- 电机控制:在电机控制中,电压越大,电机转速越快,而通过P
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本人双飞本,校招上岸广和通。此专栏覆盖嵌入式常见面试题,有C/C++相关的知识,数据结构和算法也有嵌入式相关的知识,如操作系统、网络协议、硬件知识。本人也是校招过来的,大家底子甚至项目,可能都不错,但是在面试准备中常见八股可能准备不全。此专栏很适合新手学习基础也适合大佬备战复习,比较全面。最终希望各位友友们早日拿到心仪offer。也希望大家点点赞,收藏,送送小花。这是对我的肯定和鼓励。 持续更新