2.AT32F403A例程之-STemWin移植

文章目录

  • 前言
  • 一、STemWin下载
  • 二、STemWin的LCD接口介绍
  • 三、雅特力AT32F403A工程准备
  • 四、雅特力AT32F403A的LCD调试。
    • 1.第一个画点函数:
    • 2.第二个读点函数:
    • 3.第三个填充函数:
  • 五、STemWin文件移植
    • 1.在雅特力AT32F403A工程中添加以下文件
  • 六、STemWin文件修改
    • 1.LCDConf_FlexColor_Template.c
    • 2.GUIDRV_Template.c
    • 3.GUIConf.c
    • 4.at32f403a_407_int.c
    • 5.main.c测试
  • 七、程序下载

前言

目前没有找到关于雅特力AT32F403A的STemWin的移植,所以花一点时间记录一下移植的过程,以帮助更多需要的人。


一、STemWin下载

STemWin可以在ST官网下载:
https://www.st.com/content/st_com/zh/search.html#q=STEMWIN-t=tools-page=1

二、STemWin的LCD接口介绍

移植STemWin有两种方法,
第一种:用户接口,
在LCDConf_FlexColor_Template.c 中的LCD_X_Config函数中的设置为

GUI_DEVICE_CreateAndLink(&GUIDRV_Template_API, GUICC_M565, 0, 0);

第二种,STemWin接口

 GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLOR, GUICC_M565, 0, 0);

本例程主要介绍第一种接口的使用方法。

三、雅特力AT32F403A工程准备

四、雅特力AT32F403A的LCD调试。

本例程STemWin用的是用户接口,所以要先调试好LCD,准备好三个函数

1.第一个画点函数:

LCD_DrawPoint(u16 x,u16 y,u16 color);

2.第二个读点函数:

u16  LCD_ReadPoint(u16 x,u16 y);

3.第三个填充函数:

void LCD_Fill(u16 xsta,u16 ysta,u16 xend,u16 yend,u16 color);

五、STemWin文件移植

1.在雅特力AT32F403A工程中添加以下文件

六、STemWin文件修改

1.LCDConf_FlexColor_Template.c

修改现实屏大小

#define XSIZE_PHYS  320+1 // To be adapted to x-screen size
#define YSIZE_PHYS  240+1 // To be adapted to y-screen size

修改用户接口

void LCD_X_Config(void)
{//  GUI_DEVICE * pDevice;
//  CONFIG_FLEXCOLOR Config = {0};
//  GUI_PORT_API PortAPI = {0};//// Set display driver and color conversion//设定用户接口模式GUI_DEVICE_CreateAndLink(&GUIDRV_Template_API, GUICC_M565, 0, 0);//// Display driver configuration, required for Lin-driver//LCD_SetSizeEx (0, XSIZE_PHYS , YSIZE_PHYS);LCD_SetVSizeEx(0, VXSIZE_PHYS, VYSIZE_PHYS);
//  //
//  // Orientation
//  //
//  Config.Orientation = GUI_SWAP_XY | GUI_MIRROR_Y;
//  GUIDRV_FlexColor_Config(pDevice, &Config);
//  //
//  // Set controller and operation mode
//  //
//  PortAPI.pfWrite16_A0  = LcdWriteReg;
//  PortAPI.pfWrite16_A1  = LcdWriteData;
//  PortAPI.pfWriteM16_A1 = LcdWriteDataMultiple;
//  PortAPI.pfReadM16_A1  = LcdReadDataMultiple;
//  GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66708, GUIDRV_FLEXCOLOR_M16C0B16);}

2.GUIDRV_Template.c

这个文件要修改三个函数

第一个加入LCD_DrawPoint(x,y,PixelIndex);:

static void _SetPixelIndex(GUI_DEVICE * pDevice, int x, int y, int PixelIndex) {//// Convert logical into physical coordinates (Dep. on LCDConf.h)//#if (LCD_MIRROR_X == 1) || (LCD_MIRROR_Y == 1) || (LCD_SWAP_XY == 1)int xPhys, yPhys;xPhys = LOG2PHYS_X(x, y);yPhys = LOG2PHYS_Y(x, y);#else#define xPhys x#define yPhys y#endifGUI_USE_PARA(pDevice);GUI_USE_PARA(x);GUI_USE_PARA(y);GUI_USE_PARA(PixelIndex);{//// Write into hardware ... Adapt to your system//// TBD by customer...//LCD_DrawPoint(x,y,PixelIndex);}#if (LCD_MIRROR_X == 0) && (LCD_MIRROR_Y == 0) && (LCD_SWAP_XY == 0)#undef xPhys#undef yPhys#endif
}

第二个加入PixelIndex = LCD_ReadPoint(x,y);:

static unsigned int _GetPixelIndex(GUI_DEVICE * pDevice, int x, int y) {unsigned int PixelIndex;//// Convert logical into physical coordinates (Dep. on LCDConf.h)//#if (LCD_MIRROR_X == 1) || (LCD_MIRROR_Y == 1) || (LCD_SWAP_XY == 1)int xPhys, yPhys;xPhys = LOG2PHYS_X(x, y);yPhys = LOG2PHYS_Y(x, y);#else#define xPhys x#define yPhys y#endifGUI_USE_PARA(pDevice);GUI_USE_PARA(x);GUI_USE_PARA(y);{//// Write into hardware ... Adapt to your system//// TBD by customer...//PixelIndex = LCD_ReadPoint(x,y);}#if (LCD_MIRROR_X == 0) && (LCD_MIRROR_Y == 0) && (LCD_SWAP_XY == 0)#undef xPhys#undef yPhys#endifreturn PixelIndex;
}

第三个加入LCD_Fill(x0,y0,x1,y1,LCD_COLORINDEX);:

static void _FillRect(GUI_DEVICE * pDevice, int x0, int y0, int x1, int y1)
{LCD_Fill(x0,y0,x1,y1,LCD_COLORINDEX);
//  LCD_PIXELINDEX PixelIndex;
//  int x;//  PixelIndex = LCD__GetColorIndex();
//  if (GUI_pContext->DrawMode & LCD_DRAWMODE_XOR) {//    for (; y0 <= y1; y0++) {//      for (x = x0; x <= x1; x++) {//        _XorPixel(pDevice, x, y0);
//      }
//    }
//  } else {//    for (; y0 <= y1; y0++) {//      for (x = x0; x <= x1; x++) {//        _SetPixelIndex(pDevice, x, y0, PixelIndex);
//      }
//    }
//  }
}

3.GUIConf.c

修改内存大小:

#define GUI_NUMBYTES  40*1024

该处使用的url网络请求的数据。

4.at32f403a_407_int.c

修改systick定时器中断:

extern __IO int32_t OS_TimeMS;
void SysTick_Handler(void)
{OS_TimeMS++;if(OS_TimeMS%100 == 0){LED2_BL;//加个LED指示一下}
}

5.main.c测试

代码如下(示例):

#include "at32f403a_407_clock.h"
#include "Drv_Delay.h"
#include "Drv_Uart.h"
#include "Drv_Led.h"
#include "Drv_LCD.h"
#include "WM.h"
#include "GUI.h"
#include "GUIDEMO.h"int  main(void)
{ system_clock_config();uart_print_init(115200); LCD_Init();    LCD_Back(BLUE);systick_clock_source_config(SYSTICK_CLOCK_SOURCE_AHBCLK_NODIV);SysTick_Config(system_core_clock / 1000U);          //开启Systick中断crm_periph_clock_enable(CRM_CRC_PERIPH_CLOCK, TRUE); //打开CRC时钟WM_SetCreateFlags(WM_CF_MEMDEV);                  //允许存储器GUI_Init();                       //初始化GUIGUI_SetBkColor(GUI_BLUE);         //设置背景色为蓝色GUI_SetColor(GUI_WHITE);          //设置前景色为白色GUI_Clear();                      //清屏GUI_SetFont(&GUI_Font8x16x3x3);        //字体设置GUI_DispStringAt("Hello World!",20,50); while(1){}}


七、程序下载

2.AT32F403A例程之-EMWIN移植
https://download.csdn.net/download/suqingxiao/86089814

2.AT32F403A例程之-STemWin移植相关推荐

  1. STEmwin教程零:STM32 STEmwin移植(裸机FreeRTOS系统)

    目录 一.资料准备 二.目录简介 三.裸机移植 3.1 添加文件 3.2 修改文件 四.含FreeRTOS移植 五.测试 5.1 裸机测试 5.2 含系统测试 一.资料准备 裸机时空工程:stm32H ...

  2. 【STemWin】STM32F429IG单片机用LTDC驱动正点原子7寸RGB彩色触摸屏,并裸机移植STemWin图形库

    [器件型号] 单片机采用STM32F429IG,运行频率为180MHz,外部晶振HSE的频率为25MHz. 开发板采用外部32MB的SDRAM内存作显存.显示屏分辨率为800×480,颜色格式为RGB ...

  3. STM32移植STemwin

    一.准备基础程序 基于正点原子stm32战舰开发板的移植 1.    正点原子程序下载: 资料盘 战舰  开发板资料A盘: https://pan.baidu.com/s/1qZgG-UAznhQWg ...

  4. stm32使用自定义打点函数方式移植stemwin

    stm32使用自定义打点函数方式移植stemwin 背景 显示过程 移植简述 打点函数 stemwin移植要点 实物效果 背景 oled屏移植stemwin,有两种方式,通过自定义打点方式进行移植,或 ...

  5. 移植微雪例程-1.54寸双色水墨屏

    微雪官网:E-Paper ESP32 Driver Board - Waveshare Wiki 去微雪官网,把墨水屏的例程下下来. 我这个使用的是1.54寸的双色墨水屏. 下载下来之后,然后移植到I ...

  6. 设备接入ONENET(3)STM32 + ESP8266(MQTT协议)接入云 :官方例程移植笔记(HAL+LL库)

    重要提示:由于OneNET版本迭代,导致鉴权方式可能变更,若程序无法连接,请参考官方手册或再OneNET论坛搜索相关内容 移植本意应该是指通过修改,使得运行原先在另一个平台可运行的程序. STM32C ...

  7. 野火Linux开发板接入华为云,Huawei_LiteOS——STM32F1移植(野火开发板)

    软件环境:Keil 5 Huawei_LiteOS Version:2018.11.21 源代码下载地址: 移植代码分享(包含源码): 1.  源码文件及目录介绍 如图所示,源码共有6个目录,移植需要 ...

  8. esp8266时钟_ESP8266(Non-OS SDK) 驱动 waveshare 2.9 寸墨水屏(二)- 程序移植、修改与测试

    开始移植 上一篇文章简单介绍了了墨水屏原理.例程代码以及移植工作的可行性.这一步的目的是把前面在 STM32 跑的程序,完整地搬到 esp8266 上,达到相同的运行显示效果,Let's get st ...

  9. STM32F103移植mpu9250

    STM32F103移植mpu9250 1. 需求和来源 1.1. 基本配置 1.2. 遗留问题 2. 解决办法 2.1. libmpllib.lib 2.2. 空间不够 1. 需求和来源 回归技术的第 ...

最新文章

  1. “我,懂数据,不怕被裁”:这项核心能力到底有多香?
  2. 收藏 | Tensorflow实现的深度NLP模型集锦(附资源)
  3. 3.playbook基础
  4. mysql 创建库设置中文
  5. 在Windows上使用putty连接一台Linux主机
  6. 试题 历届试题 带分数(全排列)
  7. Windows10+GPU版 pytorch 安装
  8. 不同平台下 sleep区别用法
  9. TC的文件拷贝/移动
  10. 高级service之ipc ADIL用法
  11. 17个可以节省你时间的CSS工具
  12. C++ IO库:cmd读写,字符串读写,文件读写,<<重载,标准输出
  13. idea配置maven后提示 commond not found
  14. java 删除子文件夹_Java删除文件夹及文件夹下的子文件夹和子文件
  15. jdk动态代理使用详解
  16. python计算化学浓度_理论与计算化学 - 计算模拟 - 程序代码 - 小木虫论坛-学术科研互动平台...
  17. 一个安卓锁机病毒的分析报告
  18. 堪萨斯大学计算机硕士,堪萨斯大学计算机工程硕士专业入学要求及费用
  19. 微信叫车系统|顺风车小程序|在线选座拼车订票APP【开发实战】
  20. linux第7章进程状态和控制

热门文章

  1. python数据收集整理教案_(完整版)《数据收集整理(例1)》教案
  2. win11下载配置CIC Flowmeter环境并提取流量特征
  3. IntentFilter(意图过滤器)
  4. c++禁用启用设备 usb
  5. echarts柱状图x,y轴对应多条数据(可自定义)
  6. 数字时代的新一代数据安全
  7. kindle怎么导入电子书
  8. 风暴英雄游戏系统拆解
  9. 怎么将计算机设置为光盘引导模式,bios怎么设置从光驱启动
  10. Abz-DDIVPCSMS-Y(3NO2)-T-NH2|852572-93-1