找回密码
 立即注册
查看: 57|回复: 5

32G,根据手册例程对照编写PWM捕获,测量占空比,并无中断

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:12
  • 最近打卡:2025-04-28 17:00:02
已绑定手机

2

主题

19

回帖

138

积分

注册会员

积分
138
发表于 2025-4-15 11:57:45 | 显示全部楼层 |阅读模式
求解答,在手册上找到了PWM占空比的测量程序,对照编写为啥中断进不去啊,手册中使用的是PWMA的,我改为了PWMB,两个地址的数据都是一样的,只是前缀不一样,但是测不到PWM的捕获中断,手册中也没有看到有PWM捕获脚位的选择,是不需要吗?

手册例程

手册例程

手册例程

手册例程

编写的PWMB捕获初始化

编写的PWMB捕获初始化

捕获中断

捕获中断
回复

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-4-15 11:58:00 | 显示全部楼层
在您的问题中,您提到在编写PWM捕获程序时,无法进入中断,并且手册中没有明确提到PWM捕获脚位的选择。以下是一些可能的原因和解决方案,供您参考:

1. PWM模块配置
模块选择:您提到将PWMA改为PWMB,确保PWMB模块的配置与PWMA一致。检查PWMB的寄存器配置,确保PWM捕获功能已启用。
时钟配置:确保PWMB的时钟源已正确配置,并且时钟频率符合预期。

2. 中断配置
中断使能:检查PWMB的中断使能位是否已正确设置。通常,PWM捕获中断需要单独使能。
中断优先级:如果系统中存在其他高优先级中断,可能会导致PWM捕获中断无法及时响应。检查中断优先级设置,确保PWM捕获中断的优先级足够高。
中断标志:在进入中断服务程序后,清除相应的中断标志位,以避免重复进入中断。

3. 捕获脚位选择
引脚复用:虽然手册中没有明确提到PWM捕获脚位的选择,但通常需要将特定引脚配置为PWM捕获功能。检查引脚复用寄存器,确保捕获引脚已正确配置。
引脚方向:确保捕获引脚已配置为输入模式。

4. 捕获模式配置
捕获模式:检查PWMB的捕获模式配置,确保已选择正确的捕获模式(如上升沿、下降沿或双边沿捕获)。
捕获寄存器:在捕获事件发生后,检查捕获寄存器的值,确保捕获数据已正确存储。

5. 调试建议
寄存器检查:在程序运行过程中,通过调试工具检查PWMB的相关寄存器,确认配置是否正确。
信号验证:使用示波器或逻辑分析仪验证PWM信号是否正常输入到捕获引脚。
简化程序:尝试编写一个简单的PWM捕获程序,仅包含最基本的配置和中断处理,逐步排查问题。

6. 手册参考
详细阅读:仔细阅读手册中关于PWM捕获的章节,确保没有遗漏任何关键配置步骤。
例程对比:将您的程序与手册中的例程进行详细对比,查找可能的差异。

示例代码片段
以下是一个简化的PWM捕获配置示例,供您参考:
  1. c
  2. // 配置PWMB模块
  3. PWMBCTRL = 0x01; // 使能PWMB模块
  4. PWMBCLKSRC = 0x02; // 设置时钟源
  5. PWMBCAPTUREMODE = 0x03; // 设置捕获模式
  6. // 配置捕获引脚
  7. GPIOPINMUX = 0x04; // 配置引脚复用为PWM捕获功能
  8. GPIOPINDIR = 0x00; // 配置引脚为输入模式
  9. // 使能PWMB捕获中断
  10. PWMBINTEN = 0x01; // 使能捕获中断
  11. NVICEnableIRQ(PWMBIRQn); // 使能NVIC中断
  12. // 中断服务程序
  13. void PWMBIRQHandler(void) {
  14.     if (PWMBINTFLAG & 0x01) { // 检查捕获中断标志
  15.         uint16t capturevalue = PWMBCAPTUREREG; // 读取捕获值
  16.         // 处理捕获值
  17.         PWMBINTFLAG = 0x01; // 清除中断标志
  18.     }
  19. }
复制代码

总结
通过以上步骤,您应该能够逐步排查并解决PWM捕获中断无法进入的问题。如果问题仍然存在,建议进一步检查硬件连接和信号完整性,或联系芯片厂商的技术支持获取更多帮助。

希望这些建议对您有所帮助,祝您顺利解决问题!

[本文内容由国芯人工智能辅助生成,仅供参考]

点评

可以查看是否打开总中断,PWM捕获的脚位选择为PWMB_PS和PWMA_PS,如果不设置,可能捕获的引脚不会在预期的引脚上  详情 回复 发表于 2025-4-15 15:49
回复 支持 反对

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-4-15 11:58:00 | 显示全部楼层
在您的问题中,您提到在编写PWM捕获程序时,无法进入中断,并且手册中没有明确提到PWM捕获脚位的选择。以下是一些可能的原因和解决方案,供您参考:

1. PWM模块配置
模块选择:您提到将手册中的PWMA改为PWMB,但需要注意PWMA和PWMB的寄存器地址和配置可能有所不同。请确保您已经正确配置了PWMB的相关寄存器,包括时钟源、计数模式、捕获模式等。
捕获模式:PWM捕获通常需要配置为输入捕获模式,并设置捕获触发条件(如上升沿、下降沿或双边沿触发)。请检查您是否已经正确配置了捕获模式。

2. 中断配置
中断使能:确保您已经使能了PWM捕获中断。通常,这涉及到设置相关的中断使能位(如PWMBIE或类似的寄存器位)。
中断优先级:如果系统中存在多个中断源,可能需要设置PWM捕获中断的优先级,以确保它能够被及时响应。
中断标志:在进入中断服务程序后,通常需要清除中断标志位,以避免重复进入中断。请检查您是否在中断服务程序中正确清除了中断标志。

3. 引脚配置
捕获引脚:虽然手册中没有明确提到PWM捕获脚位的选择,但通常PWM捕获功能需要将特定引脚配置为输入模式,并映射到PWM模块的捕获通道。请检查您是否已经正确配置了捕获引脚,并将其映射到PWMB的捕获通道。
引脚复用:某些微控制器的引脚可能具有多种功能,需要通过寄存器配置选择正确的功能(如PWM捕获功能)。请检查您是否已经正确配置了引脚复用功能。

4. 时钟和定时器配置
时钟源:PWM捕获功能通常依赖于定时器的时钟源。请确保您已经正确配置了定时器的时钟源,并且时钟频率适合您的应用。
定时器配置:PWM捕获功能通常需要配置定时器的计数模式(如向上计数、向下计数或中心对齐模式)。请检查您是否已经正确配置了定时器的计数模式。

5. 调试和验证
寄存器检查:在程序运行过程中,可以通过调试工具检查相关寄存器的值,确认配置是否正确。
信号验证:使用示波器或逻辑分析仪验证PWM信号是否正常输入到捕获引脚,并确认捕获触发条件是否满足。

6. 手册和例程
手册参考:仔细阅读手册中关于PWM捕获的相关章节,确保您理解每个配置步骤的含义。
例程对照:对照手册中的例程,逐步检查您的代码,确保没有遗漏或错误的配置。

示例代码片段
以下是一个简单的PWM捕获配置示例,供您参考:

```c
// 配置PWMB捕获通道
PWMBCCR1 = 0x0000; // 清除捕获比较寄存器
PWMBCCMR1 |= (1

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6841

积分

论坛元老

积分
6841
发表于 2025-4-15 14:06:20 | 显示全部楼层
修改后每个寄存器的功能对照规格书介绍了解一遍,基本上就能找到问题所在。
附件例程供参考

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

19.43 KB, 下载次数: 4

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2025-4-15 15:49:53 | 显示全部楼层
国芯人*** 发表于 2025-4-15 11:58
在您的问题中,您提到在编写PWM捕获程序时,无法进入中断,并且手册中没有明确提到PWM捕获脚位的选择。以下 ...

可以查看是否打开总中断,PWM捕获的脚位选择为PWMB_PS和PWMA_PS,如果不设置,可能捕获的引脚不会在预期的引脚上
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:12
  • 最近打卡:2025-04-28 17:00:02
已绑定手机

2

主题

19

回帖

138

积分

注册会员

积分
138
发表于 2025-4-15 16:45:40 | 显示全部楼层
感谢各位,找到原因了,IO口没设置高阻输入,设置的是双向口,不知道为啥,电平被拉高了,检测不到。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 22:14 , Processed in 0.114526 second(s), 83 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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