高级会员
- 积分
- 513
- 金钱
- 513
- 注册时间
- 2018-4-6
- 在线时间
- 93 小时
|
1金钱
这几天移植emwin,裸机移植。移植成功,位图、文本等均显示正常,但触摸按键时根据官方示例代码,在硬件上下载会卡死在GUI_WiatKey()这个函数里面。
主函数:
static void _DemoButton(void) {
BUTTON_Handle hButton;
int val = 0;
GUI_SetFont(&GUI_Font8x16);
GUI_DispStringHCenterAt("Click on button...", 160, 90);
//
// Create the button and set text
//
hButton = BUTTON_Create(110, 110, 100, 40, GUI_ID_OK, WM_CF_SHOW);
WM_Paint(huwin);
BUTTON_SetText(hButton, "Click me...");
//
// Let window manager handle the button
//
val = GUI_WaitKey(); //没有返回值,移植卡在这里,但触摸点正常,开启CRC时钟
printf("ok\r\n");
while (val != GUI_ID_OK)
{
printf("GUI_WAITKEY() = %d\r\n",val);
val = GUI_WaitKey();
}
//
// Delete the button
//
BUTTON_Delete(hButton);
GUI_ClearRect(0, 50, 319, 239);
GUI_Delay(1000);
}
int main(void)
{
//PROGBAR_Handle ahProgBar[2];
RCC->AHB1ENR |= 1 << 12; //使能CRC时钟
//SystemInit();
MYNVIC_SetProprity(5,0,0,USART1_IRQn);
MYNVIC_SetProprity(5,0,1,TIM7_IRQn);
MYNVIC_SetProprity(5,0,2,TIM6_DAC_IRQn);
Delay_init(168);
Usart1_Init(115200, 84);
TIM7_IRQ_Init(); //1ms定时,提供给emwin的时钟
Tim6_Init();
AT24C02_Init();
TFTLCD_Init();
TP_Init();
key_Init();
FSMC_SRAM_Init(); //初始化外部SRAM
my_mem_init(SRAMIN); //初始化内部内存池
my_mem_init(SRAMEX); //初始化外部内存池
my_mem_init(SRAMCCM); //初始化CCM内存池
// WM_SetCreateFlags(WM_CF_MEMDEV);
// GUI_Init();
// GUIDEMO_Main();
GUI_Init();
_DemoButton(); //运行官方的示例代码,调试卡在GUI_WaitKey()
while(1)
{
}
}
在TP_Read_XOY()函数中打印调试信息,只要有触摸按下就打印触摸点信息,串口也能正常显示该点的x,y原始数据。
是按照原子哥的例程来的,也移植了触摸屏函数。不知道问题出现在哪,特来寻求帮助
|
最佳答案
查看完整内容[请看2#楼]
问题解决:
没有在LCD_X_Config()函数 中添加
GUI_TOUCH_SetOrientation(GUI_SWAP_XY|GUI_MIRROR_Y);
GUI_TOUCH_Calibrate(GUI_COORD_X,0,320,3950,400);
GUI_TOUCH_Calibrate(GUI_COORD_Y,0,480,3920,260);
|