本帖最后由 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下降沿捕获,则变相实现一个输入口对应两种中断
本帖最后由 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下降沿捕获,则变相实现一个输入口对应两种中断
举报