STM32回调函数如何外部引用
时间: 2023-07-11 21:24:09 浏览: 67
在STM32中,回调函数也可以通过函数指针来外部引用。以中断回调函数为例,可以按照如下步骤进行外部引用:
1. 在头文件中声明回调函数的函数指针类型
```c
typedef void (*IRQ_Callback)(void);
```
2. 在中断服务函数中调用回调函数
```c
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
{
/* 中断处理代码 */
/* 调用回调函数 */
if (EXTI_Callback[GPIO_Pin] != NULL)
{
EXTI_Callback[GPIO_Pin]();
}
}
```
3. 在应用程序中注册回调函数
```c
void GPIO_EXTI_Callback(void)
{
/* 回调函数代码 */
}
/* 注册回调函数 */
HAL_GPIO_RegisterCallback(GPIO_PIN_0, GPIO_EXTI_Callback);
```
4. 在应用程序中实现注册函数
```c
void HAL_GPIO_RegisterCallback(uint16_t GPIO_Pin, IRQ_Callback pCallback)
{
EXTI_Callback[GPIO_Pin] = pCallback;
}
```
在上述代码中,`EXTI_Callback`是回调函数数组,用于保存不同GPIO引脚的回调函数指针。在中断服务函数中,如果回调函数指针不为空,则调用回调函数;在应用程序中,通过`HAL_GPIO_RegisterCallback`函数将回调函数注册到回调函数数组中。