OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 146|回复: 0

分享如何在AT32微控制器上移植GUIX

[复制链接]

32

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
131
金钱
131
注册时间
2024-12-9
在线时间
7 小时
发表于 4 天前 | 显示全部楼层 |阅读模式
前言
本应用笔记主要演示GUIX移植到AT32 MCU的过程和方法。
本应用笔记在ThreadX OS基础上进行讲解,因此建议阅读者先看AT32的如下应用指南:AN0079_AT32_MCU_On_ThreadX_OS.
:本应用笔记对应的代码是基于雅特力提供的V2.x.x 板级支持包(BSP)而开发对于其他版本BSP需要注意使用上的区别
支持型号列表:AT32F4系列
备注:本文档仅作分享之用,仅供有需求的小伙伴们参考。
1                 ThreadXMDK移植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
GUIX Studio官方下载地址:https://github.com/azure-rtos/guix/releases
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 按键输入。
视频效果展示





回复

使用道具 举报

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

本版积分规则


关闭

原子哥极力推荐上一条 /1 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2026-3-8 18:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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