工具/软件:TI-RTOS
您好!
我在 ISR 函数内调用一个 i2c_write 函数、但它显示了一些错误、如下所示...
Sserion 失败:a_badContext:调用上下文错误。 必须从任务调用。
xdc.runtime.Error.raise:终止执行
/* ISR 函数调用*/
ISRHandlerFunction()
{
/*完成清除标志和 LED 切换*/
(*(volatile uint32_t *) clearFlagaddr)= bit_shift;
GPIO_TOGGLE (Board_LED0);
I2cWrite();
}
/* I2C 写入功能*/
I2cWrite()
{
uint8_t vui8Count;
system_printf ("i2c write\n");
//System_flush();
/*创建 I2C 以供使用*/
I2C_Params_init (&stI2cParams);
stI2cParams.bitrate = I2C_400kHz;
stI2cHandle = I2C_open (stI2cConfig->vui8I2cBus、&stI2cParams);
if (stI2cHandle == NULL){
System_abort ("初始化 I2C\n 时出错");
}
否则{
system_printf ("I2C 已初始化!\n"\});
}
对于(vui8Count = 0;vui8Count <(stI2cConfig->vui8writeCount - 1);vui8Count++){
if (I2C_transfer (stI2cHandle、&stI2cTransaction)){
system_printf ("发送数据%d:%d \n"、vui8Count+1、stI2cConfig->pui8txbuffer);
}
否则{
System_printf ("I2C 总线故障\n");
}
//System_flush();
}
/*已取消初始化 I2C */
I2C_Close (stI2cHandle);
}
上面是实际代码、它只是一种代码格式。
如果我对 i2cWrite 函数进行注释、ISR 函数工作正常。 如果我在 ISR 内部使用、它会显示上述错误。
想知道出现此错误的原因。
此致、
Manohar