STM32F103 TIM4定时器
1、通用定时器(TIM)
通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成。
它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和
PWM)。
使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个
毫秒间调整。
每个定时器都是完全独立的,没有互相共享任何资源。
通用定时器框图
2、配置流程
1 、开定时器4的时钟
RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM4,ENABLE); //开系统时钟
2、 定时器4初始化
函数TIM_TimeBaseInit :
参数介绍:
TIM_TimeBaseInitTypeDef structure TIM_TimeBaseInitTypeDef
定义于文件“stm32f10x_tim.h”:
typedef struct { u16 TIM_Period; u16
TIM_Prescaler; u8 TIM_ClockDivision;
u16 TIM_CounterMode;
}TIM_TimeBaseInitTypeDef;
TIM_Period TIM_Period 设置了在下一个更新事件装入活动的自动重装载寄存器周期的值。它的取值必须在 0x0000 和0xFFFF 之间。 TIM_Prescaler TIM_Prescaler 设置了用来作为 TIMx时钟频率除数的预分频值。它的取值必须在 0x0000 和 0xFFFF 之间。 TIM_ClockDivision TIM_ClockDivision 设置了时钟分割。该参数取值见下表
TIM_TimeBaseInitTypeDef
TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period = 7200-1;
TIM_TimeBaseStructure.TIM_Prescaler = 10000;
TIM_TimeBaseInitTypeDef.TIM_TimeBaseStructure; TIM_TimeBaseStructure.TIM_Period = 7200-1; //设置pscTIM_TimeBaseStructure.TIM_Prescaler = 10000; //设置ARR = 1000//7200/72MHZ*10000=1s 即1s钟中断一次
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //时钟分频英子位为1TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数TIM_TimeBaseInit(TIM4, & TIM_TimeBaseStructure); //调用初始化函数//使能接收中断
3 、打开更新中断(NVIC开关和定时器外设的中断源开关)
TIM_ITConfig(TIM4,TIM_IT_Update, ENABLE);
NVIC_SetPriority(TIM4_IRQn, NVIC_EncodePriority (7-2, 1, 2)); //将合成的优先级设置给USART1中断源
NVIC_EnableIRQ(TIM4_IRQn); //使能NVIC控制器中断开关,这一步必须要
4、失能定时器4
TIM_Cmd(TIM4,DISABLE); //先失能
5、编写中断服务函数
void TIM4_IRQHandler()
{ if(TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET){ //这里写中断结束后需要执行的程序// printf("aaaaaaaaaa\r\n");}TIM_ClearITPendingBit(TIM4, TIM_FLAG_Update);}
代码仓库:https://gitee.com/bigtiger_king/stm32_-tima/tree/master/
STM32F103 TIM4定时器相关推荐
- STM32F103通用定时器使用
STM32F103单片机中定时器分为3种,高级定时器.通用定时器.基本定时器. 通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成.它适用于多种场合,包括测量输入信号的脉冲长度( ...
- STM32F103基本定时器使用
STM32F103单片机中定时器分为3种,高级定时器.通用定时器.基本定时器. 基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动.它们可以作为通用定时器提 ...
- STM32F103高级定时器使用
STM32F103单片机中定时器分为3种,高级定时器.通用定时器.基本定时器. 高级控制定时器(TIM1和TIM8)由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动.它适合多种用 ...
- stm32f103基本定时器的使用
学习使用笔记:复制粘贴久了有些忘记如何配置了,复制了框图.官方代码与寄存器学习和回忆 基本定时器功能框图: 1:打开来自RCC的时钟(RCC_APB1PeriphClockCmd) 固件库代码与寄存器 ...
- STM32F103利用定时器编程实现输出一路PWM波形
目录 一.PWM简介 二.STM32F1 PWM介绍 三.PWM输出配置步骤 四.实现代码 五.实现效果 六.参考资料 一.PWM简介 PWM是 Pulse Width Modulation 的缩写, ...
- STM32F103 - CubeMX 的使用实例详细(04.5)- STM32F103的 - 定时器设定详细解释 - 定时器相关的HAL接口函数 - 定时器的中断
前言:本文介绍STM32 定时器中断控制的HAL 接口定义: 1 该驱动接口能实现的主要功能: 1.1 有哪些驱动 /** ************************************ ...
- STM32 - CubeMX 的使用实例详细(04.1)- STM32F103的 - 定时器设定详细解释 - PWM波的产生 - 频率占空比的设定 - 软件代码分析
前言:本文详细条例STM32 103定时器的设定 1 定时器简介 中等容量的STM32F103xx增强型系列产品包含1个高级控制定时器.3个普通定时器,以及2个看门 狗定时器和1个系统嘀嗒定时器. 下 ...
- STM32F103高级定时器死区时间计算
官方数据手册的说明不容易看懂,举的例子与我的应用场合也不一致,我使用的是72MHz的晶振,讲一讲我的死区时间是怎么算出来的. DT死区时间: TDTS为系统时钟周期时长: TDTG为系统周期时长乘以倍 ...
- STM32F103高级定时器死区时间的计算
看了一些网上讲死区时间计算的教程,觉得讲述的不是很清楚,所以在此用我自己理解的方式讲述一遍,如有错误,请读者赐教. 死区时间的设置:由寄存器"TIM1和TIM8刹车和死区寄存器TIMX_BD ...
最新文章
- iOS8.0 之后指纹解锁
- vue脚手架项目技术集合
- 1.4 matlab数值数据的类型分类
- ps -aux 和ps -elf 区别(查看进程)
- 黑龙江大学计算机调剂信息,黑龙江大学各学院2019考研调剂信息汇总(4月1日)
- 病毒侵袭持续中(HDU-3065)
- The Rise of Worse Is Better 论文-学习笔记
- Python3,10行代码,给pdf文件去水印,再也不用花费冤枉钱了。
- QT从字体名获取字库文件路径(从宋体获取到simsun.ttc)
- Ant Design Vue 菜单刷新后保持菜单选中/点击菜单,收起其他展开的所有菜单,保持菜单聚焦简洁
- UWP应用安装提示证书问题的解决办法
- linux mint借用deepin-wine安装QQ/微信
- web程序中的用户注册
- 环境诉讼与当事人适格
- OpenWRT 学习笔记 -- 用户自定义添加app的开机自启动
- 分销商城系统开发应用概述详解
- NSDate-日期类nbsp;OC——第七天(1)
- 微信小程序全栈开发实践 第二章 微信小程序组件介绍及使用 -- 2.9 页面链接组件,如何自定义一个导航栏?
- 学术期刊的概念、分类,计算机类主要期刊索引和机构
- 计算机表示的数据分类,数据表示与数据类型
热门文章
- php ora-12154,ORA-12154 和 TNS-03505 监听错误的解决方法
- 无源波分和彩光模块_纯无源粗波分复用器(CWDM)部署4/5G网络,节省光缆资源...
- 解决numpy报错UFuncTypeError: Cannot cast ufunc ‘add‘ output from dtype(‘x‘) to dtype(‘x‘)
- 【前端必备】七、页面性能优化
- 观察者模式在android网络监控下的运用
- [洛谷P1342]请柬
- 并发编程实战——锁分段
- 工作流的ReplicatorActivity
- DMA流程简介--CPU/内存/网卡之间的交互
- linux之EXT2文件系统--理解block/block group/索引结点inode/索引位图