Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
GUI
移植RTGUI后,使用RealBoard4088的按键驱动切换画面,出现一次按键,触发两次事件的异常
发布于 2014-12-12 12:23:33 浏览:3442
订阅该版
昨天移植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.4k
关于作者
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
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
国产MCU移植系列教程汇总,欢迎查看!
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 Vision Board - Bare Metal Project with VSCode/PyOCD/Cortex-Debug
2
【学习分享】libc切换 -- 从newlib切换到mlibc
3
FRDM-MCXN947开发板之i2c应用
4
esp32 s3使用cherryusb cdc
5
【Vision Board 创客营】Vision Board上的DAC实践
热门标签
RT-Thread Studio
串口
LWIP
SPI
Env
Bootloader
AT
ART-Pi
Hardfault
CAN总线
FinSH
USB
文件系统
DMA
RT-Thread
SCons
线程
RT-Thread Nano
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
ota在线升级
WIZnet_W5500
I2C_IIC
UART
flash
cubemx
packages_软件包
freemodbus
潘多拉开发板_Pandora
PWM
定时器
ADC
BSP
中断
编译报错
socket
keil_MDK
GD32
MicroPython
msh
Debug
ulog
SFUD
flashDB
SDIO总线
rt_mq_消息队列_msg_queue
本月问答贡献
用户名由3_15位
19
个答案
3
次被采纳
xiaorui
7
个答案
3
次被采纳
sakumisu
4
个答案
3
次被采纳
踩姑娘的小蘑菇
15
个答案
2
次被采纳
三世执戟
32
个答案
1
次被采纳
本月文章贡献
比特饼干
3
篇文章
8
次点赞
Z_Y
2
篇文章
5
次点赞
Alipay
2
篇文章
3
次点赞
xusiwei1236
2
篇文章
3
次点赞
yinxiangxv
2
篇文章
3
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部