STM32F103系列+标准库定时器+HAL库函数普通定时器使用

目录

1.定时器有很多类型:

2.STM32Cubemax配置

3.代码部分

4.定时器计算时间的具体步骤和原理

——题外知识——


1.定时器有很多类型:

通用定时器:TIM2(32位)、TIM3(16位)、TIM4(16位)、TIM5(32位)——常用于输入捕获、输出比较、PWM 生成等。

基本定时器:TIM6、TIM7——用于简单的任务,如基本时间基准、DAC 触发等。

高级控制定时器:TIM1、TIM8。——具有高级控制功能,适用于电机控制、PWM(脉宽调制)等复杂应用。

独立看门狗——独立于主时钟运行,通常用于系统恢复功能,防止系统死锁。

窗口看门狗——在特定时间窗口内喂狗,提供更高系统安全性。如果在窗口外喂狗,系统会复位。

实时时钟——RTC模块适用于需要长期时间跟踪的应用,如日历和时钟应用。

系统定时器——Cortex-M3 内核自带,用于产生系统时基,通常用于操作系统的节拍定时器。

——使用的芯片:STM32F103ZET6型号。
———————————————————————————————————————————

2.STM32Cubemax配置

——STM32F103系列配置时钟管脚

——需要注意的是,下载代码需要配置管脚,如果没有配置,需要手动改变BOOT0管脚的电平,才能下载代码。

——配置时钟树,配置最高时钟树主频72MHZ。——后面计算定时器的时钟可以用到。

——配置定时器,这里以通用定时器3为例子。

——打开中断

——命名项目——

——最后生成工程

3.代码部分

——HAL库部分

//main.c文件里面,主函数while之前的初始化加入语句
__HAL_TIM_CLEAR_IT(&htim3, TIM_IT_UPDATE);	//清空寄存器


//tim.c文件里面
uint32_t timer_ctr=0;
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	 if(htim->Instance == TIM3)//确定是定时器三中断,1秒
	{ 
     clear_time(); 
	}
}

void clear_time(void)//传输完成之后,
{
	timer_ctr++;//定时器定时一秒
	if(timer_ctr%10==9)//定时器定时10秒,之后如果超过10秒,停止加热
	{
//		relay_on(MINI_XB);
//        relay_on(OFF_REI);//大约9秒的样子做什么事情,功能部分;
		timer_ctr=0;
	}
}

标准库函数——定时器3定时代码部分。

——主函数需要增加的功能——定时器的配置

4.定时器计算时间的具体步骤和原理

——第一,我们应该知道时钟挂载的总线是哪一根,这个具体可以在芯片的参考手册上找

例如:——看挂载的总线时钟是多少频率的——TIM3挂载时钟总线是在APB1上。

——第二,看分到总线上的时钟是多少频率的时钟

标准库一般看代码。——例如——

系统时钟——72MHZ。

总线分频是2分频,因此AP1总线时钟是36MHZ。

——第三,要确定时钟的频率是多少,这个需要查看时钟的分频系数。因此时钟频率等于36MHZ/360=0.1MHZ。

——第四,时钟定时时间怎么计算

1.计算定时器的时钟频率,以上述的例子为例;

定时器的时钟频率是=(36*10^6)/(360-1+1)=100000HZ。

2.计算定时器的每个计数周期的时间

Ttimer=1/定时器的时钟频率=1/100000=0.00001秒。

3.计算定时器的溢出时间

Tover=Ttimer*(重载值+1)=0.00001秒*(99+1)=0.001秒=1ms。

——第五,定时器每1ms会产生一次中断。

计算过程知道了,现在我们来看代码HAL配置部分的时钟如何查看系统和总线时钟频率。

——系统时钟的计算

——总线时钟分频——APB1总线分频是2分频。——因此总线时钟是36MHZ。——但是APB1的定时器时钟是72MHZ,时钟树到定时器的时钟有固定2倍频。

——题外知识——

一般参考手册的总线架构上会出现外设挂载在哪个时钟总线上面。

——参考手册上可以看到时钟树的描述。若APB1总线时钟最大频率是36MHZ。时钟总线APB1的定时器是72MHZ。

  • 17
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值