数码之家

 找回密码
 立即注册
搜索
查看: 3588|回复: 1

STC8G系列单片机 PWM无法触发ADC求教!

[复制链接]
发表于 2021-2-14 18:32:42 | 显示全部楼层 |阅读模式
50家元
PWM2参数库函数配置 PWM并未将start位置1
/******************** PCA配置 ********************/
void        PWM15_config(void)
{
        PWM15_InitTypeDef                PWM15_InitStructure;

        PWM15_InitStructure.PWM_Enable    = ENABLE;                //PWM使能,  ENABLE, DISABLE
        PWM15_InitStructure.PWM_Period    = 0x0400;                //PWM周期,  0~0x7fff
        PWM15_InitStructure.PWM_Clock_Sel = PWMn_CLK_SYS;                //时钟源选择,  PWMn_CLK_SYS, PWMn_CLK_TM2
        PWM15_InitStructure.PWM_Clock_PS  = 2;                                //系统时钟分频参数(PS+1分频),  0~15
        PWM15_InitStructure.PWM_Counter   = ENABLE;                //计数器使能,  ENABLE, DISABLE
        PWM15_Init(PWM2,&PWM15_InitStructure);
      
      
        PWMChannelCtrl(PWM20,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
        PWMChannelCtrl(PWM21,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
        //左臂
        PWMChannelCtrl(PWM25,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
        PWMChannelCtrl(PWM23,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
        //右
        PWMChannelCtrl(PWM24,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
        PWMChannelCtrl(PWM22,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
      
        PWM15Duty(PWM22,0x000,00);                //PWM_ID, 输出低电平位置, 输出高电平位置
        PWM15Duty(PWM23,0x000,00);                //PWM_ID, 输出低电平位置, 输出高电平位置

        PWM15Duty(PWM24,0x000,300);                //PWM_ID, 输出低电平位置, 输出高电平位置
        PWM15Duty(PWM22,300,0x0000);        //PWM_ID, 输出低电平位置, 输出高电平位置

  Motor3_Set(1,100);
      
}
void ADC_Config()
{

        PWMCFG23 |= 0x02;//关联PWM>ADC
      
        ADCTIM = 0x80;
        P_SW2|= 0x3f;
        P_SW2&= 0x7f;
        ADCCFG = 0x0f;
      
        ADC_CONTR|=(1<<7);
        ADC_CONTR|=(1<<4);
        PWM2TADC = 0x0200;                                //200位置触发

        EADC = 1;
        EA = 1;
      
        ADC_CONTR |= 0x40;                                        //仅在手动置start后中断了一次

}

发表于 2021-2-17 21:40:52 | 显示全部楼层
夺宝奇兵夺宝奇兵
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-19 23:18 , Processed in 0.234001 second(s), 8 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表