OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 137|回复: 5

freertos+stemwin移植问题

[复制链接]

  离线 

5

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2017-6-20
在线时间
11 小时
发表于 7 天前 | 显示全部楼层 |阅读模式
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。
[C] 纯文本查看 复制代码
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);
	  
}



希望有大神能帮我看看哪儿出了问题
freertos STemWin.rar (5.1 MB, 下载次数: 8)

回复

使用道具 举报

  离线 

482

主题

8万

帖子

30

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
117111
金钱
117111
注册时间
2010-12-1
在线时间
898 小时
发表于 6 天前 | 显示全部楼层
回复

使用道具 举报

  离线 

5

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2017-6-20
在线时间
11 小时
 楼主| 发表于 4 天前 | 显示全部楼层

原子哥,卡在第三个演示的问题找到了,lib版本不对,我用你们提供的工程模版移植的,你们用的是3.0,我下的版本是3.2,改回3.0的lib库就好了,但是手指放在屏幕上,鼠标还是乱飘.....这个能给点思路吗?我也没碰你们给的触摸驱动啊,很奇怪裸机没问题,上了系统就乱飘
回复

使用道具 举报

  离线 

482

主题

8万

帖子

30

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
117111
金钱
117111
注册时间
2010-12-1
在线时间
898 小时
发表于 3 天前 | 显示全部楼层
qgyhd1234 发表于 2017-11-15 00:51
原子哥,卡在第三个演示的问题找到了,lib版本不对,我用你们提供的工程模版移植的,你们用的是3.0,我下 ...

printf坐标数据,看看变化规律么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
微信公众平台:正点原子   点击扫码添加
回复

使用道具 举报

  离线 

5

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2017-6-20
在线时间
11 小时
 楼主| 发表于 昨天 15:58 | 显示全部楼层
正点原子 发表于 2017-11-16 01:35
printf坐标数据,看看变化规律么?

我看了下数据,不是随机漂的,大部分点都是x坐标不变,只是y坐标在固定的留两个数值间跳动(x:257,Y:285<->385;),不同的点跳的坐标是不同的(x:275,y相差100,x:109,y相差25),少数是x也跳,而且跳动没啥规律,有时向左200,有时向右300,有时左右+-10
回复

使用道具 举报

  离线 

482

主题

8万

帖子

30

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
117111
金钱
117111
注册时间
2010-12-1
在线时间
898 小时
发表于 16 小时前 | 显示全部楼层
qgyhd1234 发表于 2017-11-18 15:58
我看了下数据,不是随机漂的,大部分点都是x坐标不变,只是y坐标在固定的留两个数值间跳动(x:257,Y:28 ...

可能你的触摸屏稳定性不行了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
微信公众平台:正点原子   点击扫码添加
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2017-11-19 16:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */