2.AT32F403A例程之-STemWin移植
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移植相关推荐
- STEmwin教程零:STM32 STEmwin移植(裸机FreeRTOS系统)
目录 一.资料准备 二.目录简介 三.裸机移植 3.1 添加文件 3.2 修改文件 四.含FreeRTOS移植 五.测试 5.1 裸机测试 5.2 含系统测试 一.资料准备 裸机时空工程:stm32H ...
- 【STemWin】STM32F429IG单片机用LTDC驱动正点原子7寸RGB彩色触摸屏,并裸机移植STemWin图形库
[器件型号] 单片机采用STM32F429IG,运行频率为180MHz,外部晶振HSE的频率为25MHz. 开发板采用外部32MB的SDRAM内存作显存.显示屏分辨率为800×480,颜色格式为RGB ...
- STM32移植STemwin
一.准备基础程序 基于正点原子stm32战舰开发板的移植 1. 正点原子程序下载: 资料盘 战舰 开发板资料A盘: https://pan.baidu.com/s/1qZgG-UAznhQWg ...
- stm32使用自定义打点函数方式移植stemwin
stm32使用自定义打点函数方式移植stemwin 背景 显示过程 移植简述 打点函数 stemwin移植要点 实物效果 背景 oled屏移植stemwin,有两种方式,通过自定义打点方式进行移植,或 ...
- 移植微雪例程-1.54寸双色水墨屏
微雪官网:E-Paper ESP32 Driver Board - Waveshare Wiki 去微雪官网,把墨水屏的例程下下来. 我这个使用的是1.54寸的双色墨水屏. 下载下来之后,然后移植到I ...
- 设备接入ONENET(3)STM32 + ESP8266(MQTT协议)接入云 :官方例程移植笔记(HAL+LL库)
重要提示:由于OneNET版本迭代,导致鉴权方式可能变更,若程序无法连接,请参考官方手册或再OneNET论坛搜索相关内容 移植本意应该是指通过修改,使得运行原先在另一个平台可运行的程序. STM32C ...
- 野火Linux开发板接入华为云,Huawei_LiteOS——STM32F1移植(野火开发板)
软件环境:Keil 5 Huawei_LiteOS Version:2018.11.21 源代码下载地址: 移植代码分享(包含源码): 1. 源码文件及目录介绍 如图所示,源码共有6个目录,移植需要 ...
- esp8266时钟_ESP8266(Non-OS SDK) 驱动 waveshare 2.9 寸墨水屏(二)- 程序移植、修改与测试
开始移植 上一篇文章简单介绍了了墨水屏原理.例程代码以及移植工作的可行性.这一步的目的是把前面在 STM32 跑的程序,完整地搬到 esp8266 上,达到相同的运行显示效果,Let's get st ...
- STM32F103移植mpu9250
STM32F103移植mpu9250 1. 需求和来源 1.1. 基本配置 1.2. 遗留问题 2. 解决办法 2.1. libmpllib.lib 2.2. 空间不够 1. 需求和来源 回归技术的第 ...
最新文章
- “我,懂数据,不怕被裁”:这项核心能力到底有多香?
- 收藏 | Tensorflow实现的深度NLP模型集锦(附资源)
- 3.playbook基础
- mysql 创建库设置中文
- 在Windows上使用putty连接一台Linux主机
- 试题 历届试题 带分数(全排列)
- Windows10+GPU版 pytorch 安装
- 不同平台下 sleep区别用法
- TC的文件拷贝/移动
- 高级service之ipc ADIL用法
- 17个可以节省你时间的CSS工具
- C++ IO库:cmd读写,字符串读写,文件读写,<<重载,标准输出
- idea配置maven后提示 commond not found
- java 删除子文件夹_Java删除文件夹及文件夹下的子文件夹和子文件
- jdk动态代理使用详解
- python计算化学浓度_理论与计算化学 - 计算模拟 - 程序代码 - 小木虫论坛-学术科研互动平台...
- 一个安卓锁机病毒的分析报告
- 堪萨斯大学计算机硕士,堪萨斯大学计算机工程硕士专业入学要求及费用
- 微信叫车系统|顺风车小程序|在线选座拼车订票APP【开发实战】
- linux第7章进程状态和控制
热门文章
- python数据收集整理教案_(完整版)《数据收集整理(例1)》教案
- win11下载配置CIC Flowmeter环境并提取流量特征
- IntentFilter(意图过滤器)
- c++禁用启用设备 usb
- echarts柱状图x,y轴对应多条数据(可自定义)
- 数字时代的新一代数据安全
- kindle怎么导入电子书
- 风暴英雄游戏系统拆解
- 怎么将计算机设置为光盘引导模式,bios怎么设置从光驱启动
- Abz-DDIVPCSMS-Y(3NO2)-T-NH2|852572-93-1