概述
STM32C8T6单片机tim3定时器配置
- 一、TIM3配置代码
- 二、定时器时间计算
- 2.中断服务程序示例
- 有几点
一、TIM3配置代码
void TIM3_Int_Init(u16 arr,u16 psc) //运行模式中断
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能
TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 计数到5000为500ms
TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 10Khz的计数频率
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //先占优先级0级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //从优先级3级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器
// TIM_Cmd(TIM3, ENABLE); //使能TIMx外设
}
TIM_Cmd(TIM3, ENABLE); //使能TIMx外设
该代码作为定时器的开关使能,可以放在初始化函数中,也可放在主函数中灵活运用。
二、定时器时间计算
定时时间计算公式
定时时间(单位us)=((Prescaler_psc+1)*(Period_arr+1))/TimeClockFren(即定时器1的输入时钟频率(单位MHZ))
C8t6 TIM234 APB2 36MHZ
TIM1 APB1 72MHZ
函数使用
TIM3_Int_Init(99,7199);//20ms定时时间 (arr,psc),计数到99即为2s
2.中断服务程序示例
//定时器2中断服务程序
void TIM2_IRQHandler(void) //TIM3中断
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源
{
//用户代码
TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx的中断待处理位:TIM 中断源
}
}
有几点
①定时器初始化函数放在所有初始化函数之后。
②单片机数据手册查询数据手册
https://www.findic.com/jiage/stm32f103zet6-KL7VVGq1Q.html
③
代码里的预分频器设置为0,应该频率为原时钟频率的两倍也就是72Mhz
TIM3_Int_Init(99,7199);//定时时间为(99+1)*(7199+1)/(36*2)=10000us=10ms=0.01s(arr,psc),计数到99即为0.01*99约等于1s,与实际测试结果符合
TIM_Cmd(TIM3, ENABLE); //使能TIMx外设
//5Khz的计数频率,每计一个数表示过了 0.0002秒,重装值9999,
//
//定时时间计算公式
//定时时间(单位us)=((Prescaler_psc+1)*(Period_arr+1))/TimeClockFren定时器1的输入时钟频率(单位MHZ)
//C8t6 TIM234 APB2 36MHZ
// TIM1 APB1 72MHZ
④(此点转载)
Keil工程菜单提供了配置主频的选项,这个参数只用于软件仿真的,对于硬件仿真或者直接把程序下载到板子里是没有影响的。
Xtal 后面的数值是晶振频率值,默认值是所选目标 CPU 的最高可用频率值 。该数值与最终产生的目标代码无关,仅用于软件模拟调试时显示程序执行时间。正确设置该数值可使显示时间与实际所用时间一致,一般将其设置成与你的硬件所用晶振频率相同。
————————————————
版权声明:本文为CSDN博主「Hynson」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Bluechalk/article/details/84498291
最后
以上就是激动火龙果为你收集整理的单片机学习笔记——STM32C8T6单片机tim3定时器配置一、TIM3配置代码二、定时器时间计算有几点的全部内容,希望文章能够帮你解决单片机学习笔记——STM32C8T6单片机tim3定时器配置一、TIM3配置代码二、定时器时间计算有几点所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复