1 #ifndef __SWM320_PWM_H__ 2 #define __SWM320_PWM_H__ 3 4 typedef struct { 5 uint8_t clk_div; //PWM_CLKDIV_1、PWM_CLKDIV_8 6 7 uint8_t mode; //PWM_MODE_INDEP、PWM_MODE_COMPL、PWM_MODE_INDEP_CALIGN、PWM_MODE_COMPL_CALIGN 8 9 uint16_t cycleA; //A路周期 10 uint16_t hdutyA; //A路占空比 11 uint16_t deadzoneA; //A路死区时长,取值0--1023 12 uint8_t initLevelA; //A路初始输出电平,0 低电平 1 高电平 13 14 uint16_t cycleB; //B路周期 15 uint16_t hdutyB; //B路占空比 16 uint16_t deadzoneB; //B路死区时长,取值0--1023 17 uint8_t initLevelB; //B路初始输出电平,0 低电平 1 高电平 18 19 uint8_t HEndAIEn; //A路高电平结束中断使能 20 uint8_t NCycleAIEn; //A路新周期开始中断使能 21 uint8_t HEndBIEn; //B路高电平结束中断使能 22 uint8_t NCycleBIEn; //B路新周期开始中断使能 23 } PWM_InitStructure; 24 25 #define PWM_CLKDIV_1 0 26 #define PWM_CLKDIV_8 1 27 28 #define PWM_MODE_INDEP 0 //A路和B路为两路独立输出 29 #define PWM_MODE_COMPL 1 //A路和B路为一路互补输出 30 #define PWM_MODE_INDEP_CALIGN 3 //A路和B路为两路独立输出,中心对齐 31 #define PWM_MODE_COMPL_CALIGN 4 //A路和B路为一路互补输出,中心对齐 32 33 #define PWM_CH_A 0 34 #define PWM_CH_B 1 35 36 37 void PWM_Init(PWM_TypeDef * PWMx, PWM_InitStructure * initStruct); //PWM初始化 38 void PWM_Start(PWM_TypeDef * PWMx, uint32_t chA, uint32_t chB); //启动PWM,开始PWM输出 39 void PWM_Stop(PWM_TypeDef * PWMx, uint32_t chA, uint32_t chB); //关闭PWM,停止PWM输出 40 41 void PWM_SetCycle(PWM_TypeDef * PWMx, uint32_t chn, uint16_t cycle); //设置周期 42 uint16_t PWM_GetCycle(PWM_TypeDef * PWMx, uint32_t chn); //获取周期 43 void PWM_SetHDuty(PWM_TypeDef * PWMx, uint32_t chn, uint16_t hduty); //设置高电平时长 44 uint16_t PWM_GetHDuty(PWM_TypeDef * PWMx, uint32_t chn); //获取高电平时长 45 void PWM_SetDeadzone(PWM_TypeDef * PWMx, uint32_t chn, uint8_t deadzone); //设置死区时长 46 uint8_t PWM_GetDeadzone(PWM_TypeDef * PWMx, uint32_t chn); //获取死区时长 47 48 void PWM_IntNCycleEn(PWM_TypeDef * PWMx, uint32_t chn); //新周期开始中断使能 49 void PWM_IntNCycleDis(PWM_TypeDef * PWMx, uint32_t chn); //新周期开始中断禁能 50 void PWM_IntNCycleClr(PWM_TypeDef * PWMx, uint32_t chn); //新周期开始中断标志清除 51 uint32_t PWM_IntNCycleStat(PWM_TypeDef * PWMx, uint32_t chn); //新周期开始中断是否发生 52 void PWM_IntHEndEn(PWM_TypeDef * PWMx, uint32_t chn); //高电平结束中断使能 53 void PWM_IntHEndDis(PWM_TypeDef * PWMx, uint32_t chn); //高电平结束中断禁能 54 void PWM_IntHEndClr(PWM_TypeDef * PWMx, uint32_t chn); //高电平结束中断标志清除 55 uint32_t PWM_IntHEndStat(PWM_TypeDef * PWMx, uint32_t chn); //高电平结束中断是否发生 56 57 58 #endif //__SWM320_PWM_H__ 59