AHBbGao 发表于 2026-2-8 12:40:15

触摸与PWM可以同时用吗?| 并行同时使用

芯片:STC8H4K64TL
使用引脚 :P1.0,P1.1,P1.4,P1.5,P1.6是触摸按钮 。
同时,还启用了数码管的功能。
现在要从P1.3引脚输入PWM波,用来控制加热功能的。

如果没有启用PWM初始化函数,触摸数码管正常,触摸也正常。如果启用了,触摸钮,就不能用了。

/***************PWM初始化函数 *****************/
void      PWM_config(void) //如果不是互补输出,要使用pwm的N 端输出信号
{
      PWMx_InitDefine                PWMx_InitStructure;
                                                
      PWMx_InitStructure.PWM_Mode    =      CCMRn_PWM_MODE1;      //模式,                CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2
      PWMx_InitStructure.PWM_Duty    = PWMA_Duty.PWM2_Duty;      //PWM占空比时间, 0~Period   
      PWMx_InitStructure.PWM_EnoSelect   = ENO2N ;      //输出通道选择,      ENO1P,ENO1N,ENO2P,ENO2N,ENO3P,ENO3N,ENO4P,ENO4N / ENO5P,ENO6P,ENO7P,ENO8P
      PWM_Configuration(PWM2, &PWMx_InitStructure);                        //初始化PWM,PWMA,PWMB
   
//      PWMx_InitStructure.PWM_Mode    =      CCMRn_PWM_MODE1;      //模式,                CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2
//      PWMx_InitStructure.PWM_Duty    = PWMA_Duty.PWM4_Duty;      //PWM占空比时间, 0~Period
//      PWMx_InitStructure.PWM_EnoSelect   =ENO4N;      //输出通道选择,      ENO1P,ENO1N,ENO2P,ENO2N,ENO3P,ENO3N,ENO4P,ENO4N / ENO5P,ENO6P,ENO7P,ENO8P
//      PWM_Configuration(PWM4, &PWMx_InitStructure);                        //初始化PWM,PWMA,PWMB

    PWMx_InitStructure.PWM_Period   = 2046;                                        //周期时间,   0~655351500:8K
      PWMx_InitStructure.PWM_DeadTime = 0;                                        //死区发生器设置, 0~255
      PWMx_InitStructure.PWM_MainOutEnable= ENABLE;                        //主输出使能, ENABLE,DISABLE
      PWMx_InitStructure.PWM_CEN_Enable   = ENABLE;                        //使能计数器, ENABLE,DISABLE
      PWM_Configuration(PWMA, &PWMx_InitStructure);                        //初始化PWM通用寄存器,PWMA,PWMB

//    PWM1_SW(PWM1_SW_P20_P21);                        //PWM1_SW_P10_P11,PWM1_SW_P20_P21,PWM1_SW_P60_P61
      PWM2_SW(PWM2_SW_P12_P13);                        //PWM2_SW_P12_P13,PWM2_SW_P22_P23,PWM2_SW_P62_P63
//    PWM4_SW(PWM4_SW_P26_P27);
      NVIC_PWM_Init(PWMA,DISABLE,Priority_0);
}
可以帮看下,是哪没有设置好吗?

神农鼎 发表于 2026-2-8 14:59:36

触摸,PWM 是2个不停的东西,各自独立工作
===并行同时使用

DebugLab 发表于 2026-2-9 12:44:11

检查一下是不是硬件上PWM干扰了触摸按键,触摸按键是高频高阻易受干扰的

AHBbGao 发表于 2026-2-9 21:18:38

最后不使用函数,直接使用寄存器方式初始化PWM,ADC,就可以用触摸了。
页: [1]
查看完整版本: 触摸与PWM可以同时用吗?| 并行同时使用