STM32
登录
直播中
南中南
8年用户
937经验值
擅长:光电显示
私信
关注
[问答]
STM32基本定时器TIM6及TIM7的功能是什么?
开启该帖子的消息推送
STM32
定时器中断
STM32
基本定时器
ti
M6及TIM7的功能是什么?
回帖
(1)
何柳青
2021-11-24 11:20:53
所用工具:1、芯片:STM32F103ZET6
2、CUBEMX软件
3、MDK-keil软件
定时器简介:STM32F103ZET6 一共有8个定时器,其中TIM1/TIM8为高级定时器,TIM6/TIM7为基本定时器,TIM2,TIM3,TIM4,TIM5为通用定时器。
基本定时器TIM6及TIM7功能:
通用定时器TIM2~TIM5功能:
高级定时器TIM1/TIM8功能:
本次学习利用基本定时器TIM6的定时技术功能,每隔1秒钟翻转GPIO指示灯。
一、设置RCC
设置高速外部时钟HSE作为时钟源。
选择Crystal/Ceramic Resonator 外部晶体/陶瓷晶振器作为时钟源。
HSE两个时钟源选项说明如下:
BYPASS Clock Source(旁路时钟源)
Crystal/Ceramic Resonator(晶体/陶瓷晶振)
所谓HSE旁路时钟源,是指无需使用外部晶体时所需的芯片内部时钟驱动组件,直接从外界导入时钟信号。犹如芯片内部的驱动组件被旁路了。
外部晶体/陶瓷谐振器(HSE晶体)模式该时钟源是由外部无源晶体与MCU内部时钟驱动电路共同配合形成,有一定的启动时间,精度较高。
二、设置时钟分频
1、选择外部时钟HSE 8MHz
2、系统时钟来源选择PLLCLK
3、设置HCLK为72MHz
三、定时器设置
1、选择定时器TIM6,
2、定时器使能,勾选Activated
3、设置定时器参数 ①、设置分频系数7200
②、选择向上计数模式 up
③、设置重装载值 5000
④、自动重装载使能
定时器溢出时间计算:溢出时间=重装载值×分频系数/72M
例如:分频系数7200,定时器时钟频率为72M/7200=10000Hz,重转载值5000,那么溢出时间为5000/10000=0.5s
四、使能定时器中断功能
1、选择中断功能设置
2、勾选使能TIM6定时器中断
五、配置相应的GPIO口
1、设置PB5及PE5 初始化电平高,推挽输出,无上/下拉,输出频率低。
六、配置项目文件
填写工程名称、存放路径及IDE工具选择MDK等
七、工程函数
在HAL库中,定时器产生中断时,首先进入stm32f1xx.it.c文件中的TIM6中断函数:
在TIM6-IRQHandler函数中又调用了 HAL_TIM_IRQHandler()函数,进入HAL_TIM_IRQHandler()函数的定时器更新中断代码中我们看到:
这里判断产生了中断后,清除了中断标志位,又调用了HAL_TIM_PeriodElapsedCallback(htim)函数,最后进入回调函数中,
我们只需要重写回调函数,在回调函数中编写用户代码。
1、在用户变量定义去添加变量i定义,并初始化i=0(此变量定义及初始化不能放在中断回调函数中)。
2、在main函数中添加定时器中断开启函数。
HAL_TIM_Base_Start_IT(&htim6); //开启定时器6中断
3、在用户代码区添加定时器中断回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) //定时器中断回调函数
{
if(htim == &htim6) //确定是定时器6产生的中断
{
i++;
if(i==2)
{
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);
i=0;
}
}
}
所用工具:1、芯片:STM32F103ZET6
2、CUBEMX软件
3、MDK-keil软件
定时器简介:STM32F103ZET6 一共有8个定时器,其中TIM1/TIM8为高级定时器,TIM6/TIM7为基本定时器,TIM2,TIM3,TIM4,TIM5为通用定时器。
基本定时器TIM6及TIM7功能:
通用定时器TIM2~TIM5功能:
高级定时器TIM1/TIM8功能:
本次学习利用基本定时器TIM6的定时技术功能,每隔1秒钟翻转GPIO指示灯。
一、设置RCC
设置高速外部时钟HSE作为时钟源。
选择Crystal/Ceramic Resonator 外部晶体/陶瓷晶振器作为时钟源。
HSE两个时钟源选项说明如下:
BYPASS Clock Source(旁路时钟源)
Crystal/Ceramic Resonator(晶体/陶瓷晶振)
所谓HSE旁路时钟源,是指无需使用外部晶体时所需的芯片内部时钟驱动组件,直接从外界导入时钟信号。犹如芯片内部的驱动组件被旁路了。
外部晶体/陶瓷谐振器(HSE晶体)模式该时钟源是由外部无源晶体与MCU内部时钟驱动电路共同配合形成,有一定的启动时间,精度较高。
二、设置时钟分频
1、选择外部时钟HSE 8MHz
2、系统时钟来源选择PLLCLK
3、设置HCLK为72MHz
三、定时器设置
1、选择定时器TIM6,
2、定时器使能,勾选Activated
3、设置定时器参数 ①、设置分频系数7200
②、选择向上计数模式 up
③、设置重装载值 5000
④、自动重装载使能
定时器溢出时间计算:溢出时间=重装载值×分频系数/72M
例如:分频系数7200,定时器时钟频率为72M/7200=10000Hz,重转载值5000,那么溢出时间为5000/10000=0.5s
四、使能定时器中断功能
1、选择中断功能设置
2、勾选使能TIM6定时器中断
五、配置相应的GPIO口
1、设置PB5及PE5 初始化电平高,推挽输出,无上/下拉,输出频率低。
六、配置项目文件
填写工程名称、存放路径及IDE工具选择MDK等
七、工程函数
在HAL库中,定时器产生中断时,首先进入stm32f1xx.it.c文件中的TIM6中断函数:
在TIM6-IRQHandler函数中又调用了 HAL_TIM_IRQHandler()函数,进入HAL_TIM_IRQHandler()函数的定时器更新中断代码中我们看到:
这里判断产生了中断后,清除了中断标志位,又调用了HAL_TIM_PeriodElapsedCallback(htim)函数,最后进入回调函数中,
我们只需要重写回调函数,在回调函数中编写用户代码。
1、在用户变量定义去添加变量i定义,并初始化i=0(此变量定义及初始化不能放在中断回调函数中)。
2、在main函数中添加定时器中断开启函数。
HAL_TIM_Base_Start_IT(&htim6); //开启定时器6中断
3、在用户代码区添加定时器中断回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) //定时器中断回调函数
{
if(htim == &htim6) //确定是定时器6产生的中断
{
i++;
if(i==2)
{
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);
i=0;
}
}
}
举报
更多回帖
rotate(-90deg);
回复
相关问答
STM32
定时器中断
在
STM32
F4中
TIM6
和
TIM7
为基本
定时器
具有哪些特性?
2021-11-24
1408
TIM6
和
TIM7
产生PWM波是不是这些都可以用?
2020-08-26
1615
请问RT-Thread 的
TIM6
,
TIM7
,
TIM
8无法使用
2022-03-19
5681
STM32
CubeMX基础
定时器
TIM6
有何
功能
呢
2021-11-24
800
STM32
高级
定时器
、通用
定时器
和基本
定时器
有何区别呢
2021-11-24
2232
STM32
F1的基本
定时器
有何
功能
2021-11-24
555
怎样通过编写
TIM7
定时
中断去控制LED灯的亮灭呢
2021-10-25
1828
STM32
的
定时器
(
TIM
)该如何去使用呢
2021-12-13
1414
CH32V307开发环境,调试时外设寄存
器
为什么没有基本
定时器
TIM6
、
7
?
2022-09-16
650
STM32L053R8T6
TR在cubenx中
tim6
无法选择时钟源是为什么?
2023-08-07
143
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分