【STM32CubeMx你不知道的那些事】第五章:定时器中断配置

这一章讲的是STM32F103C8T6定时器配置,定时器配置主要要弄懂的是系统主频多少、你分频多少、你需要定时多长时间。

我们来做一个简单的计算。比如说系统的主频是72M,我们要想得到一个定时时间1S钟的定时器,我们可以通过修改分频系数和计数值来确定。这里我们分频系数设置为(7200-1)这里减1是必须加上的确保计数精确,这样得到分频时钟是10K。我们将计数值设置为10000(10k)这样就能配置成功一个1S钟的定时器。

一、准备工作

1、使用第一章配置好的文件,这里不多说了。大家也可以用自己配置好的工程文件。

2、准备一块stm32f103c8t6最小系统核心板。(杜邦线若干)

二、具体操作

1、在Pinout菜单栏下,定时器的选择与配置。配置如图

这里选择的是TIM1定时器,时钟源选择的是内部时钟。

2、在Clock Configuration菜单栏下,我们要设定外部主时钟,这里第一章说过了我们设定时钟为72M,根据不同芯片可设置不同主频。配置如图

3、在Configuration菜单栏下,点击Control下的TIM1弹出配置界面,配置如图

①点击Parameter Setting菜单栏

②设置分频系数

③设置计数方式为增加计数

④设置计数值为10000

⑤打开自动重载计数值

⑥点击OK

这里注意的是要打开NVIC Setting下的 TIM1的更新中断!

3、生成工程

点击Project菜单栏选择Generate code,工程生成完毕。

4、打开MDK工程,工程里面配置

1)while之前添加定时器中断打开函数

  HAL_TIM_Base_Start_IT(&htim1);

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {

  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */

  }

HAL_TIM_Base_Start_IT(&htim1);

2)在Tim.c添加定时器中断回调函数

unsigned int LED = 0;
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{

	if (htim->Instance == htim1.Instance)
	{
		LED ^= 1;
	}

}

编译下载即可!

5、调试测试

仿真添加监控变量即可看到变量每隔一秒跳转一次。

这样定时器中断配置就完成了!~~~

如有什么不懂联系加QQ群:1063618791欢迎大家学习交流!

QQ:1320300083

发布了7 篇原创文章 · 获赞 2 · 访问量 1146

猜你喜欢

转载自blog.csdn.net/qq_15117167/article/details/104519204