关于向uCOS-II添加驱动的问题
发布网友
发布时间:2023-01-23 11:56
我来回答
共3个回答
热心网友
时间:2024-09-03 02:58
触屏驱动一般是只和你使用的GUI有关,所以你应该在你的驱动目录下添加对触摸屏进行良好封装的驱动程序(如:TouchPanel.h/TouchPanel.c),然后在看一下你用的UCOS系统下用的是什么样的GUI,把触屏驱动中的接口整合到你的GUI中去。
热心网友
时间:2024-09-03 02:58
驱动与你所用的gui程序有关,建议查看gui的移植说明。
热心网友
时间:2024-09-03 02:59
你去中国电子开发网 那里有个STM32/STM8技术讨论区 那里面有你想要的 呵呵 你这个是那么容易就测试成功的 你去那问问 好运! 下面这个你回头有用 建个文本存起来先 具体怎么测试那论坛里面有 不成再问我吧
void Touch_Config(void)
{
SPI_InitTypeDef SPI_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
/* PB15-MOSI2,PB13-SCK2,PB14-MISO2*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
/* PB0-CS*/
GPIO_SetBits(GPIOB, GPIO_Pin_0);//预置为高
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
/*PB12-INT,输入*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉
GPIO_Init(GPIOB, &GPIO_InitStructure);
/* SPI2 configuration */
SPI_Cmd(SPI2, DISABLE); //必须先禁能,才能改变MODE
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //两线全双工
SPI_InitStructure.SPI_Mode = SPI_Mode_Master; //主
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; //8位
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; //CPOL=1 时钟悬空x
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; //CPHA=1 数据捕获第x
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; //软件NSS
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16; //72M/16
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //高位在前
SPI_InitStructure.SPI_CRCPolynomial = 7; //CRC7
SPI_Init(SPI2, &SPI_InitStructure);
SPI_Cmd(SPI2, ENABLE);
}
//不触摸的时候返回0
static u16 GetTouchX(void)
{
u16 tmp_x;
CSTOUCH_L;
// delay();
SPIByte(0xd0);
// delay();
tmp_x=SPIByte(0);
tmp_x<<=8;
tmp_x|=SPIByte(0);
tmp_x>>=3;
CSTOUCH_H;
return tmp_x;
}
//不触摸的时候返回0xfff
static u16 GetTouchY(void)
{
u16 tmp_y;
CSTOUCH_L;
// delay();
SPIByte(0x90); //命令行 90-power-down
// delay();
tmp_y=SPIByte(0);
tmp_y<<=8;
tmp_y|=SPIByte(0);
tmp_y>>=3;
CSTOUCH_H;
return tmp_y;
}