STM32 回调函数 实例
时间: 2023-09-04 22:10:44 浏览: 95
STM32CubeMX定时器中断回调函数的研究.zip
5星 · 资源好评率100%
回调函数(Callback Function)是指一个函数作为参数传递给另一个函数,并且在该函数执行期间被调用的函数。在STM32中,回调函数通常被用于中断处理中。
以下是一个基于STM32的回调函数实例:
```c
// 定义回调函数类型
typedef void (*CallbackFunc)(void);
// 定义回调函数数组
CallbackFunc g_CallbackFuncArray[10];
// 注册回调函数
void RegisterCallbackFunc(CallbackFunc func, uint8_t index)
{
g_CallbackFuncArray[index] = func;
}
// 中断处理函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
// 根据GPIO_Pin执行不同的回调函数
if (GPIO_Pin == GPIO_PIN_0)
{
g_CallbackFuncArray[0]();
}
else if (GPIO_Pin == GPIO_PIN_1)
{
g_CallbackFuncArray[1]();
}
}
// 回调函数1
void CallbackFunc1(void)
{
// 执行一些操作
}
// 回调函数2
void CallbackFunc2(void)
{
// 执行一些操作
}
int main(void)
{
// 注册回调函数
RegisterCallbackFunc(CallbackFunc1, 0);
RegisterCallbackFunc(CallbackFunc2, 1);
// 程序主循环
while (1)
{
// 执行一些操作
}
}
```
在上面的例子中,我们定义了一个回调函数类型`CallbackFunc`,并且定义了一个回调函数数组`g_CallbackFuncArray`用于存储回调函数。在中断处理函数`HAL_GPIO_EXTI_Callback`中,我们根据GPIO_Pin的不同执行不同的回调函数。在程序主循环中,我们注册了两个回调函数,并且可以执行一些操作。
需要注意的是,回调函数的执行是在中断处理函数中执行的,因此回调函数应该尽量简短,避免占用过多的CPU时间。
阅读全文