#include "DrvGPIO.h"
#include "DrvSYS.h"
#include "DrvPWM.h"
S_DRVPWM_TIME_DATA_T spt;
void Init_System()
{
DrvGPIO_Open(E_PORT2,E_PIN0,E_IO_OUTPUT);
/*-------------------------------------------------------------*/
spt.u8Mode=1; // 自动装载模式
spt.u8HighPulseRatio=50; //占空比取值0到100
spt.i32Inverter=1; //反转输出开启
spt.u32Frequency=8000; //设定平率为8000Hz
spt.u8ClockSelector=0; //
spt.u8PreScale=0;
spt.u32Duty=0; //捕捉定时用的计数值
/*----------------------------------------------------------------*/
DrvPWM_SetTimerClk (DRVPWM_TIMER0, &spt); //初始化TIMER0时钟
DrvPWM_SetTimerIO(DRVPWM_TIMER0,1); //使能IO输出
DrvPWM_Enable(DRVPWM_TIMER0,1); //使能PWM0让它工作
}
int main(void)
{
DrvGPIO_InitFunction(E_FUNC_PWM01); // 设置GPIO口的PWM01功能
DrvPWM_SelectClockSource (DRVPWM_TIMER0, DRVPWM_EXT_12M );
//这个函数用于选择PWM0与PWM1,PWM2与PWM3,PWM4与PWM5,PWM6与
//PWM7的时钟源。
DrvPWM_Open ( );// 使能PWM时钟并且复位PWM。
Init_System();
DrvGPIO_Open(E_PORT4, E_PIN3, E_IO_OUTPUT);
SysTick_Config(11991096);
while(1)
{
}
}
void SysTick_Handler() //系统滴答时钟中断函数,基本一秒一次
{
_PORT_DOUT(4,3)=!_PORT_DOUT(4,3); //LED灯闪烁指示
spt.u8HighPulseRatio=spt.u8HighPulseRatio+1;
if(spt.u8HighPulseRatio>=100)spt.u8HighPulseRatio=1; //调节占空比,1秒一次+1
DrvPWM_SetTimerClk (DRVPWM_TIMER0, &spt); //初始化TIMER0时钟
}