主题中讨论的其他器件:TM4C123
工具/软件:TI C/C++编译器
我有一个简单的问题、我的程序被困在故障 ISR 中、
下面是我被困在故障 ISR 中的代码
int writeProgMemoryBlock (const unsigned char * data、uint16_t dataSize、uint8_t bank、uint8_t address、int verify){ //返回 writeMemoryBlock (data、dataSize、bank、address、verify、 1); setMemoryBank (bank、0、0); setMemoryStartAddress (address); uint8_t chunkSize; uint8_t *验证缓冲区; uint8_t *程序缓冲区; uint16_t i; uint8_t j; if (verify) verifyBuffer =(uint8_t *) malloc (MPU6050_DMP_MEMORY_CHUNK_SIZE); if (1) progBuffer =(uint8_t *) malloc (MPU6050_DMP_MEMORY_ChUNK_SIZE); 对于(i = 0;i < dataSize;){ //根据组位置和数据大小确定正确的块大小 chunkSize = MPU6050_DMP_MEMORY_ChUNK_SIZE; //确保我们不会超过数据大小 if (i + chunkSize > dataSize) chunkSize = dataSize - I; //确保该块不会超过组边界(256字节) if (chunkSize > 256 -地址) chunkSize = 256 -地址; 如果(1){ //按指定写入数据块 对于(j = 0;j < chunkSize;j++) progBuffer[j]= PGM_READ_BYTE (data + i + j); } 否则{ //按指定写入数据块 progBuffer =(uint8_t *)数据+ i; } 对于(i = 0;0 < chunkSize;i++){ writeByte (devAddr、MPU6050_RA_MEM_R_W、progBuffer[i]); } //根据需要验证数据 if (verify && verifyBuffer){ setMemoryBank (bank、0、0); setMemoryStartAddress (address); readBytes (devAddr、MPU6050_RA_MEM_R_W、chunkSize、verifyBuffer); if (memcmp (progBuffer、verifyBuffer、chunkSize)!= 0){ FREE (验证缓冲区); if (1) free (progBuffer); 返回 false;//噢。 } } //通过[chunkSize]增加字节索引 i += chunkSize; // uint8_t 在256时自动回绕到0 address += chunkSize; //如果我们没有完成,请更新组(如果需要)和地址 if (i < dataSize){ 如果(地址= 0)组++; setMemoryBank (bank、0、0); setMemoryStartAddress (address); } } if (verify) free (verifyBuffer); if (1) free (progBuffer); 返回 true; }
当我尝试进行调试以进入此函数时、它会跳转到 FaultISR 函数。
如何确定问题的原因和解决方案?
我将 Code Composer Studio 与 TM4C123结合使用。 我正在尝试从 MPU6050读取 quaternion 值。 我完成了代码、但无法完成项目。
提前感谢