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 开发板的跳线,编译、下载代码后:
用示波器或者逻辑分析仪抓取P1_2波形,确认是否是点空比为75%,周期为49.152ms的pwm波形
改变
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