找回密码
 立即注册
查看: 51|回复: 3

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

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2026-03-03 21:17:07

10

主题

28

回帖

240

积分

中级会员

积分
240
发表于 2026-2-8 12:40:15 | 显示全部楼层 |阅读模式
芯片: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~65535  1500: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);
}
可以帮看下,是哪没有设置好吗?

回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:347
  • 最近打卡:2026-03-07 12:55:14

842

主题

1万

回帖

2万

积分

管理员

积分
22606
发表于 2026-2-8 14:59:36 | 显示全部楼层
触摸,PWM 是2个不停的东西,各自独立工作
===并行同时使用
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:719
  • 最近打卡:2026-03-07 07:41:42
已绑定手机

97

主题

7247

回帖

1万

积分

超级版主

积分
13780
发表于 2026-2-9 12:44:11 | 显示全部楼层
检查一下是不是硬件上PWM干扰了触摸按键,触摸按键是高频高阻易受干扰的
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2026-03-03 21:17:07

10

主题

28

回帖

240

积分

中级会员

积分
240
发表于 2026-2-9 21:18:38 | 显示全部楼层
最后不使用函数,直接使用寄存器方式初始化PWM,ADC,就可以用触摸了。
回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-3-7 16:59 , Processed in 0.102781 second(s), 54 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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