共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网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【笔记】生成报错synthdesignERROR被打赏50分 | |
【STM32H7S78-DK评测】LTDC+DMA2D驱动RGBLCD屏幕被打赏50分 | |
【STM32H7S78-DK评测】Coremark基准测试被打赏50分 | |
【STM32H7S78-DK评测】浮点数计算性能测试被打赏50分 | |
【STM32H7S78-DK评测】Execute in place(XIP)模式学习笔记被打赏50分 | |
每周了解几个硬件知识+buckboost电路(五)被打赏10分 | |
【换取逻辑分析仪】RA8 PMU 模块功能寄存器功能说明被打赏20分 | |
野火启明6M5适配SPI被打赏20分 | |
NUCLEO-U083RC学习历程2-串口输出测试被打赏20分 | |
【笔记】STM32CUBEIDE的Noruletomaketarget编译问题被打赏50分 |