当前位置: 首页 > news >正文

串口中断和定时器中断_STM32f103单片机(四)——定时器中断

853fa1418c45b86f902f418807aed2dd.png

    以定时器500毫秒LED灯闪烁1次为例,用TIM3定时器。

c72cbfd312b9747d4dd68191dc7d833b.png

STM32一共有8个定时器,其中TIM1、TIM8是高级定时器,它是由一个16位自动装载计数器组成,它由一个可编程的预分频器驱动,适合很多用途,包含测量输入信号的脉冲宽度(输入捕获),或者产生输出波形(输出比较、PWM、嵌入死区时间的互补PWM等)。使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几微秒到几个毫秒的调节。TIM2、3、4、5是通用定时器,TIM6和TIM7是基本定时器,基本定时器特别的可以为数模转化DAC提供时钟。他在芯片内部直接连接到DAC并通过触发输出直接驱动DAC,他们都是相互独立的。

这里我以定时器500毫秒LED灯闪烁1次,这里需要用到的库有如下:

0331720696874e839e9be5762eb4ffe6.png

还需要用到,算是应用这个单片机的应用层:

4186868b1bdc1b5e4dfbcaa5cefba00f.png

同时要写一些中间层的函数。

8e745fb25bd3e69d88b69fe11ab4c5e4.png

和之前驱动串口类似。

流程图:

b1838988e8245c1a48a2e3844c42a0d3.png

f9381e903eebae9d45093840c27508e3.gif

1、IO的初始化

a6f38b8e0fff7810cde26ef2cccb1d1e.png

f9381e903eebae9d45093840c27508e3.gif

2、定时器的初始化

首先还是根据时钟树来找到选用的定时器的时钟

eee0dd7f9048ae0f4bd233e951a20d5d.png

再来读stm32f10x_tim.c里的函数,根据库进行配置。 

db98a16dbc6e1b440ed9d32a99c86edd.png

7480222e06e3eeb489c06207922f444a.png

4b610b1d07ff2dda1fdd75e5fdb6a850.png

接着继续设置为定时器中断

f5934d1f7432a4297c22b76626452959.png

f9381e903eebae9d45093840c27508e3.gif

3、对中断进行配置并设置优先级

67547c47a23279ec7c2a4a6cbd41fb07.png

f9381e903eebae9d45093840c27508e3.gif

4、定时器中断服务函数编写

54dd8192201af018f38cbba71563374a.png

f9381e903eebae9d45093840c27508e3.gif

5、关联中断服务和中断响应函数

把中断服务函数与中断响应函数连接起来,在stm32f10x.h中添加函数void void Time_IntHandle(void);在stm32f10x.c的相应中断入口中添加Time_IntHandle()

59273e9b3a9b9009df2ea4fa2b3512af.png

f9381e903eebae9d45093840c27508e3.gif

6、初始化函数写入主函数

4b574efb3d3cb7d1f5d5ba8ff2cce5de.png

好了,定时器就总结完了。最后说说昨天我干了什么,昨天听滴滴的讲座听的我热血沸腾,车辆的调度,丰富的数据,活地图,每5分钟可以实施的跟新一次地图,安全的分析预测,在嘉定的自动驾驶体验,智能交通,疫情期间武汉2万医护人员500万次服务,以及对未来自动驾驶计划和展望,都透露着高科技和企业的责任心,很荣幸处在这个时代,也很荣辛还有机会可以去感受这些变革。

往期回顾

◆STM32f103单片机(三)——串口

◆STM32f103单片机(二)——外部中断总结

◆STM32f103单片机(一)——新建工程+IO总结

相关文章:

  • 多个参数变更update_PTOSC在线DDL变更工具使用攻略
  • php和python学不明白_现在自学php和python那个合适?
  • 交通流元胞自动机模拟仿真 matlab源码_SLM工艺仿真综述(三)之《金属3D打印仿真的解决方案与思路 . 下篇》...
  • python 菜单按钮打开新窗口_Python Tkinter Menubutton菜单按钮
  • python selenium翻页_Python+Selenium自动化实现分页处理
  • python中不相等符号_python的关系运算符中,用来表示不等于的符号是
  • python 预测分析_如何用Python来预测分析离职率呢
  • mysql big转字符串_mysql的这些坑你踩过吗?快来看看怎么优化mysql
  • windows api 刷新控件_基于 .NET 5的ComponentOne控件示例正式推出
  • python用pip安装第三方库显示没有pip_新手学习Python第三方包库pip安装失败总结
  • 表达式树括号_抽象语法树为什么抽象
  • mfc cpropertysheet tab键切换焦点_Linux 下如何切换工作目录
  • qwidget 怎么在程序中设置大小_石雕牌坊中的门的大小比例怎么确定
  • 高德地图标注_高德地图标注详细流程!
  • python3安装mysqlclient_python3安装mysqlclient,解决django使用pymysql报错的问题
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • bearychat的java client
  • gf框架之分页模块(五) - 自定义分页
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Vue全家桶实现一个Web App
  • Wamp集成环境 添加PHP的新版本
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 彻底搞懂浏览器Event-loop
  • 关于Flux,Vuex,Redux的思考
  • 好的网址,关于.net 4.0 ,vs 2010
  • 机器学习学习笔记一
  • 技术发展面试
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 思否第一天
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 微信开源mars源码分析1—上层samples分析
  • 移动端唤起键盘时取消position:fixed定位
  • 译米田引理
  • 用mpvue开发微信小程序
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 自制字幕遮挡器
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • ​你们这样子,耽误我的工作进度怎么办?
  • # 计算机视觉入门
  • #include到底该写在哪
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • (03)光刻——半导体电路的绘制
  • (Java数据结构)ArrayList
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (ZT)薛涌:谈贫说富
  • (附源码)php投票系统 毕业设计 121500
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (四)Android布局类型(线性布局LinearLayout)
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .Mobi域名介绍
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)