初级会员

- 积分
- 107
- 金钱
- 107
- 注册时间
- 2017-6-20
- 在线时间
- 23 小时
|
1金钱
本帖最后由 qgyhd1234 于 2017-11-12 13:53 编辑
工程是在EMWIN实验1 STemWin无操作系统移植的基础上改的,自己加了freertos进去,因为freertos用了滴答定时器,删除了原子的delay初始化函数,ms延时用hal_delay代替,us延时直接用nop循环代替,现在freertos系统和ewmin跑了起来,但是有2个问题
1手指在电容屏上不动,,显示的鼠标箭头会漂,裸机跑emwin时无此现象
2emwin跑到demo3.0/14 Antialiased text samole时会进入hardfault。
[mw_shl_code=c,true]int main(void){
Write_Through(); //Cahce强制透写
MPU_Memory_Protection(); //保护相关存储区域
Cache_Enable(); //打开L1-Cache
Stm32_Clock_Init(432,25,2,9); //设置时钟,216Mhz
HAL_Init(); //初始化HAL库
uart_init(115200); //串口初始化
KEY_Init(); //按键初始化
LED_Init(); //初始化LED
SDRAM_Init(); //SDRAM初始化
TFTLCD_Init(); //初始化LCD
TP_Init(); //触摸屏初始化
my_mem_init(SRAMIN); //初始化内部内存池
my_mem_init(SRAMEX); //初始化外部SDRAM内存池
my_mem_init(SRAMDTCM); //初始化内部DTCM内存池
__HAL_RCC_CRC_CLK_ENABLE(); //使能CRC时钟
WM_SetCreateFlags(WM_CF_MEMDEV);//开启STemWin存储设备
GUI_Init();
WM_MULTIBUF_Enable(1); //开启STemWin多缓冲,RGB屏可能会用到
osThreadDef(DefaultTask, DefaultStartTask, osPriorityNormal, 0, 128);
defaultTaskHandle = osThreadCreate(osThread(DefaultTask), NULL);
osKernelStart();
while(1)
{
}
}
void ledTask(void const * argument)
{
for(;;)
{
LED0(0);
LED1(1);
vTaskDelay(500);
LED0(1);
LED1(0);
vTaskDelay(500);
}
}
void touchTask(void const * argument)
{
for(;;)
{
GUI_TOUCH_Exec();
vTaskDelay(10);
}
}
void stemwin(void const * argument)
{
for(;;)
{
GUIDEMO_Main();
}
}
void DefaultStartTask(void const * argument)
{
osThreadDef(ledTask, ledTask, osPriorityLow, 0, 56);
ledTaskHandle = osThreadCreate(osThread(ledTask), NULL);
osThreadDef(touchTask, touchTask, osPriorityLow, 0, 128);
touchTaskHandle = osThreadCreate(osThread(touchTask), NULL);
osThreadDef(stemwin, stemwin, osPriorityNormal, 0, 512);
stemwinTaskHandle = osThreadCreate(osThread(stemwin), NULL);
vTaskDelete(defaultTaskHandle);
}[/mw_shl_code]
希望有大神能帮我看看哪儿出了问题
freertos STemWin.rar
(5.1 MB, 下载次数: 416)
|
|