这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » STM32L053定时器基本功能

共4条 1/1 1 跳转至

STM32L053定时器基本功能

高工
2015-11-10 01:33:13     打赏

继续利用STM32CUBE这个工具配置并生成工程:

1、找到TIMER2,这里使用的是基本功能,没涉及到比较捕获等功能,所以这里只选择了时钟:

2、选择了时钟,那么看看给TIMER2提供的时钟频率是多少,由下图可知是32MHZ:

3、目标是让定时器每一秒钟触发一次中断,然后向终端打印一句字符串。开始配置分频系数以及周期:

因为要触发中断,所以必须使能中断:

这样基本是就OK了,生成工程后打开。在程序中已经自动添加了TIMER2的初始化函数,这里还需要加一句,那就是启动定时器并且允许中断。

  MX_USART2_UART_Init();
  HAL_TIM_Base_Start_IT(&htim2);

 

现在面临的最后一个问题就是,中断服务函数在哪里...,看下图:

在HAL_TIM_IRQHandler这个函数里有这么一段:

  /* TIM Update event */
  if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET)
  {
    if(__HAL_TIM_GET_ITSTATUS(htim, TIM_IT_UPDATE) !=RESET)
    {
      __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE);
      HAL_TIM_PeriodElapsedCallback(htim);
    }
  }

 

STM32CUBE生成的代码框架已经定好了,在HAL_TIM_IRQHandler里有定时器涉及到的所有中断事件,每一个事件都对应一个回调函数,上面那段就是这次所用到的。继续在这个.c文件中找HAL_TIM_PeriodElapsedCallback();

/**
  * @brief  Period elapsed callback in non blocking mode 
  * @param  htim: pointer to a TIM_HandleTypeDef structure that contains
  *                the configuration information for TIM module.
  * @retval None
  */
__weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  /* NOTE : This function Should not be modified, when the callback is needed,
            the __HAL_TIM_PeriodElapsedCallback could be implemented in the user file
   */
  
}

 

我们只需要重写这个函数就实现了我们想要的中断服务程序了。我在main.c中加了一段:

uint8_t g_flag = 0;

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  /* NOTE : This function Should not be modified, when the callback is needed,
            the __HAL_TIM_PeriodElapsedCallback could be implemented in the user file
   */
	g_flag = 1;
  
}

 由g_flag作为标志来判断是否可以打印字符串:

  while (1)
  {
		if(1 == g_flag)
		{
			user_opt++;
			printf("timer-->%d\n\r",user_opt);
			g_flag = 0;
		}
  }

 

效果如图所示:





关键词: STM32L053     定时器     基本     功能    

院士
2015-11-16 21:59:40     打赏
2楼

我非常觉得ST新的固件库不好用了。

而且是越来越觉得的


专家
2015-11-17 07:29:58     打赏
3楼
进来学习

菜鸟
2015-11-18 14:37:07     打赏
4楼
哈哈,f4上也是,同样被坑了。不如中断里处理干净利索(个人感觉)写的不错,赞一个

共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]