Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
GUI
移植RTGUI后,使用RealBoard4088的按键驱动切换画面,出现一次按键,触发两次事件的异常
发布于 2014-12-12 12:23:33 浏览:3614
订阅该版
昨天移植RTGUI后,使用按键的方式触发画面切换,发现一次按键会触发两次画面切换,调试发现一次按键会想RTGUI发送两次kbd事件。最后发现是按键处理线程出现了问题,但是实在找不出出现这个问题的原因,这里贴出我调试的过程,恳求坛友帮助。 以下是按键处理线程代码(这是使用RealBoard4088中的按键驱动): ```static void key_thread_entry(void *parameter) { rt_time_t next_delay; struct rtgui_event_kbd kbd_event; key_gpio_config(); /* init keyboard event */ RTGUI_EVENT_KBD_INIT(&kbd_event); kbd_event.wid = RT_NULL; kbd_event.mod = RTGUI_KMOD_NONE; kbd_event.unicode = 0; while (1) { next_delay = 10; kbd_event.key = RTGUIK_UNKNOWN; kbd_event.type = RTGUI_KEYDOWN; if (key_left_GETVALUE() == 0) { rt_thread_delay(next_delay*2); if(key_left_GETVALUE() == 0) { rt_kprintf("key_left "); kbd_event.key = RTGUIK_LEFT; } } if (key_right_GETVALUE() == 0) { rt_thread_delay(next_delay*2); if(key_right_GETVALUE() == 0) { rt_kprintf("key_right "); kbd_event.key = RTGUIK_RIGHT; } } if (kbd_event.key != RTGUIK_UNKNOWN) { /* post down event */ rtgui_server_post_event(&(kbd_event.parent), sizeof(kbd_event)); next_delay = 10; /* delay to post up event */ rt_thread_delay(next_delay); /* post up event */ kbd_event.type = RTGUI_KEYUP; rtgui_server_post_event(&(kbd_event.parent), sizeof(kbd_event)); } /* wait next key press */ rt_thread_delay(next_delay); } }``` 这段代码最后几行代码执行很奇怪,当有按键被检测到后,先向RTGUI发送按下事件,延时一段时间后,再发送弹起事件,但是在执行了最后的```rt_thread_delay(next_delay);```后,程序竟然很诡异地跑到 ```/* post up event */ kbd_event.type = RTGUI_KEYUP; rtgui_server_post_event(&(kbd_event.parent), sizeof(kbd_event));``` 又重新执行了一次,而且程序也并没有执行更前面的代码。 也就是说程序在执行了一段程序后,突然跳转到这段代码的中间位置执行了一次,我想破脑袋也不知道是怎么一回事。 另外,如果是在最后一行代码使用step over进行调试,程序可以顺利跳转到while的起始位置(不过还是触发两次),而使用全速运行的话,就会跳转到中间那个奇怪的位置。 在这里向各各位坛友肯求帮助,谢谢! rt-thread版本:1.2.3 RTGUI版本:0.8 调试环境:KEIL MDK-ARM 5.0.5 硬件平台:stm32F103VE
查看更多
9
个回答
默认排序
按发布时间排序
sun723
2014-12-12
这家伙很懒,什么也没写!
之前都怀疑keil有BUG了,但是刚刚使用IAR工程,问题一样。 发现另外一个现象,如果将调试断点设定在 ``` /* post up event */ kbd_event.type = RTGUI_KEYUP; rtgui_server_post_event(&(kbd_event.parent), sizeof(kbd_event)); ``` 前一行代码 ``` rt_thread_delay(next_delay); ``` 处,代码调试正常。不知道这又是什么原因。
sun723
2014-12-12
这家伙很懒,什么也没写!
将RTGUI替换为github上master分支上最新版本后,问题依旧。
sun723
2014-12-13
这家伙很懒,什么也没写!
打印了1000多页的stemwin资料,准备转战场了,RTGUI带着慢慢研究吧
bernard
2014-12-14
这家伙很懒,什么也没写!
这个估计是一些细节性的问题,因为你用的是STM32,所以两次刷新后会出现屏幕闪烁,而LPC4088采用的双缓冲方式,所以两次刷新的问题被掩盖掉了,后续仔细查查,也是时候考虑发布1.0版本了
sun723
2014-12-15
这家伙很懒,什么也没写!
>这个估计是一些细节性的问题,因为你用的是STM32,所以两次刷新后会出现屏幕闪烁,而LPC4088采用的双缓冲方式,所以两次刷新的问题被掩盖掉了,后续仔细查查,也是时候考虑发布1.0版本了 --- 感谢,非常期待。
grissiom
2014-12-15
这家伙很懒,什么也没写!
代码乱跳的问题,跟 RTGUI 没什么关系~ 没准是栈写穿了之类的……
bernard
2014-12-15
这家伙很懒,什么也没写!
乱跳,也可能是开了代码优化,然后用优化的代码来调试
sun723
2014-12-16
这家伙很懒,什么也没写!
代码优化倒是没有开启,一直都是最低级的状态在调试。栈的问题就不是很清楚了,有时间好好研究研究。谢谢两位的回答。
撰写答案
登录
注册新账号
关注者
0
被浏览
3.6k
关于作者
sun723
这家伙很懒,什么也没写!
提问
4
回答
25
被采纳
0
关注TA
发私信
相关问题
1
[已解决]创建GUI显示线程,出现bus fault错误应该怎么解?
2
【已解决】keil中添加rtgui的demo程序的问题
3
RT-GUI触摸BUG?
4
【已解决】请问:如何把example目录下rtgui的例子添加到工程中
5
RT-GUI不需要开辟一块和屏尺寸相同的存储空间记录屏幕上的数据吗?
6
RT-GUI开发疑问?
7
RTGUI 发送消息队列失败
8
gui的汉字字库能只挑出自己使用的汉字编译吗?
9
建议RTGUI的汉字和BMP等方框绘图增加窗口支持
10
rt-gui 出现这个错误
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【RT-Thread】【ci】【scons】将ci.attachconfig.yml和scons结合使用
2
Rt-thread中OTA下载后,bootloader不搬程序
3
ulog 日志 LOG_HEX 输出时间改为本地日期时间
4
在RT-Thread Studio中构建前执行python命令
5
研究一了一段时间RTT,直接标准版上手太难,想用nano,但又舍不得组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
cubemx
PWM
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
xusiwei1236
8
个答案
2
次被采纳
踩姑娘的小蘑菇
1
个答案
2
次被采纳
用户名由3_15位
9
个答案
1
次被采纳
bernard
4
个答案
1
次被采纳
RTT_逍遥
3
个答案
1
次被采纳
本月文章贡献
聚散无由
2
篇文章
15
次点赞
catcatbing
2
篇文章
5
次点赞
Wade
2
篇文章
4
次点赞
Ghost_Girls
1
篇文章
7
次点赞
xiaorui
1
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部