1、OS下使用,什么都不用动,定义修改为static __IO uint8_t g_i2c_busy = 0这个即可
2、你楼主位的理解有误,是所有触摸都有用busy检测
[C] 纯文本查看 复制代码 /* 获得原始的ADC值,未滤波 */
if (g_ChipID == IC_8875)
{
/* 触笔中断发生 */
if (TOUCH_PenInt())
{
if (g_tTP.fReqReadTouch == 2) /* 表示主程序正在执行 TOUCH_Scan(), 避免递归溢出 */
{
g_tTP.fReqReadTouch = 3;
}
else if (g_tTP.fReqReadTouch == 3)
{
return;
}
/* 如果主程序正在访问RA8875,则丢弃本次触摸采集,避免影响显示 */
if (RA8875_IsBusy())
{
g_tTP.fReqReadTouch = 1; /* 请求主程序空闲时读取一次触摸坐标 */
return;
}
usAdcX = RA8875_TouchReadX();
usAdcY = RA8875_TouchReadY();
}
}
else if (g_ChipID == IC_8876) /* RA8876电阻屏 */
{
/* 触笔中断发生 */
if (TOUCH_PenInt())
{
/* 如果主程序正在访问其他I2C外设,则丢弃本次触摸采集 */
if (bsp_I2CBusBusy())
{
return;
}
/* 获得原始的ADC值,未滤波 */
usAdcX = STMPE811_ReadX();
usAdcY = STMPE811_ReadY();
}
}
else
{
if (TOUCH_PenInt())
{
/* 如果主程序正在访问其他SPI外设,则丢弃本次触摸采集 */
if (bsp_SpiBusBusy())
{
return;
}
usAdcX = TSC2046_ReadAdc(ADC_CH_X);
usAdcY = TSC2046_ReadAdc(ADC_CH_Y);
}
} |