lising 发表于 2019-1-8 19:25

【 ST NUCLEO-G071RB测评】TIM-Basic timers

<div class='showpostmsg'>      本次实验使用的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初始化函数、中断服务函数以及中断回调函数。函数内的注释可能有误,请朋友们指教。

/* TIM6 init function */
void MX_TIM6_Init(void)
{
TIM_MasterConfigTypeDef sMasterConfig = {0};
        /*
        内部时钟16MHz,经Prescaler = (1600-1)分频:16MHz/1600=10KHz
        TIM3计数频率CK_CN=10KHz
        TIM3最小计时间=    (1+1)*1/10KHz=0.0002s
        TIM3最大计时间=(65535+1)*1/10KHz=6.5536s
        自动重装载值Period = 4999,
        TIM3计数溢出时间=(4999+1)*1/10KHz=0.5s=500ms
        */
htim6.Instance = TIM6;
htim6.Init.Prescaler = (1600-1);
htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
htim6.Init.Period = 4999;
htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
{
    Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK)
{
    Error_Handler();
}
        /*此处添加了TIM6更新中断并使能TIM6*/
        if (HAL_TIM_Base_Start_IT(&htim6)!= HAL_OK)
{
    Error_Handler();
}
}

void TIM6_DAC_LPTIM1_IRQHandler(void)
{
/* USER CODE BEGIN TIM6_DAC_LPTIM1_IRQn 0 */

/* USER CODE END TIM6_DAC_LPTIM1_IRQn 0 */
HAL_TIM_IRQHandler(&htim6);
/* USER CODE BEGIN TIM6_DAC_LPTIM1_IRQn 1 */

/* USER CODE END TIM6_DAC_LPTIM1_IRQn 1 */
}

/* USER CODE BEGIN 1 */
/*TIM6中断回调函数*/
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
HAL_GPIO_TogglePin(LD4_GPIO_Port, LD4_Pin);//中断产生LD4翻转
}
/* USER CODE END 1 */


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


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

附:TIM6工程文件


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


</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

hujj 发表于 2019-1-12 11:17

下载学习,谢谢楼主分享!

lising 发表于 2019-1-12 12:17

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

相互学习多多交流。

网络孤客 发表于 2019-11-3 11:06

<p><span style="background-color:#ffffff; color:#333333">谢谢楼主分享,学习一下。</span></p>
页: [1]
查看完整版本: 【 ST NUCLEO-G071RB测评】TIM-Basic timers