HAL库中MSP回调--HAL_PPP_MspInit()与中断回调--HAL_PPP_Callback()的区别及一些学习见解
MSP回调
MSP回调是指与MCU相关的初始化回调函数,这些函数通常在HAL库的外设初始化函数中被调用,主要用于配置与MCU相关的外设资源,如GPIO、NVIC(嵌套向量中断控制器)和时钟等。在HAL库中,MSP回调通常以HAL_PPP_MspInit()的形式存在,其中PPP代表外设的名称(如UART、I2C等)。这些函数通常被定义为弱函数(带有__weak
关键字),以便用户可以根据自己的需求进行重写。
MSP回调在外设初始化时被调用,即在HAL_PPP_Init()函数中调用HAL_PPP_MspInit()。
中断回调
中断回调是指当中断发生时,被调用的函数。该函数用于处理中断,并执行相应的中断服务程序,如接收数据、发送数据、定时器溢出等。在HAL库中,中断回调通常以HAL_PPP_Callback()的形式存在。这些函数可由用户自己定义,用于处理中断。
中断回调在中断发生时被调用。当外设产生中断时,相应的共用中断处理函数如HAL_PPP_IRQHandler()会被触发,该函数会进一步调用一系列HAL_PPP_Callback()中断回调函数来处理中断,用户可根据不同的回调函数类型,编写对应的中断处理程序。
总结
MSP回调与中断回调可用以下方式加以区分,首先它们的目的不同:MSP回调主要用于配置与MCU相关的外设资源,而中断回调则用于处理中断事件;同时它们的调用时机不同:MSP回调在外设初始化时就会被调用,而中断回调在中断发生时才被调用。