📄 xspwmdrv.c
字号:
#include "XsPwmDrv.h"
#include "XsClkMgrDrv.h"
#include "XsGpioDrv.h"
void XsPwmDrv_Init(volatile PwmCtrlRegsT* pPwm, PwmDeviceE Device)
{
//set control register initial value
PWM_CTRL(Device) = 36; //use (3.6864MHz/36=0.1024MHz) clock
PWM_PERVAL(Device) = 1023; //period is 10ms
PWM_DUTY(Device) = 0; //initial duty set to 0, PWM output is low
if(Device == PWM0)
{
//set gpio pin direction and alt function
ASSIGN_BIT_VAL(GPIO_GPDR0_ADDR, GXXR_GPIO16_OFS, XS_GPIO_DIR_OUT); // PWM0/GP16 pin as output
GPIO_SET_ALT_FUNC(GPIO_GROUP1, GAFR_AF16_OFS, XS_GPIO_ALT_FUNC_2); // PWM0/GP16
//enable LCD clock
CLKMGR_ENABLE_CLK(CKEN_CK_PWM0_OFS);
}
else if(Device == PWM1)
{
//set gpio pin direction and alt function
ASSIGN_BIT_VAL(GPIO_GPDR0_ADDR, GXXR_GPIO17_OFS, XS_GPIO_DIR_OUT); // PWM1/GP17 pin as output
GPIO_SET_ALT_FUNC(GPIO_GROUP1, GAFR_AF17_OFS, XS_GPIO_ALT_FUNC_2); // PWM1/GP17
//enable LCD clock
CLKMGR_ENABLE_CLK(CKEN_CK_PWM1_OFS);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -