TI中文支持网
TI专业的中文技术问题搜集分享网站

cc1310参考rfeasylink代码,使用的IAR编译环境,附件就是我现在会死机的源代码,只需要rfEasyLinkRx.c文件把下面代码注释掉就不会死机了,也就是不创建第三个任务,在开发板上可以复线。 死机好像死在swi线程,代码我没有创建swi任务 uartTaskParams.stackSize = RFEASYLINKEX_TASK_STACK_SIZE; uartTaskParams.priority = RFEASYLINKEX_TASK_PRIORITY

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, &regionAttrs);
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

赞(0)
未经允许不得转载:TI中文支持网 » cc1310参考rfeasylink代码,使用的IAR编译环境,附件就是我现在会死机的源代码,只需要rfEasyLinkRx.c文件把下面代码注释掉就不会死机了,也就是不创建第三个任务,在开发板上可以复线。 死机好像死在swi线程,代码我没有创建swi任务 uartTaskParams.stackSize = RFEASYLINKEX_TASK_STACK_SIZE; uartTaskParams.priority = RFEASYLINKEX_TASK_PRIORITY
分享到: 更多 (0)