CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!

Timer

Timer的示例工程实现了以Timer的中断方式定时打印程序中相关信息。

Timer示例的源代码和工程文件位于SDK_Folder\projects\peripheral\timer\timer,其中工程文件在文件夹Keil_5下。

代码理解

示例工程流程图如图 40所示:

图 40 Timer工程流程图
  1. 配置Timer模块。
    g_tim0_handle.p_instance = TIMER0;
    g_tim0_handle.init.auto_reload = SystemCoreClock - 1;
    hal_timer_base_init(&g_tim0_handle);
    
    g_tim1_handle.p_instance = TIMER1;
    g_tim1_handle.init.auto_reload = SystemCoreClock / 100 - 1;
    hal_timer_base_init(&g_tim1_handle);
    

    auto_reload:自动重载值,TIMER0选择1s加载一次,TIMER1选择10 ms加载一次。

  2. 调用hal_timer_base_start_it()启用中断方式计时,auto_reload定时时间到时通过接口hal_timer_period_elapsed_callback()返回。代码如下:
    void hal_timer_period_elapsed_callback(timer_handle_t *htim)
    {
        if (htim->p_instance == TIMER0)
        {
            printf("\r\nThis is %dth call TIMER0.\r\n", g_tim0_cnt++);
        }
        else
        {
            g_tim1_cnt++;
        }
    }
    
    hal_timer_base_start_it(&g_tim1_handle);
    hal_timer_base_start_it(&g_tim0_handle);
    
  3. 调用hal_timer_base_stop_it()结束中断方式计时。代码如下:
    hal_timer_base_stop_it(&g_tim1_handle);
    hal_timer_base_stop_it(&g_tim0_handle);
    

测试验证

  1. 用GProgrammer下载timer.bin至开发板。
  2. 将开发板串口连接至PC端,打开并配置GRUart。
  3. 在GRUart窗口中程序每秒打印一次调试信息,打印10次后程序运行结束。

扫描关注

打开微信,使用“扫一扫”即可关注。