本帖最后由 Ryanhsiung 于 2011-6-23 16:59 编辑
程序写了一天,都没有写进芯片试,写进去后就挂了,(先前是对的)
我看不懂ARM的汇编,特请各位大侠指教if(Pen_Point.Key_Done) // Pen_Point.Key_Done 不管是0 是1 都是以下结果
0x08005FDC 4817 LDR r0,[pc,#92] ; @0x0800603C (这时r0 0x080075D8 或 0x08009948 )
0x08005FDE 7C80 LDRB r0,[r0,#0x12] (这时r0 为0X2000314C,这个是结构体的地址)
0x08005FE0 B158 CBZ r0,0x08005FFA (这时r0 为0X39)
最后结果出来都是不对的!(附件为这个问题的截图)
结构体定义
typedef struct
{
u16 X0;//原始坐标
u16 Y0;
u16 X; //最终/暂存坐标
u16 Y;
u8 Key_Sta;//笔的状态
//触摸屏校准参数
u8 Key_One; //用于第一次记录数据
u8 Key_Done; //按下还是松开,不能用ONE代替,因为ONE在中断中,可能虽时改变
float xfac;
float yfac;
short xoff;
short yoff;
}Pen_Holder;
103rbt6+ucos,先前是好好的,暂时找到一个解决办法:
U16 i;
i =Pen_Point.Key_Done;
再if(i) |