Алгоритм такой: обработчик прерывания от PENIRQ устанавливает флаг TOUCH_FLAG.В основном цикле идет проверка флага и считывание координат х и у следующим образом:
Код
if (TOUCH_FLAG)
{
TOUCH_FLAG=o;
Xpos=WriteSPI(SPI1,0x9C);
Ypos=WriteSPI(SPI1,0xDC);
}
//
uint8_t WriteSPI(SPI_TypeDef *SPIx, uint8_t val)
{ SPIx->DR=val;
while(!(SPI1->SR&SPI_SR_RXNE));
return SPI1->DR;
}
{
TOUCH_FLAG=o;
Xpos=WriteSPI(SPI1,0x9C);
Ypos=WriteSPI(SPI1,0xDC);
}
//
uint8_t WriteSPI(SPI_TypeDef *SPIx, uint8_t val)
{ SPIx->DR=val;
while(!(SPI1->SR&SPI_SR_RXNE));
return SPI1->DR;
}
В качестве мастрева использую камень stm32f107vc(плата SK-mstm32f107)