21ic问答首页 - HC32L130F8UA配置PCA成PWM PB1通道3不成功
HC32L130F8UA配置PCA成PWM PB1通道3不成功
qidiao2023-01-03
HC32L130F8UA 脚位32个 PCA配置成PWM 使用PA6通道0配置成功 改成PB1通道3不成功?static void App_GpioInit(void)
{
stc_gpio_cfg_t GpioInitStruct;
DDL_ZERO_STRUCT(GpioInitStruct);
Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
//PB01
GpioInitStruct.enDrv = GpioDrvH;
GpioInitStruct.enDir = GpioDirOut;
Gpio_Init(GpioPortB, GpioPin1, &GpioInitStruct);
Gpio_SetAfMode(GpioPortB, GpioPin1, GpioAf2);////这里是 GpioAf2吗?
}
/**
******************************************************************************
** \brief 配置PCA
**
** \return 无
******************************************************************************/
void App_PcaInit(uint16_t Pca_carr)
{
App_GpioInit();
stc_pcacfg_t PcaInitStruct;
Sysctrl_SetPeripheralGate(SysctrlPeripheralPca, TRUE);
PcaInitStruct.pca_clksrc = PcaPclkdiv2; //pclk/32
PcaInitStruct.pca_cidl = FALSE; //空闲模式IDLE,PCA不停止工作
PcaInitStruct.pca_ecom = PcaEcomEnable; //允许比较器功能
PcaInitStruct.pca_capp = PcaCappDisable; //禁止上升沿捕获
PcaInitStruct.pca_capn = PcaCapnDisable; //禁止下降沿捕获
PcaInitStruct.pca_mat = PcaMatEnable; //允许匹配
PcaInitStruct.pca_tog = PcaTogEnable; //允许翻转
PcaInitStruct.pca_pwm = PcaPwm8bitDisable; //禁止8位pwm
PcaInitStruct.pca_epwm = PcaEpwmEnable; //允许16位pwm
PcaInitStruct.pca_ccap = 10000;
PcaInitStruct.pca_carr = Pca_carr; //占空比
Pca_M3Init(&PcaInitStruct);
///< PCA 开始运行
Pca_StartPca(TRUE);
}
int main(void)
{
.......................................
........................................
while{1}
{
Pca_SetCcap(PcaModule3, per_T);//改变占空比
}
}
各位大佬帮我看看 哪里配置错了 占空比不变化。
{
stc_gpio_cfg_t GpioInitStruct;
DDL_ZERO_STRUCT(GpioInitStruct);
Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
//PB01
GpioInitStruct.enDrv = GpioDrvH;
GpioInitStruct.enDir = GpioDirOut;
Gpio_Init(GpioPortB, GpioPin1, &GpioInitStruct);
Gpio_SetAfMode(GpioPortB, GpioPin1, GpioAf2);////这里是 GpioAf2吗?
}
/**
******************************************************************************
** \brief 配置PCA
**
** \return 无
******************************************************************************/
void App_PcaInit(uint16_t Pca_carr)
{
App_GpioInit();
stc_pcacfg_t PcaInitStruct;
Sysctrl_SetPeripheralGate(SysctrlPeripheralPca, TRUE);
PcaInitStruct.pca_clksrc = PcaPclkdiv2; //pclk/32
PcaInitStruct.pca_cidl = FALSE; //空闲模式IDLE,PCA不停止工作
PcaInitStruct.pca_ecom = PcaEcomEnable; //允许比较器功能
PcaInitStruct.pca_capp = PcaCappDisable; //禁止上升沿捕获
PcaInitStruct.pca_capn = PcaCapnDisable; //禁止下降沿捕获
PcaInitStruct.pca_mat = PcaMatEnable; //允许匹配
PcaInitStruct.pca_tog = PcaTogEnable; //允许翻转
PcaInitStruct.pca_pwm = PcaPwm8bitDisable; //禁止8位pwm
PcaInitStruct.pca_epwm = PcaEpwmEnable; //允许16位pwm
PcaInitStruct.pca_ccap = 10000;
PcaInitStruct.pca_carr = Pca_carr; //占空比
Pca_M3Init(&PcaInitStruct);
///< PCA 开始运行
Pca_StartPca(TRUE);
}
int main(void)
{
.......................................
........................................
while{1}
{
Pca_SetCcap(PcaModule3, per_T);//改变占空比
}
}
各位大佬帮我看看 哪里配置错了 占空比不变化。
赞0
Pca_SetModuleFun(PcaModule3, PcaCh3, PcaPwm);
Pca_SetCn(PcaModule3, PcaCh3, 10000);
Pca_SetCcap(PcaModule3, per_T);
评论
2023-02-12
赞0
评论
2023-02-01
赞0
评论
2023-02-01
赞0
评论
2023-02-01
赞0
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TMOD |= 0x02; //设置定时器模式
TL0 = 0xF5; //设置定时初值
TH0 = 0xF5; //设置定时重载值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
}
void PWM_EN()
{
CCAP0L = 0x80;//PCA0比较寄存器,使占空比达到1:1
CCAP1L = 0x80;//PCA1比较寄存器
CCAP0H = 0x80;//设定PCA0比较寄存器重载值后八位
CCAP1H = 0x80;//设定PCA1比较寄存器重载值后八位
CL = 0;//PCA计数器清零
CH = 0;//PCA计数器清零
CMOD = 0x84; // 空闲模式下PCA计数器停止工作;定时器0溢出做PCA模块的时钟源
CCON= 0x00;
CCAPM0 = 0x42;//使能PWM0和比较器
CCAPM1 = 0x42;//使能PWM1和比较器
PCA_PWM0 = 0x00;//PCA0八位PWM模式,EPC0L(和比较寄存器组成9位数字)置零
PCA_PWM1 = 0x00;//PCA1八位PWM模式
//这时PWM的频率理论上为1105920/256=4320Hz
CCON= 0x40;//使能PAC计数器
}
评论
2023-02-01
赞0
评论
2023-02-01
赞0
评论
2023-02-01
赞0
评论
2023-01-03
您需要登录后才可以回复 登录 | 注册