STM32F103RCT6——定时器简单用法

STM32F10xx参考手册英文和中文版

百度网盘:https://pan.baidu.com/s/1Z2nB0WVJIxvm3VOI9MQiiw

提取码:lxlx

STM32F103RCT6数据手册

链接:https://pan.baidu.com/s/1tRchgf-5C1MN4W58vQ9zPg

提取码:lxlx

定时器分类

STM32F103RCT6包括,高级控制定时器TIM1和TIM8,通用定时器TIM2-5,基本定时器TIM6和TIM7.

高级控制定时器TIM1,TIM8

TIM1和TIM8定时器的功能包括: ● 16位向上、向下、向上/下自动装载计数器 ● 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意 数值 ● 多达4个独立通道: ─ 输入捕获 ─ 输出比较 ─ PWM生成(边缘或中间对齐模式) ─ 单脉冲模式输出 ● 死区时间可编程的互补输出 ● 使用外部信号控制定时器和定时器互联的同步电路 ● 允许在指定数目的计数器周期之后更新定时器寄存器的重复计数器 ● 刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态 ● 如下事件发生时产生中断/DMA: ─ 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发) ─ 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数) ─ 输入捕获 ─ 输出比较 ─ 刹车信号输入 ● 支持针对定位的增量(正交)编码器和霍尔传感器电路 ● 触发输入作为外部时钟或者按周期的电流管理

通用定时器TIM2-5

通用TIMx (TIM2、TIM3、TIM4和TIM5)定时器功能包括: ● 16位向上、向下、向上/向下自动装载计数器 ● 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65536之间的任意 数值 ● 4个独立通道: ─ 输入捕获 ─ 输出比较 ─ PWM生成(边缘或中间对齐模式) ─ 单脉冲模式输出 ● 使用外部信号控制定时器和定时器互连的同步电路 ● 如下事件发生时产生中断/DMA: ─ 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发) ─ 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数) ─ 输入捕获 ─ 输出比较 ● 支持针对定位的增量(正交)编码器和霍尔传感器电路 ● 触发输入作为外部时钟或者按周期的电流管理

基本定时器TIM6和TIM7

TIM6和TIM7定时器的主要功能包括: ● 16位自动重装载累加计数器 ● 16位可编程(可实时修改)预分频器,用于对输入的时钟按系数为1~65536之间的任意数值 分频 ● 触发DAC的同步电路 ● 在更新事件(计数器溢出)时产生中断/DMA请求

通用定时器函数

初始化

TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);

//初始化定时器

TIM_Prescaler=psc;//时钟预分频数

TIM_CounterMode;//选择向上计数或向下计数

TIM_Period=arr;//自动重装值

TIM_ClockDivision=CKD;//时钟分频

TIM_RepetitionCounter;//参数设置为0时,时间周期不翻倍

//参数设置为1时,时间周期翻1倍

//参数设置为2时,时间周期翻2倍

使能

TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);

//TIMx ——TIM2-5; FunctionalState NewState——ENABLE/DISABLE

中断标志位

TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);

//TIMx ——TIM2-5; TIM_IT——TIM_IT_Update

清除中断标志位

TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT); //清除中断标志位

//TIMx ——TIM2-5; TIM_IT——TIM_IT_Update

代码实现

void TIM2_Int_Init(u16 arr,u16 psc)

{

TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;

NVIC_InitTypeDef NVIC_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); ///使能TIM2时钟

TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数

TIM_TimeBaseInitStructure.TIM_Period = arr ;//arr:自动重装值。

TIM_TimeBaseInitStructure.TIM_Prescaler = psc ;//时钟预分频数

TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructure);//初始化TIM2

TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE); //允许定时器2更新中断

NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn; //定时器2中断

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1//抢占优先级1

NVIC_InitStructure.NVIC_IRQChannelSubPriority=2; //子优先级2

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_Init(&NVIC_InitStructure);

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2

TIM_Cmd(TIM2,ENABLE); //使能定时器2

//定时器2中断服务函数

void TIM2_IRQHandler(void)

{

if(TIM_GetITStatus(TIM2,TIM_IT_Update) != RESET) //溢出中断

{

}

TIM_ClearITPendingBit(TIM2,TIM_IT_Update); //清除中断标志位

}

STM32F103RCT6系统定时器是指在STM32F103RCT6芯片上的定时器模块。该芯片上有多个定时器,包括TIM2、TIM6和TIM7等。这些定时器具有不同的功能和特点。 其中,TIM2定时器可以用于产生PWM信号。要在STM32F103RCT6上产生一个40kHz的PWM信号,可以选择使用TIM2定时器。首先,需要配置TIM2的时钟源和预分频系数,以获得正确的计数时钟。将计数器的周期设置为1800,即72MHz/40kHz,以便每个PWM周期的持续时间是25us。\[2\] 另外,STM32F103RCT6还有TIM6和TIM7定时器。这两个定时器的主要功能包括16位自动重装载累加计数器、16位可编程预分频器、触发DAC的同步电路以及在更新事件时产生中断/DMA请求等。这些定时器可以用于各种定时和计数应用。\[3\] 总结来说,STM32F103RCT6系统定时器包括TIM2、TIM6和TIM7等,可以用于产生PWM信号、定时和计数等应用。 #### 引用[.reference_title] - *1* [STM32F103RCT6 定时器相关常用函数](https://blog.csdn.net/weixin_50212044/article/details/130831252)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [STM32F103RCT6 -- 定时器TIM2 输出 PWM 波形](https://blog.csdn.net/weixin_50212044/article/details/130828996)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [STM32F103RCT6——定时器简单用法](https://blog.csdn.net/Drowningxml/article/details/129097025)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值