当前文档版本为 v0.3.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

timer_compare例程

1 功能概述

本例程主要演示 EVB timer2 比较模式0的简单例程,本例程以比较通道1为示例,timer2计数器值与通道1比较寄存器CC1(例程中的CC1=0x4000)相等时, P1_2(关联CC1)输出高电平, timer2计数器值(0xFFFF)溢出时,P1_2输出低电平。用示波器或者逻辑分析仪抓取P1_2波形为点空比为75%,周期为49.152ms的pwm波形,其中49.152ms为timer2的溢出周期。

*注:

  • RGB蓝色led对应P1_2

  • 在此示例下RGB蓝色led会出现闪烁属于正常现象

2 环境要求

  • Board: PAN2628B1_EVB

  • 将 J17(P1_2) 开关拔至PWM1侧,将P1_2与RGB蓝色led控制引脚相连

3 编译和烧录

例程位置:pan2628_dk\01_SDK\example_basic\timer\timer_compare例程

打开目录下keil下的timer_compare例程.uvprojx工程,编译整个代码工程。

4 演示说明

根据环境要求一节的介绍,正确连接 EVB 开发板的跳线,编译、下载代码后:

  1. 用示波器或者逻辑分析仪抓取P1_2波形,确认是否是点空比为75%,周期为49.152ms的pwm波形

  2. 改变TIM_CmpInit(TIMER2, TIM_Channel1, TIM_CmpMode0, 0x4000)代码中的0x4000为其它数值,再看看P1_2波形的变化

5 开发说明

通过调用 timer.c中的TIM_TimeBaseInit()、TIM_CmpInit()、TIM_EnableIRQ()、TIM_Cmd()等函数接口来实现timer基础功能配置,详细请查阅代码。

/* timer2 base function initialize */
TIM_TimeBaseInit(TIMER2, TIM2_Mode1_16BitNoReload, TIM_CLK_DIV_12T, 0xA000);

/* timer2 compare function initialize */
TIM_CmpInit(TIMER2, TIM_Channel1, TIM_CmpMode0, 0x4000);

TIM_EnableIRQ(TIMER2);      /**< Enable timer2 interrupt */

TIM_Cmd(TIMER2, ENABLE);    /**< Start timer2 */

6 RAM/Flash资源使用情况

Program Size: data=16.0 xdata=0 const=8 code=1361