STM32
直播中

李燕

7年用户 1496经验值
私信 关注
[问答]

求助,关于STM8中断问题求解

教一下:使用STM8片子,采集二个方波算频率,需资源只能用T2_C1和T2_3,可是二个会进入同一个中断,即INTERRUPT_HANDLER(tiM2_CAP_COM_IRQHandler, 14)中断,这二个捕获有没有单独的中断?

回帖(1)

刘丽

2024-5-8 17:12:22
在STM8微控制器中,使用定时器TIM2的输入捕获模式(ICM)来测量两个方波的频率。根据您的描述,您希望使用T2_C1和T2_C3作为输入捕获通道。然而,这两个捕获通道共享同一个中断处理程序,即INTERRUPT_HANDLER(TIM2_CAP_COM_IRQHandler, 14)。

为了解决这个问题,我们可以在中断处理程序中检查哪个捕获通道触发了中断,然后分别处理。以下是解决这个问题的步骤:

1. 首先,配置定时器TIM2的工作模式。在本例中,我们需要将其配置为输入捕获模式。

2. 接下来,配置T2_C1和T2_C3作为输入捕获通道。确保它们的输入通道映射正确。

3. 配置TIM2的时钟源和预分频器,以获得所需的计数频率。

4. 启用T2_C1和T2_C3的捕获中断。这将允许定时器在捕获事件发生时生成中断。

5. 实现INTERRUPT_HANDLER(TIM2_CAP_COM_IRQHandler, 14)中断处理程序。在这个处理程序中,我们需要检查哪个捕获通道触发了中断。这可以通过检查TIM2的捕获中断标志(如TIM2_SR1和TIM2_SR2)来实现。

6. 在中断处理程序中,根据触发中断的捕获通道,执行相应的处理。例如,如果T2_C1触发了中断,您可以读取T2_C1的捕获值并计算方波频率。同样,如果T2_C3触发了中断,您可以读取T2_C3的捕获值并计算另一个方波的频率。

7. 清除定时器TIM2的捕获中断标志,以允许新的捕获事件触发中断。

通过以上步骤,您可以实现在同一个中断处理程序中处理两个捕获通道的中断。这种方法的优点是节省了资源,因为您不需要为每个捕获通道分配单独的中断处理程序。然而,这种方法的缺点是中断处理程序的执行时间可能会增加,因为您需要检查哪个捕获通道触发了中断并相应地处理。
举报

更多回帖

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