51uwb.cn

标题: bphero_setcallbacks的调用 [打印本页]

作者: 兔子    时间: 2021-9-12 18:00
标题: bphero_setcallbacks的调用
本帖最后由 兔子 于 2021-9-12 18:02 编辑

请问对于
    int rx_main中
    bphero_setcallbacks(Tx_Simple_Rx_Callback);//注册DW1000中断的回调函数
    的bphero_setcallbacks
其定义为
void (*bphero_rxcallback)(void);
void bphero_setcallbacks(void (*rxcallback)(void))
{
    bphero_rxcallback = rxcallback;
}
那么如此定义为什么可以完成向其中传入函数就进行中断函数的注册呢?
作者: 蓝点无限    时间: 2021-9-12 19:12
void (*bphero_rxcallback)(void);
这个是函数指针。下面的代码是向这个指针赋值。 你可以看下中断函数,中断里会调用
  1. void bphero_setcallbacks(void (*rxcallback)(void))
  2. {
  3.     bphero_rxcallback = rxcallback;
  4. }
复制代码

作者: 兔子    时间: 2021-9-14 09:50
蓝点无限 发表于 2021-9-12 19:12
void (*bphero_rxcallback)(void);
这个是函数指针。下面的代码是向这个指针赋值。 你可以看下中断函数, ...

请问在什么情况下执行回调函数是在哪里定义的?~
我怎么没有找到捏
作者: 蓝点无限    时间: 2021-9-14 21:34
兔子 发表于 2021-9-14 09:50
请问在什么情况下执行回调函数是在哪里定义的?~
我怎么没有找到捏
  1. extern void (*bphero_rxcallback)(void);
  2. //extern void Simple_Rx_Callback(void);
  3. void EXTI0_IRQHandler(void)
  4. {
  5.     /* USER CODE BEGIN EXTI0_IRQn 0 */
  6.     if(__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_0) != RESET)
  7.     {
  8.         (*bphero_rxcallback)();
  9. //        Tx_Simple_Rx_Callback();
  10.         /* USER CODE END EXTI0_IRQn 0 */
  11.         HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
  12.         /* USER CODE BEGIN EXTI0_IRQn 1 */
  13.     }
  14.     __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_0);
  15.     /* USER CODE END EXTI0_IRQn 1 */
  16. }
复制代码


stm32f4xx_it.c
作者: 兔子    时间: 2021-9-18 19:28
本帖最后由 兔子 于 2021-9-18 19:31 编辑
蓝点无限 发表于 2021-9-14 21:34
stm32f4xx_it.c

请问“有接收到信号会调用这个中断”的含义在这段代码里如何体现呢/在哪里体现的呢   
作者: 蓝点无限    时间: 2021-9-19 09:40
兔子 发表于 2021-9-18 19:28
请问“有接收到信号会调用这个中断”的含义在这段代码里如何体现呢/在哪里体现的呢

看STM32 中断配置和 DW1000 or DWM1000 interrupt 引脚连接情况




欢迎光临 51uwb.cn (http://51uwb.cn/) Powered by Discuz! X3.3