STM32之中断事件

中断和事件:
11:51 2018/7/30
中断和事件是同一个触发脉冲  中断/事件
中断是需要CPU参与的
    需要软件的中断服务函数才能完成中断后产生的结果;
事件是靠脉冲发生器产生一个脉冲,
    进而由硬件自动完成这个事件产生的结果
    当然相应的联动部件需要先设置好,比如引起DMA操作,AD转换等;

事件机制提供了一个完全有硬件自动完成的触发到产生结果的通道,
不要软件的参与,降低了CPU的负荷,节省了中断资源,提高了响应速度(硬件总快于软件)
是利用硬件来提升CPU芯片处理事件能力的一个有效方法;

例如:
外部I/O触发AD转换,来测量外部物品的重量:
    传统的中断通道,需要I/O触发产生外部中断,外部中断服务程序启动AD转换,
    AD转换完成中断服务程序提交最后结果;

    事件通道,I/O触发产生事件,然后联动触发AD转换,AD转换完成中断服务程序提交最后结果;
    相比之下,后者不要软件参与AD触发,并且响应速度也更块;
    要是使用事件触发DMA操作,就完全不用软件参与就可以完成某些联动任务了。

配置:
要产生中断,必须先配置好并使能中断线。
要产生事件,必须先配置好并使能事件线。

硬件中断选择
    要配置 23 根线作为中断源,请执行以下步骤:
    配置 23 根中断线的屏蔽位 (EXTI_IMR)
    配置中断线的触发选择位(EXTI_RTSR 和 EXTI_FTSR)
    配置对应到外部中断控制器 (EXTI) 的 NVIC 中断通道的使能和屏蔽位,
        使得 23 个中断线中的请求可以被正确地响应。
硬件事件选择
    要配置 23 根线作为事件源,请执行以下步骤:
    配置 23 根事件线的屏蔽位 (EXTI_EMR)
    配置事件线的触发选择位(EXTI_RTSR 和 EXTI_FTSR)
软件中断/ 事件选择
    可将这 23 根线配置为软件中断/事件线。以下为产生软件中断的步骤。
    配置 23 根中断/事件线的屏蔽位(EXTI_IMR、EXTI_EMR)
    在软件中断寄存器设置相应的请求位 (EXTI_SWIER)


===============================================================================================
为什么预装寄存器TIMx_RCR的值要-1呢?    如要计数2000 就装入2000-1
因为当递增计数器的重负次数达到重复计数器寄存器中编程的次数加一次(TIMx_RCR+1)后,
产生更新事件UEV。

猜你喜欢

转载自blog.csdn.net/fifteenPeng/article/details/85448089