
定时器使用DMA突发传输功能时,传入指针从常量数组改为变量数组后,传输功能异常。测试官方用例一样,是何原因?
STM32MP135D的TIM2使用ETR作为外部时钟时,无法使用PE15作为输入
分享一个PWM+DMA的BUG
STM32的TIM触发SPI的DMA发送使用NSS时MSSI的问题
使用STM32捕获PWM时同时捕获2个通道时会出现捕获的频率值不准确的问题
HRTIM 变频控制输出的第一个周期频率异常
PWM+DMA求助
STM32F030内部晶振怎么设置,内部晶振是延时函数怎么设置
分享STM32F030K6程序运行异常的解决方法
STM32F030正常上电不运行
之前清除标志位是不是恰巧刚清除后,第二标志位置位了,然后再等第一个置位才能判断。
我之前是这么做的,计数器自由运行,只判断第二个标志位(中断,第一个一定是先来的),然后直接取数据16位减法,不需要判断大小。感兴趣的话可以试试看。
从你目前设计来看,你如何区分上沿和下沿的前后关系呢?比如下图,
你代码里只管发生两次捕获事件即可。你是如何区分哪一段的呢?
你可以先以捕获到下降沿为起始条件,在捕获到上沿时应以检测到已经发生下沿
捕获事件作为有效前提,否则本次上沿捕获无效,得等下一次捕获。
目的就是保证你的捕获应该是 先 捕获下沿,然后 捕获上沿的 连续 两次捕获。
另外,根据你目前的设计,被测信号宽度应该不宽于TIMER的计数周期,这样的话,在计算
被测信号宽度时,需稍加判断第二次捕获的数据是否大于前者,若不满足,低电平宽度就
是=CCR2+ARR+1-CCR1;
我是通过比较CCR2>CCR1来作为判断上沿在下沿之后的条件的,这个逻辑没问题,现在主要的问题就是不加delay,那么这个CCR2(上沿)得值基本都是0x11或0x12或0x13这几个值,但是加了delay后就一切正常,能正常捕获到下沿和上沿,不加delay就只有下沿得捕获正常,上沿的捕获值始终是上述三个值,所以一直满足不了CCR2>CCR1
[md]你靠比较ccr2 ccr1捕获值的大小来判断前后时序的逻辑,不是很理解。
因为被测信号过来的时间点是随机的。
至于这里的delay(),如果程序逻辑没问题的话,就没有道理必须放个delay在这里。
你觉得加了delay正常 或许就是个误会。
[md]我觉得没什么问题吧,CCR2>CCR1就可以确保检测到的上升沿是在下降沿之后😕
加这个delay就是因为在调试过程发现CCR2>CCR1这个条件一直满足不了(实际跟踪就是CCR2一直都是0x11或0x12这几个值),一直没有出现CCR2>CCR1的情况,但一旦给这个if中的代码加上断点就可以正常满足条件……我能联想到的自然就是因为加了断点调试后引起了延迟,于是我就手动增加了delay,果然一切就正常了,并且检测的上升沿和下降沿也是正确无误的……目前还不明白根源是什么
嗯,你这样确实可行,我改成这样不加delay也可以了;能用,就是对为什么不行有点好奇,哈哈