基础定时器实验

7.1 stm32定时器概述stm32内部共有8个定时器,其中timer1和timer8属于高级定时器,timer2~timer5属于通用定时器,8个定时器的资源独立,互不影响。 stm32的通用定时器是一个通过可编程预分频器(psc)驱动的16位自动装载计数器(cnt)构成。stm32的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和pwm)等。使用定时器预分频器和rcc时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。stm32的每个通用定时器都是完全独立的,没有互相共享的任何资源。通用定时器的内部结构如下图所示。
7.2 相关寄存器要使用通用定时器的基本功能,一共需要配置4个寄存器,剩余的寄存器都是在输入捕获和输出比较中使用到的。
7.2.1 控制寄存器1:timx_cr11514131211109876543210
- ckd[1:0] are cms[1:0] dir opm urs udis cen
bit 9~bit 8:时钟分频系数,定义定时器输入时钟频率与数字滤波器采样频率之间的分频系数
00:采样频率与定时器输入频率相等 01:采样频率是定时器输入频率的2倍 10:采样频率是定时器输入频率的4倍 11:保留bit 7:自动重装载使能
0:timx_arr寄存器中没有缓冲 1:timx_arr寄存器的数据装入缓存器bit 6~bit 5:选择中央对齐模式
00:边沿对齐模式,计数器根据方向位dir计数 01:中央对齐模式1,计数器交替向上向下计数,当timx_ccmrx中的ccxs=00时,计数器向下计数时被设置 10:中央对齐模式2,计数器交替向上向下计数,当timx_ccmrx中的ccxs=00时,计数器向上计数时被设置 11:中央对齐模式3,计数器交替向上向下计数,当timx_ccmrx中的ccxs=00时,计数器向下和向上计数时 被均设置bit 4:计数方向
0:向上计数,计数器从0计数到timx_arr寄存器的数据时重新从0开始并产生一个计数器溢出事件 1:向下计数,计数器从timx_arr寄存器的数据计数到0时重新从timx_arr寄存器的数据开始并产生一个计数器溢出事件bit 3:单脉冲模式
0:发生更新事件时计数器不停止 1:在发生下一次更新事件时,计数器停止bit 2:更新请求源
0:如果使能了更新中断或dma请求,计数器溢出/设置ug位/从模式控制器产生更新都产生更新中断或dma请求 1:如果使能了更新中断或dma请求,只有计数器溢出才产生更新中断或dma请求bit 1:禁止更新
0:允许uev。更新事件由计数器溢出/设置ug位/从模式控制器产生更新事件产生 1:不产生更新事件bit 0:使能计数器
0:禁止计数器 1:使能计数器7.2.2 dma/中断使能寄存器:timx_dier1514131211109876543210
- tde - cc4de cc3de cc2de cc1de ude - tie - cc4ie cc3ie cc2ie cc1ie uie
bit 14:允许触发dma请求
0:禁止触发dma请求 1:允许触发dma请求bit 12:允许捕获/比较4的dma请求
0:禁止捕获/比较4的dma请求 1:允许捕获/比较4的dma请求bit 11:允许捕获/比较3的dma请求
0:禁止捕获/比较3的dma请求 1:允许捕获/比较3的dma请求bit 10:允许捕获/比较2的dma请求
0:禁止捕获/比较2的dma请求 1:允许捕获/比较2的dma请求bit 9:允许捕获/比较1的dma请求
0:禁止捕获/比较1的dma请求 1:允许捕获/比较1的dma请求bit 8:允许更新的dma请求
0:禁止更新的dma请求 1:允许更新的dma请求bit 6:触发中断使能
0:禁止触发中断 1:允许触发中断bit 4:允许捕获/比较4的中断
0:禁止捕获/比较4的中断 1:允许捕获/比较4的中断bit 3:允许捕获/比较3的中断
0:禁止捕获/比较3的中断 1:允许捕获/比较3的中断bit 2:允许捕获/比较2的中断
0:禁止捕获/比较2的中断 1:允许捕获/比较2的中断bit 1:允许捕获/比较1的中断
0:禁止捕获/比较1的中断 1:允许捕获/比较1的中断bit 0:允许更新中断
0:禁止更新中断 1:允许更新中断7.2.3 预分频寄存器:timx_psc1514131211109876543210
psc[15:0]
bit 15~bit 0:预分频器的值,计数器的时钟频率计算公式为
7.2.4 自动重装载寄存器:timx_arr1514131211109876543210
arr[15:0]
bit 15~bit 0:自动重装载的值,该值就是传送到实际的自动重装载寄存器的数值,当该寄存器的值为空时,计数器不工作。
7.2.5 状态寄存器:timx_sr1514131211109876543210
- cc4of cc3of cc2of cc1of - tif - cc4if cc3if cc2if cc1if uif
bit 12:捕获/比较4重复捕获标记
0:无重复捕获产生 1:当计数器的值捕获到timx_ccr4寄存器时,cc4if的状态已经为1bit 11:捕获/比较3重复捕获标记
0:无重复捕获产生 1:当计数器的值捕获到timx_ccr3寄存器时,cc3if的状态已经为1bit 10:捕获/比较2重复捕获标记
0:无重复捕获产生 1:当计数器的值捕获到timx_ccr2寄存器时,cc2if的状态已经为1bit 9:捕获/比较1重复捕获标记
0:无重复捕获产生 1:当计数器的值捕获到timx_ccr1寄存器时,cc1if的状态已经为1bit 6:触发器中断标记
0:无触发事件产生 1:触发器中断等待响应bit 4:捕获/比较4中断标记
**通道cc4配置为输出模式** : 0:无匹配发生 1:timx_cnt的值与timx_ccr4的值匹配 **通道cc4配置为输入模式** : 0:没有输入捕获产生 1:计数器值已经被捕获到timx_ccr4中(在ic4上检测到与所选极性相同的边沿)bit 3:捕获/比较3中断标记
** 通道cc3配置为输出模式** :
0:无匹配发生 1:timx_cnt的值与timx_ccr3的值匹配 **通道cc3配置为输入模式** : 0:没有输入捕获产生 1:计数器值已经被捕获到timx_ccr3中(在ic3上检测到与所选极性相同的边沿)bit 2:捕获/比较2中断标记
**通道cc2配置为输出模式** : 0:无匹配发生 1:timx_cnt的值与timx_ccr2的值匹配 **通道cc2配置为输入模式** : 0:没有输入捕获产生 1:计数器值已经被捕获到timx_ccr2中(在ic2上检测到与所选极性相同的边沿)bit 1:捕获/比较1中断标记
**通道cc1配置为输出模式** : 0:无匹配发生 1:timx_cnt的值与timx_ccr1的值匹配 **通道cc1配置为输入模式** : 0:没有输入捕获产生 1:计数器值已经被捕获到timx_ccr1中(在ic1上检测到与所选极性相同的边沿)bit 0:更新中断标记
0:无更新事件产生 1:更新中断等待响应,当产生更新事件时该位由硬件置1,由软件清07.2.6 计数器:timx_cnt1514131211109876543210
cnt[15:0]
bit 15~bit 0:计数器的值
7.3 定时器例程利用定时器1实现led以1hz闪烁,led接在pa1上。
(1)创建tim1驱动文件,tim.c和tim.h,并将文件添加进工程。
(2)在寄存器文件中添加定义如下图所示。
添加定时器地址
添加定时器结构体映射
(3)tim.h写入如下图所示代码
(4)tim.c写入如下所示代码
#include tim.h/***************************************************name :tim7_irqhandlerfunction :tim7中断服务函数paramater :nonereturn :none***************************************************/u8 tim1_count ;void tim1_up_irqhandler(){ if( ( tim1->sr&0x01 )==0x01 ) { tim1_count ++ ; if( tim1_count==1 ) led = 0 ; else if( tim1_count==2 ) { led = 1 ; tim1_count = 0 ; } } tim1->sr &= ~( 1apb2enr |= 1cr1 |= 1<<0 ; nvic_init( 3, 2, tim1_up_irqn, 2 ) ; }(5)主函数编写如下所示代码
7.4 软件仿真截图

学习一下ARM的智能功率分配技术
为什么CAN能取代RS485?
如何实现(电脑)PC机与单片机AT89C51的串行通信
物联网平台的未来会是怎样的
报道称M1 Mac mimi功耗仅为Intel芯片版本的1/3
基础定时器实验
六个可有效提升Linux服务器安全性的工具和源码
一条高铁,创下两个最长记录,缩短11个小时
2024年,私人企业探索金星,半导体产业扩张
京东布局智能家居生态 打破价格壁垒
三位量子精密测量研究者荣膺“墨子量子奖”
兆易创新推出GD32VW553系列Wi-Fi 6 MCU
ADS7846控制器的特性及引脚图
新型橡胶复合材料有望应用于柔性电子器件中
加速度传感器(MPA1064A)实测---LOTO虚拟示波器
俄罗斯总统普京计划将对该国的加密货币部门进行立法监管
社区说 | 精益求精: Flutter 技巧专题篇
MAX6501–MAX6504微功耗温度开关(中文资料)
深圳太极云软技术股份有限公司企业详情
前5月新增人工智能相关企业近11万家同比增28.54%