硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2908|回复: 5
收起左侧

[emWin] 为何设置断点后起始位置不在main

[复制链接]

16

主题

31

回帖

79

积分

初级会员

积分
79
发表于 2019-10-11 17:54:07 | 显示全部楼层 |阅读模式
下面是我的程序,附件图中是keil仿真时设置的断点位置。当进行仿真时,最先跳到的位置不是BOARD_InitPins();这个位置,而是
hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
这是怎么回事呢,哪里设置的不对?请指教

int main(void)
{
BOARD_ConfigMPU();
BOARD_BootClockRUN();
BOARD_InitPins();
BOARD_InitDebugConsole();
SysTick_Init();


GUI_Init();
WM_MULTIBUF_Enable(1);
WM_SetCreateFlags(WM_CF_MEMDEV);// Auto. use Memory Devices on all windows
WM_SetDesktopColor(GUI_GREEN);
GUI_SetBkColor(GUI_WHITE);
GUI_Clear();
GUI_SetColor(GUI_RED);
TP_En=1;
GUI_PID_GetState(&State);
GUI_PID_GetState(&State);
GUI_PID_GetState(&State);
GUI_PID_GetState(&State);
GUI_PID_GetState(&State);
hItem=CreateWindow();


while (1)
{

        test=test+1;
         GUI_PID_GetCurrentState(&State);
                if (State.Pressed == 1)
                {
                        test=test+1;
                        GUI_SetPenSize(5);
                        GUI_FillCircle(State.x, State.y, 20);
                }
                        /* 为了防止游标不显示或者不跟着移动,这里添加如下函数 */
                GUI_Delay(100);//GUI_Delay函数内部调用了GUI_Exec()函数
}
}

1.PNG
2.PNG
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115785
QQ
发表于 2019-10-11 17:56:36 | 显示全部楼层
设置优化等级为0,另外注意工程路径切不可有中文
回复

使用道具 举报

16

主题

31

回帖

79

积分

初级会员

积分
79
 楼主| 发表于 2019-10-12 10:57:21 | 显示全部楼层
eric2013 发表于 2019-10-11 17:56
设置优化等级为0,另外注意工程路径切不可有中文

针对您的回复,我说明下,我的路径是全英文,优化等级原来是level 0,后来出现数据错误,更改为default(level 2),改完后数据正常。我将在另外一篇帖子中将截图发出。

按照您的提议,我分别将优化等级设为0和2,并且在main函数中加入了printf函数,且都进行了仿真。
int main(void)
{
BOARD_ConfigMPU();
BOARD_BootClockRUN();
BOARD_InitPins();
BOARD_InitDebugConsole();
SysTick_Init();

PRINTF("\r\n hello world 你好世界!\r\n");


GUI_Init();
WM_MULTIBUF_Enable(1);
WM_SetCreateFlags(WM_CF_MEMDEV);// Auto. use Memory Devices on all windows
WM_SetDesktopColor(GUI_GREEN);
GUI_SetBkColor(GUI_WHITE);
GUI_Clear();
GUI_SetColor(GUI_RED);
TP_En=1;
GUI_PID_GetState(&State);
GUI_PID_GetState(&State);
GUI_PID_GetState(&State);
GUI_PID_GetState(&State);
GUI_PID_GetState(&State);
hItem=CreateWindow();


while (1)
{

        test=test+1;
         GUI_PID_GetCurrentState(&State);
                if (State.Pressed == 1)
                {
                        test=test+1;
                        GUI_SetPenSize(5);
                        GUI_FillCircle(State.x, State.y, 20);
                }
                        /* 为了防止游标不显示或者不跟着移动,这里添加如下函数 */
                GUI_Delay(100);//GUI_Delay函数内部调用了GUI_Exec()函数
}
}

我在程序的
hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);,

BOARD_InitPins();,

PRINTF("\r\n hello world 你好世界!\r\n");

这三个点设置了断点。

仿真的结果是,不论level0还是level 2,debug时刚开始先跳到hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);,

然后回到main函数的BOARD_InitPins();,

紧接着PRINTF("\r\n hello world 你好世界!\r\n");,

且BOARD_InitPins();和PRINTF("\r\n hello world 你好世界!\r\n");来两遍,

第一遍PRINTF("\r\n hello world 你好世界!\r\n");不能打印出东西来,第二遍从串口打印出数据。

这是为什么呢?


说明一下:GUI_CreateDialogBox函数为CreateWindow的子函数




回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115785
QQ
发表于 2019-10-12 12:49:24 | 显示全部楼层
lyw851230 发表于 2019-10-12 10:57
针对您的回复,我说明下,我的路径是全英文,优化等级原来是level 0,后来出现数据错误,更改为default(l ...

实在不行就还用串口打印吧。

你用的是不是1052,这个跟我们通常的单片机直接在Flash还有点区别。
回复

使用道具 举报

16

主题

31

回帖

79

积分

初级会员

积分
79
 楼主| 发表于 2019-10-12 13:07:02 | 显示全部楼层
eric2013 发表于 2019-10-12 12:49
实在不行就还用串口打印吧。

你用的是不是1052,这个跟我们通常的单片机直接在Flash还有点区别。

是1052,运行时区别在哪里?能给说说么?
回复

使用道具 举报

16

主题

31

回帖

79

积分

初级会员

积分
79
 楼主| 发表于 2019-10-12 13:08:45 | 显示全部楼层
eric2013 发表于 2019-10-12 12:49
实在不行就还用串口打印吧。

你用的是不是1052,这个跟我们通常的单片机直接在Flash还有点区别。

硬汉哥,我指的串口打印就是语句PRINTF,等于这条语句运行了两次,只有第二次输出了数据
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-18 09:52 , Processed in 0.450008 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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