-
新建一个 RT-thread 工程
-
参照 RT-thread 官方推出的 Env 用户手册,安装好 Env 开发工具
-
在工程目录下,打开 Env 开发工具,初始使用,可以输入
pkgs --upgrade
命令更新 packages -
在工程目录下,输入
menuconfig
,打开配置 -
找到 “RT-Thread online packages -> miscellaneous packages -> entertainment -> TinySquare”
-
按需勾选相应的选项,初次使用推荐勾选一个 example,这里在工程中加入贪吃蛇的 example
-
保存,退出配置
-
使用
pkgs --update
命令更新 packages -
以 keil 为例,使用 scons 进行构建
-
为外设配置相关的驱动
-
对于 LCD 驱动,需要实现一个绘制函数
Disp0_DrawBitmap
,具体要求参见 Arm-2D 库的 Preparation 章节 -
打开 packages/TinySquare 路径下的 port 目录
-
为了接受游戏事件的输入,还需配置按键驱动,需要编写一个函数,将按键事件的按下与抬起,捕获到引擎的事件处理机制中,仅需要参考
tnsq_evt_itc_put
函数的 API,实现相关功能即可static void _pressed_high_level_key_handler(GPIO_TypeDef *GPIO_PORT, uint16_t GPIO_PIN, tnsq_evt_key_value_t tValue) { tnsq_evt_key_t tEvtKey = {0}; GPIO_PinState state = HAL_GPIO_ReadPin(GPIO_PORT, GPIO_PIN); if (state != GPIO_PIN_RESET) { tEvtKey = (tnsq_evt_key_t) { .tKeyValue = tValue, .tEvent = TNSQ_EVT_KEY_EVENT_DOWN, }; tnsq_evt_itc_put(&tEvtKey); } else { tEvtKey = (tnsq_evt_key_t) { .tKeyValue = tValue, .tEvent = TNSQ_EVT_KEY_EVENT_UP, }; tnsq_evt_itc_put(&tEvtKey); } }
-
至此,C 环境下相关库就移植好了,只需要
#include tiny_square.h
,调用arm_2d_init
和tnsq_init
函数,引擎就顺利的运行起来了arm_irq_safe { arm_2d_init(); tnsq_init(); }
-
运行贪吃蛇例程
rt_thread_t gameTid = RT_NULL; gameTid = rt_thread_create("tnsq_snake", snake_task_entry, RT_NULL, THREAD_STACK_SIZE, THREAD_PRIORITY-2, THREAD_TIMESLICE); if (gameTid != RT_NULL) { rt_thread_startup(gameTid); }