打印
[STM32]

stm8 iap GO_Command_Process

[复制链接]
819|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liguang02|  楼主 | 2014-12-29 23:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看了stm8 iap 串口demo,有个地方想不懂,在 GO_Command_Process中ReceiveAddress函数检查地址使用
//check if address is valid
  if(!CheckAddress(*((u32*) &DataBuffer[N_ADDR_4]) ))
    result = 0;
更新go地址使用
//update GO address
  GoAddress = *(TFunction*)(&DataBuffer[N_ADDR_3]);
头文件定义
//indexes to received data
#define  N_COMMAND            0
#define  N_NEG_COMMAND        1
#define  N_ADDR_4             2
#define  N_ADDR_3             3
#define  N_ADDR_2             4
#define  N_ADDR_1             5
TFunction的定义
//typedef @far void (*)(void) TFunction;
typedef @far void (*TFunction)(void);
可以知道TFunction是一个函数指针类型
,但为什么跳转地址的时候直接调用GoAddress就可以了,GoAddress应该是地址的第二个字节啊,第二最高有效位,为什么不是地址的第一个字节的,还有TFunction所指向的函数究竟是什么作用的?
//jump to GO address
    GoAddress();

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

56

主题

307

帖子

2

粉丝