stm32串口数据传输(*((void(*)(u8))g_UP_ZigbeeITAddress))(USART_ReceiveData(UART4))

来源:互联网 发布:淘宝开店步骤 编辑:程序博客网 时间:2024/06/06 12:54


(*((void(*)(u8))g_UP_ZigbeeITAddress))(USART_ReceiveData(UART4))
(出现在网络对抗机器人Zigbee初始化中)


首先补充一点C语言的相关知识:

【对开始处问题的具体详解:】
1、g_UP_ZigbeeITAddress表示一个 指向【类型为(void(*)(u8) 的函数】的指针变量

2、那么g_UP_ZigbeeITAddress函数指针具体指向哪个函数呢?


3、那么又是谁调用了上面的函数UP_SetZigbeeHadler()呢?

其中 UP_Zigbee_Rec是函数UP_Zigbee_Rec(u32 data)的地址

4、UP_Zigbee_Rec(u32 data)函数:

也就是说 函数UP_Zigbee_EnableIT(void) 调用了-->【UP_SetZigbeeHadler(void (*ApplicationAddress)(u32))函数】调用了-->UP_Zigbee_Rec(u32 data)函数

5、那么 是谁调用了UP_Zigbee_EnableIT(void) 呢?
其中main()函数在开始处调用了一次UP_Zigbee_EnableIT(void)



6、【小结】也就是说 调用关系为:
main()----调用---->UP_Zigbee_EnableIT(void)----调用---->UP_SetZigbeeHadler(void (*ApplicationAddress)(u32))----调用---->UP_Zigbee_Rec(u32 data)
从而g_UP_ZigbeeITAddress就指向了函数UP_Zigbee_Rec(u32 data)

7、那么函数UP_Zigbee_Rec(u32 data)又是从哪里接收到数据的呢?
答案又回到了开头时提出的疑问:

/**********************************结束**************************************************************/

0 0