STM32定时器计时

最近用STM32标准库做了个定时器计时的方法,挺简单的,分享给大家,若有不足之处请多多指教。

MCU:STM32F407VG
IDE: Keil5

1.配置定时器初始化,我使用的是TIM3,配置中断

note:①TIM_TimeBaseInitStructure.TIM_Period = arr; 此处参数若为1000-1就是0.1秒进入一次中断,10000-1就是1秒
②`TIM_TimeBaseInitStructure.TIM_Prescaler=8400-1; ``定时器分频根据芯片来定,可以搜索一下,你能懂的。


```void TIM3_Int_Init(u16 arr)
{TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);  //使能TIM3时钟TIM_TimeBaseInitStructure.TIM_Period = arr; //自动重装载值TIM_TimeBaseInitStructure.TIM_Prescaler=8400-1;  //定时器分频TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1; //TIM_TimeBaseInitStructure.TIM_RepetitionCounter=5;TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);//初始化TIM3TIM_ClearFlag(TIM3,TIM_FLAG_Update);                                      TIM_ITConfig(TIM3,TIM_IT_Update|TIM_IT_Trigger,ENABLE); //允许定时器3更新中断TIM_Cmd(TIM3,ENABLE); //使能定时器3NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn; //定时器3中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x01;    //抢占优先级1NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03;    //子优先级3NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);}

2.编写定时器中断处理函数

int count=0;    //中断计数
int timer_count=0;//定时器计时
void TIM3_IRQHandler(void)
{if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET) //溢出中断{count++;   //每中断一次计数+1if(count==10){timer_count++;//当计数=10给另一个变量+1count=0; //将中断计数变量清零}    //若是0.1秒中断一次,那此时timer_count为1秒了}TIM_ClearITPendingBit(TIM3,TIM_IT_Update);  //清除中断标志位
}

3.写一个函数封装定时的功能

void Timer_Count(u8 second) //参数为你要定时的时间
{if(timer_count==second){LED_TOGGLE_PD;//在其他文件宏定义了一个LED灯翻转功能timer_count=0;//计时清零}
}
然后在主函数调用void Timer_Count(u8 second) ;就可以实现定时了。

STM32定时器计时相关推荐

  1. STM32定时器溢出模式计时设置

    STM32定时器溢出模式设置 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN7 开发环境:MDK4.23 MCU:STM32F10 ...

  2. STM32定时器捕获编码器模式测速和方向测不准问题

    ** STM32定时器捕获编码器模式测速和方向测不准问题 问题概述 关于STM32编码器模式电机测速的资料网上一抓一大把,却发现真的拿过来用还是有问题的,比如刚刚做了个东西,是个个头比较大的麦克纳姆轮 ...

  3. 【CubeMX配置stm32定时器中断】

    CubeMX配置stm32定时器中断 一.使用CubeMX对STM32进行基础的配置 1.选择需要使用的定时器 选择TIM2和TIM3示例, 注意: TIM2和其它定时器选择时钟的方法不同,TIM3等 ...

  4. STM32定时器中断显示时间

    前言 利用STM32的定时器中断,实现时间的显示.我们知道利用定时器中断只能进行tick的计算,然而用来显示时间我们应该怎么办呢?经过项目的实际运用,我发现利用定时器中断配合串口通讯也能实现时间显示. ...

  5. 嵌入式作业STM32定时器实现串口通信及LED灯闪烁

    目录 前言 一.什么是定时器 1.定时器与计数器 2. 定时器有什么用 3. 定时器的原理 4.时钟产生器和时基单元 二.用STM32CubeMx创建项目 1. 创建项目 2.配置RCC和SYS 3. ...

  6. STM32定时器的应用

    一: STM32F106 一共有11个定时器 2个高级定时器,4个普通定时器,2个基本定时,2个看门狗,和一个滴答定时器 高级定时器 计数方式(向上,向下).预分频值 1-65532.四通道,输出输入 ...

  7. STM32定时器中断

    目录 一.关于STM32定时器中断 1.定时器分类 2.通用定时器的功能特点 3.定时器中断的触发 4.定时时钟计算方法 二.CubeMX初始化配置 1.芯片选型(我们这里运用的STM32F103C8 ...

  8. STM32定时器-基本定时器

    STM32定时器-基本定时器 实验芯片:STM32F103 更新日期:2021年8月17日 声明:部分图文来自互联网公开资料,转载注明出处 一.基本定时器简介 TIM6和TIM7是一个16位向上递增的 ...

  9. STM32 定时器详解

    STM32 定时器详解 吃了一个猛亏,自己理解花了大半天时间,结果一看代码发现巨简单 算了,把自己理解的放上来吧 目录 STM32 定时器详解 前言 一.定时器种类和区分 二.时钟源 三.计数过程 3 ...

最新文章

  1. C#去掉字符串中的汉字
  2. 一行Java代码实现混乱排序List集合
  3. Echarts地图编写
  4. AgileEAS.NET平台开发Step By Step系列-药店系统-索引
  5. Android 应用开发---ViewPager---5.使用Fragment实现ViewPager滑动
  6. Spring多资源文件properties的配置
  7. Nginx笔记总结十一:Nginx重写规则指南
  8. 拓端tecdat|R语言中的copula GARCH模型拟合时间序列并模拟分析
  9. 如何解决使用PCS7时报警无法确认的问题?
  10. wps下一步快捷键_WPS常用快捷键大全(附下载)
  11. 移动领先100笔试面试经验
  12. css图片保持原有尺寸比例
  13. cm4 NVIC完全解析
  14. CCF-分蛋糕-Java
  15. vuforia 模型识别_汽车的优势:Vuforia模型目标
  16. hadoop安装作业
  17. Docker的镜像制作与整套项目一键打包部署
  18. jekenis+tomcat部署更新war失败【踩坑日记】
  19. 「自控元件及线路」4 小功率同步电机
  20. ppt html5转换,PPT还能转H5?这大概是制作招聘H5最快的方法了...

热门文章

  1. 解决Navicat在分辨率不同的主屏和分屏中显示内容数量问题
  2. 改变自我,为成功伏笔
  3. hadoop组件之hbase安装配置
  4. NSGA2一些目标函数在matlab中的测试结果
  5. 用 Vue 实现原生日期选择器
  6. 10个经典智力推理题!据说答对7道,智力在140!
  7. 新品上市调查方案-调查内容及执行设计
  8. LaTeX入门解析篇: 在Linux下编写高质量的文档
  9. Spring中Quartz调度器的使用
  10. Script.NET脚本语言开发工具2.1.1版本发布,支持Ruby脚本的开发、调试等功能