共3条
1/1 1 跳转至页
这个参数总是传不对,是不是编译器有问题?
问
void key_sCAN((void)*pdata);
主程序调用函数
OSTaskCreate(key_sCAN,(void*)0,&key_sCANStk[TASK_STK_SIZE-1],0);
其函数原型是
INT8U OSTaskCreate (void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio);
编译后看的key_sCAN的首地址为0x00d1,但传过去的数总是0x0054,
奇怪的是,要是把调用函数改为
OSTaskCreate((void*)0x00d1,(void*)0,&key_sCANStk[TASK_STK_SIZE-1],0);
传递结果就正确了~
为什么直接送数可以,送函数名怎么就不行呢?
编译器的反汇编程序
13: OSTaskCreate(key_sCAN,(void*)0,&key_sCANStk[TASK_STK_SIZE-1],0);
+000000D4: 2422 CLR R2
+000000D5: 822A STD Y+2,R2
+000000D6: E287 LDI R24,0x27
+000000D7: E091 LDI R25,0x01
+000000D8: 8399 STD Y+1,R25
+000000D9: 8388 STD Y+0,R24
+000000DA: 2722 CLR R18 ////
+000000DB: 2733 CLR R19 ////////////R19,R18值为第2个参数值,值为0,是正确的
+000000DC: E504 LDI R16,0x54 /////////
+000000DD: E010 LDI R17,0x00 ////////R17,R16的值是第一个参数值,为0x0054!
+000000DE: 940E0E0C CALL 0x00000E0C
答 1: 更奇怪的是我加了一句void(*key)(void*pt);
key=key_sCAN;
无论key_sCAN函数放在那个位置,其结果都是0x054!
主程序调用函数
OSTaskCreate(key_sCAN,(void*)0,&key_sCANStk[TASK_STK_SIZE-1],0);
其函数原型是
INT8U OSTaskCreate (void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio);
编译后看的key_sCAN的首地址为0x00d1,但传过去的数总是0x0054,
奇怪的是,要是把调用函数改为
OSTaskCreate((void*)0x00d1,(void*)0,&key_sCANStk[TASK_STK_SIZE-1],0);
传递结果就正确了~
为什么直接送数可以,送函数名怎么就不行呢?
编译器的反汇编程序
13: OSTaskCreate(key_sCAN,(void*)0,&key_sCANStk[TASK_STK_SIZE-1],0);
+000000D4: 2422 CLR R2
+000000D5: 822A STD Y+2,R2
+000000D6: E287 LDI R24,0x27
+000000D7: E091 LDI R25,0x01
+000000D8: 8399 STD Y+1,R25
+000000D9: 8388 STD Y+0,R24
+000000DA: 2722 CLR R18 ////
+000000DB: 2733 CLR R19 ////////////R19,R18值为第2个参数值,值为0,是正确的
+000000DC: E504 LDI R16,0x54 /////////
+000000DD: E010 LDI R17,0x00 ////////R17,R16的值是第一个参数值,为0x0054!
+000000DE: 940E0E0C CALL 0x00000E0C
答 1: 更奇怪的是我加了一句void(*key)(void*pt);
key=key_sCAN;
无论key_sCAN函数放在那个位置,其结果都是0x054!
共3条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |