|
前言 本应用笔记主要演示GUIX移植到AT32 MCU的过程和方法。 本应用笔记在ThreadX OS基础上进行讲解,因此建议阅读者先看AT32的如下应用指南:AN0079_AT32_MCU_On_ThreadX_OS. 注:本应用笔记对应的代码是基于雅特力提供的V2.x.x 板级支持包(BSP)而开发,对于其他版本BSP,需要注意使用上的区别。 支持型号列表:AT32F4系列 备注:本文档仅作分享之用,仅供有需求的小伙伴们参考。 1 ThreadX在MDK移植1.1 软件资源准备移植前需要提前准备好的软件资源有: n AT32 AN0079应用指南:雅特力论坛或雅特力官网下载 n GUIX源码和GUIX Studio工具 n MDK5.30及以上版本:Keil官方下载 1.2 MDK源码工程配置STEP 1 准备Thread OS工程. 对于AT32 MCU,可直接使用AN0079工程。
STEP 2 拷贝GUIX包中的common、ports、app文件夹到\GUIX路径,同时建立app文件夹用于存放guix应用文件和移植文件 其中 n common/ports文件夹内容来自于GUIX包 n app文件夹中window_demo_resources.c、window_demo_resources.h、window_demo_specifications.c和window_demo_specifications.h由GUIX Studio工具自动生成,后面章节会有介绍。 n app文件夹中guix_task.c、guix_task.h、guix_touch_task.c和guix_touch_task.h为GUIX的移植文件。 STEP 3 将GUIX C文件导入MDK工程 STEP 4 将GUIX 应用程序C文件导入MDK工程
app文件夹中window_demo_resources.c、window_demo_resources.h、window_demo_specifications.c和window_demo_specifications.h由GUIX Studio工具自动生成,后面GUIX Studio章节会有介绍。 STEP 5 GUIX相关头文件地址添加 1.3 GUIX Studio生成应用文件GUIX studio的使用较为简单,按如下操作即可配置生成最基本的应用代码 STEP1 下载安装并安装最新版GUIX Studio STEP2 配置GUIX Studio Project -> new project –> 输入工程名和目标路径
STEP3 配置GUIXStudio config project 其中allocate canvas memory选项勾选表示使用与LCD同等大小的缓存作为画布缓存。 STEP4 插入GUIX桌面test控件,命名为Artery。 STEP5 GUIXwindow窗口配置为起始画面Startup。
该配置勾选后才可以进行仿真。 STEP6 进入仿真
点击Configure菜单,选择Screen Flow选项,选择window界面,点击run进行仿真。 STEP6 生成C源文件
点击Project菜单,选择Generate All Output Files生成C应用源文件。 STEP7 同步画布缓存名称
添加前文生成的C源文件到app文件夹,并注意与DMA源地址的缓存名称要一致。 STEP8 在MCU端编译调试
编译GUIX工程文件,并下载到AT32 MCU上观察效果。 1.4 应用代码解析n main函数介绍: | int main(void){ GPIO_InitType GPIO_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); /*initialize Delay Function*///初始化delay函数,使用systick作为时钟源。//主要用于LCD和触摸屏初始化,在OS启动后请勿调用Delay函数,/因为OS也是使用的systick作为时钟源。 Delay_init(); //初始化LED和按键 AT32_Board_Init(); //初始化LED和按键 UART_Print_Init(115200); printf("init ok\r\n"); //初始化LCD触摸屏TOUCH_PIN_Init();//初始化LCD LCD_init(); LCD_Clear(WHITE); /* Enter the ThreadX kernel. */ tx_kernel_enter( ); for(;;) { }} int main(void){ //初始化系统时钟为240 MHz system_clock_config(); //初始化LED和按键 at32_board_init(); //初始化USART1(PA9) 用作打印 usart1_init(115200); printf("init ok\r\n"); //初始化触摸屏 TOUCH_PIN_Init(); //初始化LCD LCD_init(); LCD_Clear(WHITE); /* Enter the ThreadX kernel. */ tx_kernel_enter( ); for(;;) { }} |
n 相关任务介绍 | //按键任务,检测到USER key按下后,LED3 toggle,并且会有串口打印信息AppTaskUserIF //串口打印任务,每个1000 ms打印cnt++AppTaskCOM //guix显示任务AppTaskGUI //触摸检测任务touch_thread_entry |
n buffer_toggle函数介绍: | 该函数主要用于更新画布,采用的是DMA方式,DMA传送宽度为word(32 bit),硬件自动将一次传送分解成两次16bit宽度按传送。static void at32_monochrome_buffer_toggle(GX_CANVAS *canvas, GX_RECTANGLE *dirty) | 2 示例快速使用2.1.1 硬件资源1) AT Link虚拟串口 2) AT-START-F403A V1.0 实验板
3) 8080触摸屏及转接板 注:文档中是基于AT32F403A的硬件条件为例,demo源代码还包括AT32其他型号,请编译烧录在相应AT-START开发板运行即可。 2.1.2 软件资源 1) SourceCode n AT32F4xx_GUIX_V2.0.0.zip 2) Doc n AN0079_AT32_MCU_On_GUIX_ZH_V2.0.0 注:所有project都是基于keil5而建立,若用户需要在其他编译环境上使用,请参考AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。 2.1.3 demo使用1) 通过USB下载线连接AT-START,并在串口助手找到AT Link虚拟串口 2) 通过ICP tool将AT32 MCU的224 K SRAM开启(默认96 K) 3) 打开AT32F4xx_GUIX工程源程序,编译后下载到实验板 4) 观察LED3/LED4闪烁状态和串口助手打印信息 5) 观察LCD显示画面并触摸UI显示按钮
串口助手打印信息,Task Com表示printf任务,TaskButton表示按键任务检测到user 按键输入。 视频效果展示
|