PWM 使用指南
============

概述
-----------------
BK7238有六个32位PWM通道,标记为PWM0~5(支持定时器模式)。每个PWM通道有三个模式:定时器模式、PWM模式和捕获模式。
每个通道的每个模式都用32位计数进行多路复用。


PWM模块的主要功能如下所示:


-	计数器在一个方向上增加,并在溢出到最大值时自动从0开始继续计数

-	每个通道可以单独启用,每个通道的模式可以单独配置。

-	在捕获模式下,能够在两个上升沿、两个下降沿或双沿之间连续计数

-	每个PWM通道的可配置PWM周期和占空比

-	可以在定时器模式下读取实时计数值。


PWM模式
-----------------

::

	//开启 PWM
	channel=1; 	 	 //pwm1
	frequency=(260000/1000)*2000;  //2 KHz   

	duty_cycle1= frequency/4;  //高电平占空比 1/4
	duty_cycle12= 0;
	duty_cycle13= 0;
	bk_pwm_initialize(channel, (260000/1000)*frequency, duty_cycle1,duty_cycle12,duty_cycle13);
	bk_pwm_start(channel1);		

	//更新pwm 参数
	frequency=(260000/1000)*1000;  //1 KHz   
	duty_cycle1= frequency/2;  //高电平占空比 1/2
	bk_pwm_update_param(channel, frequency, duty_cycle1);	


捕获模式
-----------------

::

	#define PWM_CAP_POS_MODE            (0x04)  // Capture (pos -> pos)
	#define PWM_CAP_NEG_MODE            (0x05)  // Capture (neg -> neg)
	#define PWM_CAP_EDGE_MODE           (0x06)	// Capture (edge -> edge)
	//开启 PWM 捕获
	channel=1; 
	cap_mode=PWM_CAP_POS_MODE;

	bk_pwm_capture_initialize(channel, cap_mode);	
	bk_pwm_start(channel);	

	//读取捕获值
	cap_value = bk_pwm_get_capvalue(channel1);
	bk_printf("pwm : %d cap_value=%x \r\n", channel1, cap_value);