工具/软件:Code Composer Studio
您好,
我将MSPBoot UART引导加载程序移植到MSP430FR5739。 bootloader正在使用声明为void指针的回调函数。
typedef结构 {
void (*RxCallback)(uint8_t); // RX标志回调
void (* TxCallback)(uint8_t *); // TX标志回调
void (*ErrorCallback)(uint8_t);// 错误回调
}t_CI_Callback;
当代码使用mspx (大代码,大数据标志)编译时,编译器似乎认为回调指针是20位地址,并加载了错误的地址。
内存内容:
0x001C04 FF56
0x001C06 RxPacket
0x001C0.6001万C 0000 0000 1C00 7CE6 7CE6 7CE6 7CE6 7CE6 00E6
为获取回调函数地址而执行的汇编指令为:
Mova &0x01c04,R15
R15寄存器中加载的是0x0CFF56,它是0x001C06的4个LSB和0x001C04的16位回调指针。
我可以告诉编译器使用20位回调指针吗? 或者,在使用函数指针时是否应该只使用小代码标志?
谢谢!
Jocelyn Harvey