STM32F103RCT6——定时器简单用法

这篇具有很好参考价值的文章主要介绍了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

STM32F103RCT6——定时器简单用法

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

通用定时器TIM2-5

STM32F103RCT6——定时器简单用法

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

基本定时器TIM6和TIM7

STM32F103RCT6——定时器简单用法

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

通用定时器函数

初始化

TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);

//初始化定时器

STM32F103RCT6——定时器简单用法

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

STM32F103RCT6——定时器简单用法

清除中断标志位

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) //溢出中断

{

}文章来源地址https://www.toymoban.com/news/detail-473961.html

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

}

到了这里,关于STM32F103RCT6——定时器简单用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32f103入门(5)定时器中断

    STM32 TIM(定时器/计数器)模块的中断流程如下: 配置TIM寄存器:首先,通过配置TIM相关的寄存器来设置计时器的基本参数,例如预分频系数、计数模式、计数器周期等。 使能TIM中断:使用TIM_ITConfig函数或者直接操作TIM的相关寄存器,将所需的中断使能位置1。可以选择使能不

    2024年02月11日
    浏览(35)
  • STM32F103学习笔记(5.1)——定时器时钟

    STM32F103RCT6上总共有8个定时器,其中TIM1和TIM8是高级定时器,它们挂载在APB2高速总线上。而TIM2、TIM3、TIM4、TIM5是通用定时器,TIM6、TIM7是基本定时器,它们都挂载在APB1上,基本定时器的功能最少,高级定时器功能最多。所以以学习通用定时器为主。 需要参考手册第二章存储器

    2024年02月15日
    浏览(39)
  • stm32f103rct6引脚功能表格

    脚号 引脚名称 主功能 默认复用 重定义 备注 1             VBAT VBAT -- -- 说明1 2             PC13-TAMPER-RTC PC13 TAMPER-RTC -- 说明3 3             PC14-OSC32_IN PC14 OSC32_IN -- 说明3 4             PC15-OSC32_OUT PC15 OSC32_OUT -- 说明3 5             OSC_IN OSC_IN -- CAN_RX 晶振

    2024年02月06日
    浏览(44)
  • STM32F103:ADC采样——定时器触发+DMA传输

    实现ADC多通道采样,采用DMA传输,采样由定时器触发 初始化代码:

    2024年02月14日
    浏览(41)
  • stm32f103rct6使用内部晶振作为时钟源

    stm32f103rct6(库函数版例程)使用内部晶振8M,倍频64M 参考 https://blog.csdn.net/oHuanCheng/article/details/105112884 http://www.openedv.com/forum.php?mod=viewthreadtid=286233 https://blog.csdn.net/ll148305879/article/details/106138302 修改system_stm32f10x.c文件中的void SystemInit(void)函数 内部时钟用到了FLASH,需要添加s

    2024年02月07日
    浏览(150)
  • 从零开始制作STM32F103RCT6小车(一)

            仅以此系列给实验室的学弟学妹作为小车制作教程来使用,后续的内容我会在这个暑假陆续更新出来,本篇的内容是新建一个适用于STM32F103RCT6的工程         接下来的操作几乎是基于STM32F1xx系列的固件库,这里我给大家列出链接 STM32F1xx系列固件库               

    2023年04月08日
    浏览(57)
  • STM32F103定时器引脚重定义功能问题处理

    1、概要 在一个项目中,使用STM32F103RCT6单片机,定时器引脚使用的PC6,PC6默认复用定时器为TIM8_CH1,但是由于其他原因,不能使用TIM8_CH1,因此需要使用其重定义功能TIM3_CH1,本文分享了本人在该项目中定时器TIM3引脚复用功能重定义的一些问题及解决过程,希望对大家能有帮助

    2024年02月10日
    浏览(40)
  • 【单片机】STM32单片机的各个定时器的定时中断程序,标准库,STM32F103

    高级定时器和普通定时器的区别(https://zhuanlan.zhihu.com/p/557896041): TIM1是高级定时器,使用的时钟总线是RCC_APB2Periph_TIM1,和普通定时器不一样。 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用

    2024年02月07日
    浏览(55)
  • stm32F103RCT6使用FFT运算分析波形详解(细致教学)

    最近学校电赛队伍招新,出的招新题就是低频示波器的。之前一直没有弄懂FFT,借着这次机会实现了一下,做了一个小示波器 FFT原理简述 FFT,就是快速傅里叶变换,这个操作能够将时域信号转化成频域信号,然后对信号进行分析 这样说可能有点抽象。讲细点就是指能够直观

    2024年02月14日
    浏览(49)
  • 基于stm32f103c8t6的定时器详解(持续更新)

    先声明:stm32f103c8t6中没有基本定时器、只有TIM1-TIM4:分别是高级定时器和通用定时器(对照下图请自行阅读stm32f103x的datasheet) 1、定时器功能:定时、输出比较、输入捕获、互补输出,其中基本定时器只有定时功能、通用定时器只没有互补输出功能、高级定时器具有所有功能

    2023年04月24日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包