完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在参考手册中,单脉冲模式的说明使用TI2FP2作为定时器触发,它与定时器通道2上的输入捕捉相关联,但比较器的输出只能重定向到通道4上的输入捕捉。 (除了TIM10,但没有第二个通道输出PWM ...),或OCREF清除。 我已经尝试将COMP2输出重定向到:
但这些选择都没有奏效。 如果这些配置中的任何一个都有效,我只是没有正确设置它们? 我应该以不同的方式做吗? 有没有办法直接连接这两个,我应该从COMP2中断启动单脉冲模式?
|
|
相关推荐
5个回答
|
|
看一下定时器的方框图,我也找不到直接的方法,显然没有信号从CH4传到触发单元。
如果您想避免中断,并拥有合适的免费DMA通道,您可以使用它来启动另一个计时器。您可以使用TIM2_CH4或TIM3_CH4(我在示例中使用TIM3),但没有DMA通道TIM4_CH4。您可以坚持TIM4或使用任何其他计时器作为目标。 设置TIM4为单脉冲模式,但尚未启动。找出将进入的值TIM4->CR1,并将其存储在内存变量中,例如volatile uint8_t tim4_cr1_start = TIM_CR1_OPM|TIM_CR1_CEN;最简单的情况。 设置DMA1_Channel3,存储器地址&tim4_cr1_start从上面,外围地址是&TIM4->CR1,传输长度是1。使用8位模式,启用循环模式。 设置TIM3_CH4为输入捕获,在TIM3_CCER和中选择极性等TIM3_CCMR2。 启用CC4DE,捕获/比较4个DMA请求TIM3->DIER。 开始TIM3。 将COMP2输出重定向到TIM3_CH4(您可以使用TIM2_CH4' too, but there is no DMA channel forTIM4_CH4`)。 现在,比较器事件将触发捕获TIM3_CH4,这将指示DMA写入合适的值TIM4->CR1。由于DMA设置为循环模式,因此它会TIM4->CR1在每个后续捕获事件中复制相同的值。 |
|
|
|
感谢您的解释,我之前没有真正使用过DMA,所以这绝对是学习如何使用它的好机会!你知道这个解决方案与COMP2输出改变和输出引脚上的单脉冲模式之间的延迟使用中断相比如何?
|
|
|
|
Cortex-M3中的中断条目至少需要12个周期,然后最小的处理程序实现至少需要5个周期(1个为MOVS2 个,2个为LDR2个,2 个为STR)。这是理论上的最小值,我说20-25个周期是现实的。我真的不知道DMA延迟,我猜3或4个周期,如果它需要超过5,我会非常惊讶。然后在两种情况下,定时器可能需要另外2个周期才能启动。
|
|
|
|
实际上,如果另一个中断处理程序在恰当的时刻完成,则中断条目可以更快(参见尾部链接)。关键是,中断延迟可能不确定为+/- 6个周期,如果您将此通道设置为最高优先级,则DMA延迟应保持不变。
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2183 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2011 浏览 3 评论
4612 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2154 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2687 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 12:52 , Processed in 0.682798 second(s), Total 80, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号