2763|3

821

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

【 ST NUCLEO-G071RB测评】TIM-Basic timers [复制链接]

      本次实验使用的NUCLEO-G071RB开发板由https://www.stmcu.com.cn/index.p ... /261/layout/product提供,更多相关资讯请进入查询。本次实验是利用NUCLEO-G071RB开发板的TIM6模块产生定时中断用以控制LD4的亮灭。并通过逻辑分析仪测试中断溢出时间,借此检验内部时钟精度。
一、实验资源
1、NUCLEO-G071RB开发板;
2、Keil v5.25.2.0;
3、STM32CubeMX v5.0.1;
4、逻辑分析仪;

二、实验过程
1、资源简介。定时器在微控制器中是一项非常关键也是非常重要的资源在STM32G071RBT6的定时器资源异常丰富,从下面的图中可以看到这些定时器。这其中包括了:
1个高级定时器:TIM1;
6个通用定时器:TIM2、TIM3、TIM14、TIM15、TIM16、TIM17;
2个基本定时器:TIM6、TIM7;
2个低功耗定时器:LPTIM1、LPTIM2;
2个看门狗定时器:WWDG、IWDG;
1个系统定时器:SysTick;
以上共计6个类别14个定时器,每个类别所具有的定时器数量不同功能有差异,应用范围也不尽相同,但是最基本的功能还是定时。基本定时器TIM6及TIM7在应用中相对比较简单,本次实验就是利用基本定时器中的TIM6产生定时中断控制LD4进行翻转。下面截图是官方手册中的描述:


这是一个独立的带有预分频器的16位可自动重装载向上计数器,可用于计时及DAC驱动,计数溢出后触发中断及DMA请求。

2、程序实现。下面的截图就是利用STM32CubeMX进行工程配置的状况,时钟直接选用HSI内部时钟16MHz,其它均按默认值,在工程中再行修改:


下面分别是TIM6初始化函数、中断服务函数以及中断回调函数。函数内的注释可能有误,请朋友们指教。

  1. /* TIM6 init function */
  2. void MX_TIM6_Init(void)
  3. {
  4.   TIM_MasterConfigTypeDef sMasterConfig = {0};
  5.         /*
  6.         内部时钟16MHz,经Prescaler = (1600-1)分频:16MHz/1600=10KHz
  7.         TIM3计数频率CK_CN=10KHz
  8.         TIM3最小计时间=    (1+1)*1/10KHz=0.0002s
  9.         TIM3最大计时间=(65535+1)*1/10KHz=6.5536s
  10.         自动重装载值Period = 4999,
  11.         TIM3计数溢出时间=(4999+1)*1/10KHz=0.5s=500ms
  12.         */
  13.   htim6.Instance = TIM6;
  14.   htim6.Init.Prescaler = (1600-1);
  15.   htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
  16.   htim6.Init.Period = 4999;
  17.   htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  18.   if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
  19.   {
  20.     Error_Handler();
  21.   }
  22.   sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  23.   sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  24.   if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK)
  25.   {
  26.     Error_Handler();
  27.   }
  28.         /*此处添加了TIM6更新中断并使能TIM6*/
  29.         if (HAL_TIM_Base_Start_IT(&htim6)!= HAL_OK)
  30.   {
  31.     Error_Handler();
  32.   }
  33. }
复制代码

  1. void TIM6_DAC_LPTIM1_IRQHandler(void)
  2. {
  3.   /* USER CODE BEGIN TIM6_DAC_LPTIM1_IRQn 0 */

  4.   /* USER CODE END TIM6_DAC_LPTIM1_IRQn 0 */
  5.   HAL_TIM_IRQHandler(&htim6);
  6.   /* USER CODE BEGIN TIM6_DAC_LPTIM1_IRQn 1 */

  7.   /* USER CODE END TIM6_DAC_LPTIM1_IRQn 1 */
  8. }
复制代码

  1. /* USER CODE BEGIN 1 */
  2. /*TIM6中断回调函数*/
  3. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
  4. {
  5.   HAL_GPIO_TogglePin(LD4_GPIO_Port, LD4_Pin);//中断产生LD4翻转
  6. }
  7. /* USER CODE END 1 */
复制代码



三、实验结果
      LD4呈亮、灭闪烁状态,将逻辑分析仪接入后测试图如下:程序中设计TIM6溢出中断时间为500ms,经逻辑分析仪实测实际时间为498ms。内部时钟精度还是很不错的。


四、实验总结
      通过此次基本定时器TIM6的中断溢出实验加深了对定时器概念的理解,有一定的收获。对于内部时钟的精度虽说主观上感觉不错,但因为没有相关规范的实验环境及相应的设备,无法做出定量的测试,只是通过这个简单的实验做个一般性测试罢了。欢迎朋友们共同交流。

附:TIM6工程文件 TIM6.rar (5.24 MB, 下载次数: 12)


此内容由EEWORLD论坛网友lising原创,如需转载或用于商业用途需征得作者同意并注明出处


此帖出自stm32/stm8论坛

最新回复

谢谢楼主分享,学习一下。   详情 回复 发表于 2019-11-3 11:06
点赞 关注(1)
 

回复
举报

932

帖子

3

TA的资源

纯净的硅(中级)

沙发
 
下载学习,谢谢楼主分享!
此帖出自stm32/stm8论坛

点评

相互学习多多交流。  详情 回复 发表于 2019-1-12 12:17
 
 

回复

821

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
hujj 发表于 2019-1-12 11:17
下载学习,谢谢楼主分享!

相互学习多多交流。
此帖出自stm32/stm8论坛
 
 

回复

39

帖子

1

TA的资源

一粒金砂(中级)

4
 

谢谢楼主分享,学习一下。

此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表