找回密码
 立即注册
查看: 330|回复: 2

STC32G 根据样例修改的代码 捕获高电平 无法进入中断

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-03-10 12:50:25
已绑定手机

17

主题

28

回帖

254

积分

中级会员

积分
254
发表于 2024-6-28 14:47:09 | 显示全部楼层 |阅读模式


    //(CC3捕获TI4上升沿,CC2捕获TI4下降沿),在CC4中断里用CC4捕获值减去CC3的捕获值,得到高电平宽度。
    PWMA_CCER2 = 0x00;
    PWMA_CCMR3 = 0x02;  // CC3为输入模式,且映射到TI4FP3上
    PWMA_CCMR4 = 0x01;  // CC4为输入模式,且映射到TI4FP4上
    PWMA_CCER2 = 0x11;  // 使能CC3/CC4上的捕获功能
    PWMA_CCER2 |= 0x00; // 设置捕获极性为CC3的上升沿
    PWMA_CCER2 |= 0x20; // 设置捕获极性为CC4的下降沿
    PWMA_CR1 = 0x01;

    PWMA_IER = 0x10; //  使能CC4捕获中断


void PWMA_ISR_Handler(void) interrupt PWMA_VECTOR
{
    unsigned int cnt, cnt1, cnt2;
    if (PWMA_SR1 & 0x10) // CC4IF 捕获/比较中断
    {
        PWMA_SR1 &= ~0x10;

        cnt1 = (PWMA_CCR3H << 8) + PWMA_CCR3L;
        cnt2 = (PWMA_CCR4H << 8) + PWMA_CCR4L;
        cnt = cnt2 - cnt1;
    }
}


上面的代码是根据样例修改的,不知为何无法进入中断。 是哪里设置的问题吗?



回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:459
  • 最近打卡:2025-05-02 21:17:31
已绑定手机
已实名认证

110

主题

2223

回帖

5464

积分

版主

积分
5464
发表于 2024-6-28 14:57:43 | 显示全部楼层
就目前代码来说,可能存在以下几种情况:
首先是PWM的端口没有通过PWMA_PS寄存器进行更改,所以实际的输入端口映射不对,进而无法进入中断。
还有就是EA标志位在这段程序中并没有开启,这也是不进入中断的可能之一。
最后建议直接使用官方的原版例程,通过原版的IO测试是否能正常进入中断
推荐使用调试模式对运行的情况进行查看

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-03-10 12:50:25
已绑定手机

17

主题

28

回帖

254

积分

中级会员

积分
254
发表于 2024-6-28 15:12:23 | 显示全部楼层
王*** 发表于 2024-6-28 14:57
就目前代码来说,可能存在以下几种情况:
首先是PWM的端口没有通过PWMA_PS寄存器进行更改,所以实际的输入 ...

非常感谢。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 00:53 , Processed in 0.104583 second(s), 58 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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