你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

TIM CH3 CH4 輸入捕獲問題

[复制链接]
allenfd 提问时间:2019-7-20 11:34 /
大家好
請教一下我要用TIM CH3 CH4來做PWM 輸入捕獲
但是怎麼調試都很怪, 但是換成CH1跟CH2就很正常, 請問有人知道要如何解決嗎?
我需要量Frequency and DutyCycle
收藏 评论6 发布时间:2019-7-20 11:34

举报

6个回答
wenyangzeng 回答时间:2019-7-20 17:20:23
本帖最后由 wenyangzeng 于 2019-7-20 17:49 编辑
allenfd 发表于 2019-7-20 15:20
你好
我用官方代碼在CH1跟CH2都能正常運行
但是換成CH3跟CH4就無法

需要检查一下CC3和CC4的初始化代码。另外:
官方这段说明可以参考:
无标题7.png


无标题3.png

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

wenyangzeng 回答时间:2019-7-20 11:56:04
本帖最后由 wenyangzeng 于 2019-7-20 11:59 编辑

楼主没有贴出代码,使用哪个定时器没有描写清楚,假设是TIM1,且CC3配置正确,则在TIM1中断函数里应该能正常捕捉CC3的:
TIM1_CC3部分配置
  1.   TIM_ICInitStructure.TIM_Channel = TIM_Channel_3;
  2.   TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
  3.   TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
  4.   TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
  5.   TIM_ICInitStructure.TIM_ICFilter = 0x07;
  6.   TIM_ICInit(TIM1, &TIM_ICInitStructure);
  7.   TIM_Cmd(TIM1, ENABLE);
  8.   TIM_ITConfig(TIM3, TIM_IT_CC3, DISABLE);
复制代码

TIM1中断
  1. void TIM1_IRQHandler(void)
  2. {
  3.         if(TIM_GetITStatus(TIM1, TIM_IT_CC3) == SET)
  4. .
  5. .//捕捉中断处理
  6. .
  7. }
复制代码


allenfd 回答时间:2019-7-20 12:22:25
你好, 我用的是2.0.3的library
  TIM_ICInitStructure.TIM_Channel = TIM_Channel_4;
  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
  TIM_ICInitStructure.TIM_ICFilter = 0x0;

  TIM_PWMIConfig(TIM2, &TIM_ICInitStructure);

  /* Select the TIM2 Input Trigger: TI2FP2 */
  TIM_SelectInputTrigger(TIM2, TIM_TS_TI2FP2);

  /* Select the slave Mode: Reset Mode */
  TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Reset);

  /* Enable the Master/Slave Mode */
  TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable);

  /* TIM enable counter */
  TIM_Cmd(TIM2, ENABLE);

  /* Enable the CC2 Interrupt Request */
  TIM_ITConfig(TIM2, TIM_IT_CC4, ENABLE);

我在猜有沒有可能是 TIM_SelectInputTrigger(TIM2, TIM_TS_TI2FP2);這段出問題?
因為我沒看到TI4FP4的定義? 有可能是我用的library太舊嗎?
wenyangzeng 回答时间:2019-7-20 13:23:07
allenfd 发表于 2019-7-20 12:22
你好, 我用的是2.0.3的library
  TIM_ICInitStructure.TIM_Channel = TIM_Channel_4;
  TIM_ICInitStructur ...

2楼的代码是测试过能正常运行的代码,貌似无需使能TI2FP2
ST官方也有DEMO可以参考的:

InputCapture.rar (12.78 KB, 下载次数: 4)

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

edmundlee 回答时间:2019-7-20 15:06:03
不太确定, 记得是只有CH1 & 2 可以做输入捕获, 否则CNTR清不了零, 需要当前数据减去前一个数据
allenfd 回答时间:2019-7-20 15:20:47
wenyangzeng 发表于 2019-7-20 13:23
2楼的代码是测试过能正常运行的代码,貌似无需使能TI2FP2
ST官方也有DEMO可以参考的:

你好
我用官方代碼在CH1跟CH2都能正常運行
但是換成CH3跟CH4就無法

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版