STM32
直播中

李月如

8年用户 144经验值
私信 关注
[问答]

请问STM32TIMER的输入捕获功能的触发模式能上升沿和下降沿同时触发吗?

论坛中的各位同志:
       大家好!
       近日,本人在调试超声波模块,遇到了要检测一段高脉冲时间宽度的问题。在网上搜了一圈儿后发现,介绍用输入捕获的人很多。
       小弟就试了试,看了STM32 V3.5库中 tiM 一节的Input Capture 的例子。结果能测得两个上升沿或者两个下降沿之前的时间宽度。
       请问各位朋友们:STM32TIMER的输入捕获功能的触发模式,可以上升沿和下降沿同时触发吗?
       我看到的V3.5的库中的触发模式中有两个可以都触发的。可是我的Keil4.12自带的库里面,却没有TIM_ICPolarity_BothEdge 这个定义。
       输入捕获功能可以设置上升沿和下降沿都进中断吗?

      附:TIMER Input Capture 中中断触发方式的宏定义

      #define  TIM_ICPolarity_Rising             ((uint16_t)0x0000)    #define  TIM_ICPolarity_Falling            ((uint16_t)0x0002)     #define  TIM_ICPolarity_BothEdge           ((uint16_t)0x000A)     #define IS_TIM_IC_POLARITY(POLARITY) (((POLARITY) == TIM_ICPolarity_Rising) ||                                        ((POLARITY) == TIM_ICPolarity_Falling))     #define IS_TIM_IC_POLARITY_LITE(POLARITY) (((POLARITY) == TIM_ICPolarity_Rising) ||                                             ((POLARITY) == TIM_ICPolarity_Falling)||                                             ((POLARITY) == TIM_ICPolarity_BothEdge))  
InputCapture.rar (12.76 KB )

回帖(3)

赵文娜

2019-10-17 08:33:56
看STM32参考手册的寄存器描述就知道了.或者TIM介绍.应该是可以的.
举报

xiayaggsdo

2025-5-16 17:35:11
本帖最后由 xiayaggsdo 于 2025-5-16 18:51 编辑


流程图和寄存器描述明确了F1的通用定时器绝对不允许双边检测(同一个位的0或1分别表示捕获上升或下降沿,你不可能让一个位同时为1和0),但是上升沿和下降沿也不可能同时发生啊,所以只要知道上升和下降的先后顺序,就可以在捕获中断种快速改为另一边的边沿触发。我实测中断改变后可以先后检测并记录时间戳,相减后得到按键时长实现按键长短按对应不同任务
至于你的#define  TIM_ICPolarity_BothEdge           ((uint16_t)0x000A),AH=1010B,发生在高级定时器上(通用定时器B3位图里写着无效)高定里的描述,B3位主要是第二引脚的互补输出,至于输入捕获是不是反边沿,没有明写,【但即使可以】,也表示必须第二引脚同时作为输入采集,即两个引脚分别采集上升和下降沿,也不是一个引脚同时使能上升下降沿的采集。我看了下还有个比较抽象的用法:PWM输入模式的特殊配置下,允许将CCR1,CCR2同时挂在CH1或CH2输入,同理3和4也一样,此时CCR1上升沿捕获,CCR2下降沿捕获,则变相实现一个输入口对应两种中断

举报
  • 4.png

阳光碎满地

2025-5-21 00:06:02
应该是可以的,看看有没有双边缘捕获设置,没有的话就在上升延触发中断后,把中断方式改为下降艳。
下降艳触发后,又改成上升延。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分