msh />psr: 0x60000000
r00: 0x20004110
r01: 0x20004130
r02: 0xffffffff
r03: 0x00000000
r04: 0x00000000
r05: 0x00000000
r06: 0x00000000
r07: 0x00000000
r08: 0x00000000
r09: 0x00400138
r10: 0x000001c2
r11: 0xdeadbeef
r12: 0x00000000
lr: 0x08003989
pc: 0x00000000
hard fault on thread: dcm250
thread pri status sp stack size max used left tick error
-------- --- ------- ---------- ---------- ------ ---------- ---
dcm250 1 running 0x0000008c 0x00000400 13% 0x00000014 -02
tshell 20 suspend 0x00000138 0x00001000 07% 0x0000000a 000
tidle0 31 ready 0x00000040 0x00000100 34% 0x0000001a 000
timer 4 suspend 0x00000070 0x00000200 25% 0x00000009 000
usage fault:
SCB_CFSR_UFSR:0x02 INVSTATE
Read_angleData(&dcm.pitch, &dcm.roll, &dcm.head);
void Read_angleData(float *pitch, float *roll, float *head)
{
uint8_t buff[32];
rt_memcpy(buff, dcm.rxbuff, dcm.rx_len+1);
if(buff[3] == 0x84)
{
*pitch = (buff[4] & 0x0F)*100 + (buff[5]>>4)*10 + (buff[5] & 0x0F) + (buff[6]>>4)*0.1 + (buff[6] & 0x0F)*0.01;
//if(buff[4] & 0xF0) *pitch = -*pitch;
*roll = (buff[7] & 0x0F)*100 + (buff[8]>>4)*10 + (buff[8] & 0x0F) + (buff[9]>>4)*0.1 + (buff[9] & 0x0F)*0.01;
//if(buff[7] & 0xF0) *roll = -*roll;
*head = (buff[10] & 0x0F)*100 + (buff[11]>>4)*10 + (buff[11] & 0x0F) + (buff[12]>>4)*0.1 + (buff[12] & 0x0F)*0.01;
//if(buff[10] & 0xF0) *head = -*head;
}
rt_memset(buff,0,sizeof(buff));
}