完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
论坛中的各位同志:
大家好! 近日,本人在调试超声波模块,遇到了要检测一段高脉冲时间宽度的问题。在网上搜了一圈儿后发现,介绍用输入捕获的人很多。 小弟就试了试,看了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个回答
|
|
看STM32参考手册的寄存器描述就知道了.或者TIM介绍.应该是可以的.
|
|
|
|
本帖最后由 xiayaggsdo 于 2025-5-16 18:51 编辑
![]() ![]() 流程图和寄存器描述明确了F1的通用定时器绝对不允许双边检测(同一个位的0或1分别表示捕获上升或下降沿,你不可能让一个位同时为1和0),但是上升沿和下降沿也不可能同时发生啊,所以只要知道上升和下降的先后顺序,就可以在捕获中断种快速改为另一边的边沿触发。我实测中断改变后可以先后检测并记录时间戳,相减后得到按键时长实现按键长短按对应不同任务 至于你的#define TIM_ICPolarity_BothEdge ((uint16_t)0x000A),AH=1010B,发生在高级定时器上(通用定时器B3位图里写着无效) ![]() |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
2494 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1950 浏览 1 评论
1478 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
968 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
3073 浏览 2 评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
1265浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
543浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
826浏览 3评论
790浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
810浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-6-25 15:18 , Processed in 0.834245 second(s), Total 52, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191