请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC1310 工具/软件:TI-RTOS
您好,团队
我使用硬件 i2c 接口读取外部存储器。 在 i2c 任务中调用 I2C_transfer()不会导致问题,但一旦将其放置在主函数中,它就会卡住。 测试 i2ctmp007示例没有问题、这证明了电路板是正常的。 为了避免其他影响、我关闭了所有任务并在主函数中仅使用了 I2C、但它仍然卡住。 原因是什么?
/* === main ==== */ int main (void) { /*调用驱动程序初始化函数。 * Board_initGeneral(); /*构造要用作资源锁定的信标对象,初始计数1 */ Semaphore_Params ledsemParams; Semaphore_Params_init (&ledsemParams); Semaphore_construction (&ledsemStruct, 1,&ledsemParams); /*获取实例句柄*/ ledsemHandle = Semaphore_handle (&ledsemStructe); uint8_t txBuffer[2]; uint8_t rxBuffer[2]={0、0}; I2C_Handle I2C; I2C_Params i2cParams; I2C_Transaction i2cTransaction; FM24V10_VDD_ON (); GPIO_init(); I2C_init(); /*创建 I2C 以供使用*/ I2C_Params_init (&i2cParams); i2cParams.bitrate = I2C_100kHz; I2C = I2C_open (Board_I2C0、&i2cParams); if (i2c == NULL){ while (1); } TxBuffer[0]= 0x00; TxBuffer[1]= 0x00; i2cTransaction.slaveAddress = 0x50; i2cTransaction.writeBuf =(uint8_t*) txBuffer; i2cTransaction.writeCount = 2; i2cTransaction.readBuf =(uint8_t*) rxBuffer; i2cTransaction.ReadCount = 2; uint8_t 结果= I2C_transfer (i2c、&i2cTransaction); /*初始化所有任务*/ //i2cTaskInit(); //rxTaskInit(); //uartTaskInit(); /*启动 BIOS */ BIOS_start(); 返回(0); }
