rfEasyLinkRx.rar
Felix ZF:
问题出在你的下面这部分代码里
if(mag3310_init() == 0){}NVS_init();NVS_Params_init(&nvsParams);nvsHandle = NVS_open(Board_NVS0, &nvsParams);if (nvsHandle == NULL) {while (1);}NVS_getAttrs(nvsHandle, ®ionAttrs);
txBuffer[0] = 0x00; i2cTransaction.slaveAddress = Board_MAG3310_ADDR;i2cTransaction.writeBuf = txBuffer;i2cTransaction.writeCount = 1;i2cTransaction.readBuf = rxBuffer;i2cTransaction.readCount = 1;I2C_transfer(i2c, &i2cTransaction);if(rxBuffer[0] & 0x08){get_mag3110_data();}
mem_init();UartInit();if(NbIot_Init() != 0){if(NbIot_Init() != 0){if(NbIot_Init() != 0){//while(1);}}}n = 0;m = 0;
Felix ZF:
在进一步
问题在这里面
txBuffer[0] = 0x00; i2cTransaction.slaveAddress = Board_MAG3310_ADDR;i2cTransaction.writeBuf = txBuffer;i2cTransaction.writeCount = 1;i2cTransaction.readBuf = rxBuffer;i2cTransaction.readCount = 1;I2C_transfer(i2c, &i2cTransaction);if(rxBuffer[0] & 0x08){get_mag3110_data();}
user5174319:
回复 Felix ZF:
跟这块代码应该是没有关系,如果我把RFEASYLINKTX_TASK_STACK_SIZE从1024修改为2048时死机的地方又会变为其它地方了,或者修改任务优先级也会导致死机的地方不同。同时如果UartThread任务不创建就不会死机了,所以理论上说不过去。我也测试过i2c相关的代码都去掉还是会死机的
Felix ZF:
回复 user5174319:
我之前试过你的代码,屏蔽掉这块代码之后,就没有问题了。
另外,你可以使用task_construct来创建task
Loops:
你好。如果采用Felix_ZF 的建议还是会有问题,请参考下我们的这个帖子。看是否是一个问题。e2e.ti.com/…/666835