所谓动态调用,是指调用者合约不需要提前知道被调用合约的接口,只需要在调用时,告诉调用者被调合约的方法签名即可。调用者合约不需要事前绑定被调者的接口,可以在调用时,指定任意被调用合约及其方法,前面讲解了那么多中断知识,如果大家不理解也没有关系,我们会应用即可,等到后面STM32熟练了,再回过头深入了解自然就会明白。要使用中断我们就需要先配置它,通常都需经过这几步: (1)使能外设某个中断,这个具体是由外设相关中断使能位来控制,比如 定时器有溢出中断,这个可由定时器的控制寄存器中相应中断使能位来控制。 (2)设置中断优先级分组,初始化NVIC_InitTypeDef结构体,设置抢占 优先级和响应优先级,使能中断请求。 NVIC_InitTypeDef结构体如下:v_StPv888 typedef struct { uint8_t NVIC_IRQChannel;//中断源 uint8_t NVIC_IRQChannelPreemptionPriority;//抢占优先级 uint8_t NVIC_IRQChannelSubPriority;//响应优先级 FunctionalState NVIC_IRQChannelCmd;//中断使能或失能 }NVIC_InitTypeDef; 下面我们对NVIC_InitTypeDef结构体成员进行一下简单介绍。 1.NVIC_IRQChannel:中断源的设置,不同的外设中断,中断源不一样,自 然名字也不一样,所以名字不能写错,否则不会进入中断。中断源放在stm32f10x.h文件的IRQn_Type结构体内,由于内容太多,这里就不复制所有中断源,只截取一部分,如下: typedef enum IRQn { 【方案部署搭建可V or TG我昵称】 //Cortex-M3处理器异常编号 NonMaskableInt_IRQn=-14, MemoryManagement_IRQn=-12, BusFault_IRQn=-11, UsageFault_IRQn=-10, SVCall_IRQn=-5, DebugMonitor_IRQn=-4, PendSV_IRQn=-2, SysTick_IRQn=-1, //STM32外部中断编号 WWDG_IRQn=0, PVD_IRQn=1, TAMP_STAMP_IRQn=2, //限于篇幅,中间部分代码省略,具体的可查看库文件stm32f10x.h DMA2_Channel2_IRQn=57, DMA2_Channel3_IRQn=58, DMA2_Channel4_5_IRQn=59 }IRQn_Type; 2.NVIC_IRQChannelPreemptionPriority:抢占优先级,具体的值要根据优先级分组来确定,可以参考前面中断优先级分组内容。