嵌入式—定时器与PWM

目录

一.定时器基本原理

1.定时器概念

2.定时器分类

3.时钟计算方法

4.工作原理

二.定时器实验

1.任务要求

2.HAL库—工程创建

3.相关代码编写

4.整体编译及串口烧录

5.效果展示

三.PWM基本原理

1.PWM介绍

2.PWM的工作原理

四.PWM实验

1.任务要求

2.HAL库—创建工程

3.相关代码编写

4.整体编译及串口烧录

5.效果展示

五.总结

一.定时器基本原理

1.定时器概念

  定时器是微控制器中不可缺少的外设,它主要用于定时、测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)等,本质就是进行计数,选择内部时钟脉冲,作为计数器时,技术信号的来源选择非周期脉冲信号。

2.定时器分类

  STM32定时器种类多,功能 强大,这些定时器完全独立、 互不干扰,可以同步操作。分为高级定时器、通用定时器和基本定时器三种,它们之间存在功能上的包含关系,即基本定时器有的功能通用定时器都有,通用定时器又包含了高级定时器的部分功能,而高级定时器则增加了如死区互补输出、刹车信号等更高级的功能。

我们最常用的就是通用定时器,TIM2、TIM3、TIM4、TIM5 为STM32的4个独立的16位通 用定时器,具有定时、测量 输入信号的脉冲长度(输入 捕获)、输出所需波形(输出比较、产生PWM、单脉冲 输出等)等功能。

3.时钟计算方法

  定时器的定时时间主要取决于定时周期和预分频因子,计算公式为:

  定时时间=(ARR+1)×(预分频值PSC+1)/输入时钟频率

T=(TIM_Period +1)*(TIM_Prescaler +1)/TIMxCLK 这里ARR+1是因为计数器都是从0开始计数的。

4.工作原理

(1)时钟产生与选择
     通用定时器的时钟源有多种选择,主要包括内部时钟(CK_INT)、外部时钟模式(外部输入脚TIx、外部触发输入ETR)和内部触发输入(ITRx)等。时钟源的选择决定了定时器的计数频率。

(2)计数过程
     通用定时器内部有一个计数器,它根据所选的时钟源进行计数。计数器的计数模式可以是向上计数、向下计数或者向上/向下双向计数(中心对齐模式)。

a.向上计数模式:计数器从0开始计数,当计数到自动加载值(TIMx_ARR)时,计数器溢出并重新从0开始计数,同时产生一个计数器溢出事件。
b.向下计数模式:计数器从自动加载值(TIMx_ARR)开始向下计数,当计数到0时,计数器重新从自动加载值开始计数,并产生一个计数器向下溢出事件。
c.中心对齐模式:计数器从0开始计数到自动加载值-1时,产生一个计数器溢出事件,然后向下计数到1时,再次产生一个计数器溢出事件。之后计数器从0开始重新计数。
(3)输入捕获与输出比较
通用定时器具有输入捕获和输出比较功能,这些功能通过定时器的输入捕获通道和输出比较通道实现。

a.输入捕获:输入捕获通道可以捕获外部信号的边沿,并记录捕获时刻计数器的值。这可以用于测量输入信号的脉冲宽度或频率。
b.输出比较:输出比较通道可以将计数器的值与预设的比较值进行比较,当两者相等时,可以产生输出信号或触发中断。这可以用于生成PWM波形或控制外部设备的开关。

二.定时器实验

1.任务要求

  之前作业中的延时功能都是通过循环、delay/Hal_delay函数等实现,本次作业通过定时器Timer方式实现时间的精准控制,相当于给CPU上了一个闹钟,CPU平时处理其它任务,当定时时间到了以后,处理定时相关的任务。请设置一个5秒的定时器,每隔5秒从串口发送“hello windows!”;同时设置一个2秒的定时器,让LED等周期性地闪烁,实现一个多任务并发运行的功能

2.HAL库—工程创建

通过STM32CubeMx创建新工程,点击左上角的File文件选择“New Project”,在弹出的界面中,下拉列表输入芯片名称“STM32F103C8T6”,右下角选中后,点击“Start Project”,界面如下:

配置“RCC”,RCC中, HSE选中"Crystal/Ceramic Resonator"项,LSE选择Disable,界面如下:

配置“SYS”,下拉Debug模式 ,选中"Serial Wire"Timebase Source选择“SysTick”,界面如下:

然后进行GPIO口的管脚配置,这里我选择了PA1作为LED指示灯,配置如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值