找回密码
 立即注册
查看: 69|回复: 7

用高级PWM捕获外部PWM高电平宽度

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2026-04-16 09:25:32
已绑定手机

4

主题

11

回帖

44

积分

新手上路

积分
44
发表于 2026-4-16 10:28:12 | 显示全部楼层 |阅读模式

我想捕获P1.0和P1.2两个引脚上的PWM高电平宽度,并打印出来。以下是我的部分代码。哪位大神帮忙看一下这样写行吗?看看有没有多余或缺少了哪些语句。因这我对高级PWM不熟悉。

//======================== 主函数 ========================
void main(void)
{
P_SW2 |= 0x80;

// P1.0 P1.2 高阻输入
P1M1 |= 0x05;
P1M0 &= ~0x05;

PWMA_Capture_Init();
Uart1_Init();
EA = 1;

while (1)
{
    if (B_Capture1)
    {
        B_Capture1 = 0;
        g_high_p10 = CCAP1_Time;  // 单位:us
    }
    if (B_Capture2)
    {
        B_Capture2 = 0;
        g_high_p12 = CCAP2_Time;
    }

    // 打印
    Uart1_SendString("P1.0=");
    u16_to_str(g_high_p10);
    Uart1_SendString("us  ");

    Uart1_SendString("P1.2=");
    u16_to_str(g_high_p12);
    Uart1_SendString("us\r\n");

    delay_ms(200);
}

}

//======================== PWMA 捕获初始化 ========================
void PWMA_Capture_Init(void)
{
P_SW2 |= 0x80;

PWMA_CCER1 = 0;
PWMA_SR1 = 0;
PWMA_IER = 0;
PWMA_ENO = 0;

// 11.0592MHz 12分频 = 1us 精度
PWMA_PSCR = 11;
PWMA_ARR = 0xFFFF;

// ========= 通道1:P1.0 上升/下降沿都捕获 =========
PWMA_CCMR1 = (3 << 4) | 0x01;   // 输入模式 + 滤波
PWMA_CCER1 |= 0x01;             // 先上升沿
PWMA_CCER1 |= 0x03;             // 双边沿捕获

// ========= 通道2:P1.2 上升/下降沿都捕获 =========
PWMA_CCMR2 = (3 << 4) | 0x01;
PWMA_CCER1 |= 0x10;
PWMA_CCER1 |= 0x30;

PWMA_PS = 0x00;     // 必须00:P1.0 P1.2
PWMA_IER = 0x06;    // 通道1 + 通道2 中断
PWMA_EGR = 0x01;
PWMA_CR1 |= 0x01;

}

//======================== PWMA 中断 ========================
void PWMA_ISR(void) interrupt 26
{
u16 j;
u8 sr;

sr = PWMA_SR1;
PWMA_SR1 = 0;

// -------- P1.0 测高电平 --------
if (sr & 0x02)
{
    j = PWMA_CCR1;
    CCAP1_Time = j - CCAP1_tmp;
    CCAP1_tmp = j;
    B_Capture1 = 1;
}

// -------- P1.2 测高电平 --------
if (sr & 0x04)
{
    j = PWMA_CCR2;
    CCAP2_Time = j - CCAP2_tmp;
    CCAP2_tmp = j;
    B_Capture2 = 1;
}

}

打印出来的结果是这样的,感觉不对。

image.png

实际波形是这个的。

446d09173d0ddd8bded8d6cd503cdf45.jpg

回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:671
  • 最近打卡:2026-04-30 08:59:31
已绑定手机

52

主题

2608

回帖

9093

积分

论坛元老

积分
9093
发表于 2026-4-16 12:06:35 | 显示全部楼层
CC1与CC2组合捕获高电平宽度,可以选择捕获PWM1P或者PWM2P引脚信号。
如果你需要捕获两路高电平信号,另外一路可选择CC3与CC4组合,通过PWM3P或者PWM4P引脚捕获。
附件例子供参考。

截图202604161201514151.jpg

高级PWM-捕获模式测量高电平宽度-20231129.zip

18.37 KB, 下载次数: 4

回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2026-04-16 09:25:32
已绑定手机

4

主题

11

回帖

44

积分

新手上路

积分
44
发表于 2026-4-16 14:47:33 | 显示全部楼层
乘风*** 发表于 2026-4-16 12:06
CC1与CC2组合捕获高电平宽度,可以选择捕获PWM1P或者PWM2P引脚信号。
如果你需要捕获两路高电平信号,另外 ...

我刚学用高级PWM。你发来的例程我也看不懂呀,,我写的代码也是抄官方例程的。你帮我看看我的代码对不对?有哪里是错误的,谢谢!这个项目有点急
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2026-04-16 09:25:32
已绑定手机

4

主题

11

回帖

44

积分

新手上路

积分
44
发表于 2026-4-16 15:17:55 | 显示全部楼层
乘风*** 发表于 2026-4-16 12:06
CC1与CC2组合捕获高电平宽度,可以选择捕获PWM1P或者PWM2P引脚信号。
如果你需要捕获两路高电平信号,另外 ...

您好,您给的资料太多了,有没有只是捕获P1.0引脚的?代码太多,看得太乱了。

点评

可以用一下AiCube的自动生成程序来进行捕获,会简单很多  详情 回复 发表于 2026-4-16 15:18
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:710
  • 最近打卡:2026-04-29 17:46:54
已绑定手机
已实名认证

131

主题

3416

回帖

8928

积分

版主

积分
8928
发表于 2026-4-16 15:18:52 | 显示全部楼层
eiay*** 发表于 2026-4-16 15:17
您好,您给的资料太多了,有没有只是捕获P1.0引脚的?代码太多,看得太乱了。 ...

可以用一下AiCube的自动生成程序来进行捕获,会简单很多
或者可以看一下技术手册里面的例程,里面的例程比较简短,只有是来行,比较好看懂的
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2026-04-16 09:25:32
已绑定手机

4

主题

11

回帖

44

积分

新手上路

积分
44
发表于 2026-4-16 15:32:19 | 显示全部楼层
王*** 发表于 2026-4-16 15:18
可以用一下AiCube的自动生成程序来进行捕获,会简单很多
或者可以看一下技术手册里面的例程,里面的例程比 ...

AiCube在官网可以下载吗?

点评

[attachimg]135918[/attachimg] ISP软件里就可以直接打开了  详情 回复 发表于 2026-4-16 15:48
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:710
  • 最近打卡:2026-04-29 17:46:54
已绑定手机
已实名认证

131

主题

3416

回帖

8928

积分

版主

积分
8928
发表于 2026-4-16 15:48:46 | 显示全部楼层
eiay*** 发表于 2026-4-16 15:32
AiCube在官网可以下载吗?

截图202604161548341420.jpg

ISP软件里就可以直接打开了
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2026-04-16 09:25:32
已绑定手机

4

主题

11

回帖

44

积分

新手上路

积分
44
发表于 2026-4-16 15:58:02 | 显示全部楼层
王*** 发表于 2026-4-16 15:48
ISP软件里就可以直接打开了

好的,谢谢!
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-5-1 10:31 , Processed in 0.128076 second(s), 95 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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