STM32f767之通用定时器

一,通用定时器基本介绍

 

 

二,配置相关项

1,时钟源。       

 
 一般我们选择内部时钟,TIM3通过APB1得到。

2,主从模式和触发源。

        用到的比较少,暂时不考虑,选disable。

3,输出通道。

              如果需要输入捕获或PWM输出等功能,映射到GPIO引脚,开启相应功能,后面还有一些参数设置。我这里只做内部定时用,所以先禁止。

        

  

三,参数设置,"Parameter Settings"。

使能内部时钟之后的参数设置

Prtscaler (定时器分频系数)  : 7199  (将定时器时钟分频,做计数的频率)

Counter Mode(计数模式)    Up(向上计数模式)                    

Counter Period(自动重装载值) :    4999     (到达此值,重新计数)

CKD(时钟分频因子) :       No Division 不分频 

选项:  可以选择二分频和四分频                         

auto-reload-preload(自动重装载)  :    Enable 使能

TRGO Parameters    触发输出 (TRGO)               不使能    与本节无关,之后做详细介绍 

TRGO:    定时器的触发信号输出  在定时器的定时时间到达的时候输出一个信号(如:定时器更新产生TRGO信号来触发ADC的同步转换,) 

 参考来源:

(2条消息) STM32cubeIDE学习汇总(三)----利用定时器实现定时取反LED 控制亮灭_辽G.默语的博客-CSDN博客_cubeide 定时器

 

使能中断

三,应用实例

          定时500ms,触发中断,重新计数

1,确定定时器的时钟频率

2,根据公式求计时时间。

arr 为自动重装载值  

psc为定时器分频系数

 

 Tout = (4999+1)*(4788+1)/(48000000)  =  0.5     单位 s

四,程序

1,设置好以后,自动生成初始化代码MX_TIM3_Init()和中断void TIM3_IRQHandler(void)函数

位置分别如下

2, 在main.c中,添加中断调用函数

//定时�?????3中断服务函数调用
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if(htim==(&htim3))
    {
        timeout++;
        LED0_Toggle;
    }
}

3,使能定时器中断

在main.c中添加,注意添加的位置,在用户区添加,不然会覆盖掉

HAL_TIM_Base_Start_IT(&htim3); //使能定时器3和定时器3更新中断:TIM_IT_UPDATE

 4,使用,进行计时

        __HAL_TIM_SET_COUNTER(&htim3,0);//重设TIM3定时器的计数器�??
		timeout=0;		
		delay_ms(100);
		time=__HAL_TIM_GET_COUNTER(&htim3)+(uint32_t)timeout*50000;//计算�????用时�????
		printf("time = %0.3fms\r\n",((float)time*10)/1000);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值