欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > stm32基本定时器

stm32基本定时器

2024/10/24 9:25:24 来源:https://blog.csdn.net/m0_46145044/article/details/140292283  浏览:    关键词:stm32基本定时器

Driver_TIM6.c

需要注意立即进入中断问题,原因是预分频寄存器并没有更新预分频系数。

#include "Driver_TIM6.h"
#include "Delay.h"
/*** @description: 给定时器6进行初始化* @return {*}*/
void Driver_TIM6_Init(void)
{/* 1. 给定时器6开启时钟*/RCC->APB1ENR |= RCC_APB1ENR_TIM6EN;/* 2. 设置预分频值: 分频值7199表示7200分频。分频后频率10K,周期100us */TIM6->PSC = 7200 - 1;/*3. 设置自动重转载寄存器的值,决定中断发生的频率。假设设置为9999,表示计数器计数10000次发生一次中断。计数一次100us,10000次1000000us,正好1s*/TIM6->ARR = 10000 - 1;/* 为了避免一启动立即进入更新中断,可以先产生一个更新事件 预分频寄存器和重装载寄存器都有影子寄存器预分频寄存器的影子寄存器和重装载寄存器需要CNT溢出一次才能更新*/TIM6->CR1 |= TIM_CR1_URS;//产生一个更新事件 TIM6->EGR |= TIM_EGR_UG; /* 预分频寄存器和重装载寄存器的值更新到影子寄存器 */// TIM6->SR &= ~TIM_SR_UIF;/* 4. 使能更新中断 */TIM6->DIER |= TIM_DIER_UIE;/* NVIC配置 *//* 5. 设置中断优先级分组 */NVIC_SetPriorityGrouping(3);/* 6. 设置中断优先级 */NVIC_SetPriority(TIM6_IRQn, 1);/* 7. 使能定时器6的中断 */NVIC_EnableIRQ(TIM6_IRQn);/* 8. 使能计数器 */TIM6->CR1 |= TIM_CR1_CEN;
}/*** @description: TIM6的中断服务函数* @return {*}*/
void TIM6_IRQHandler(void)
{TIM6->SR &= ~TIM_SR_UIF;Drviver_LED_Toggle(LED_1);printf("1\r\n");
}

Driver_TIM6.h

#ifndef __DRIVER_TIM6_H
#define __DRIVER_TIM6_H#include "stm32f10x.h"
#include "Driver_LED.h"
#include "Driver_USART.h"void Driver_TIM6_Init(void);#endif

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com