stm32 移植uip

合集下载

基于STM32的uCGUI移植手册

基于STM32的uCGUI移植手册
芯嵌 stm32

STMI 移植手册(无 OS)
Revision V1.0
( 2013-08-05 )
Copyright © 2009-2014 福州芯嵌工作室 ALL rights reserved
1
芯嵌 stm32

Copyright © 2009-2014 福州芯嵌工作室 ALL rights reserved
5
芯嵌 stm32

芯嵌 STM32 用户手册修订记录
日期
版本 修改章节 修改描述
2013-08-05 1.00
全部
创建
作者 51smt32
Copyright © 2009-2014 福州芯嵌工作室 ALL rights reserved
本手册硬件平台是芯嵌 STM32 开发板,软件平台为 MDK3.8 版 本,使用 ST 官方固件库 V3.5 版以及 uC/GUI 源码 3.90 版。详情参 考芯嵌 stm32 开发板光盘,也可在芯嵌 stm32 官网下载获取。后续 会继续推出一系列提高型的教程,欢迎大家在我们论坛以及 QQ 群讨 论交流,一起进步。这里建议,大家提出的问题,越详细具体越好, 这样越有利于其他网友帮助回答问题。
版权声明
本手册版权归属福州芯嵌电子工作室(以下简称“芯嵌”) 所有,并保留一切权力。非经芯嵌同意(书面形式),任何 单位及个人不得擅自摘录本手册部分或全部内容,违者(我 们)公司将追究其法律责任。
Copyright © 2009-2014 福州芯嵌工作室 ALL rights reserved
2
芯嵌 stm32
6
芯嵌 stm32

目录
内容提要...........................................................................................................................................3 前 言.................................................................................................................................................4 手册的约定与更新........................................................................................................................... 5 目录...................................................................................................................................................7 第一章 准备工作.............................................................................................................................8 1.1 uC/GUI 源码获取....................................................................................................................... 8 1.2 集成开发环境 MDK..................................................................................................................8 1.3 硬件平台....................................................................................................................................8 1.4 J-Link 仿真器............................................................................................................................. 9 第二章 uC/GUI 介绍........................................................................................................................9 2.1 uC/GUI 特点............................................................................................................................... 9 2.2 uC/GUI 源码结构.................................................................................................................. 10 第三章 uC/GUI 移植.......................................................................................................................13 3.1 uC/GUI 移植思路..................................................................................................................... 13 3.2 uC/GUI 移植全跟踪................................................................................................................. 14 第四章 uC/GUI 的使用..................................................................................................................22 4.1 uC/GUI 常见 API 介绍.............................................................................................................22 4.2 制作自己的图形界面.............................................................................................................. 23 5 参考文献.....................................................................................................................................24 6 附 录...........................................................................................................................................24 6.1 ILI9341 初始化代码.................................................................................................................24

基于STM32的UIP协议栈移植通信

基于STM32的UIP协议栈移植通信

R A M,处 理速度快 。E N C 2 8 J 6 0以太 网模块将 S T M 3 2 微控制处理器发送 的数据加上物理层的 前导符和帧起始定界符 ,使得数据符合以太网
的格 式 ,避免 被 以太 网当作 垃圾 数 据丢 弃 ,从 而 实 现数 据 间 的交互 。以太 网接 口选 用 带有 网 络隔 离变 压 器功 能 的 H R 9 1 1 1 0 5 A实 现 。T F T
随着信息化和物联 网技术的不断更新 ,物 联网慢慢进人人们 的生活 ,这就需要 电子产品 可以接入网络 ,实现数据交互 ,目前多数采用 小型无线传感技术 网络来实现 ,如 Z I G B E E技
术 等 ,但是 它们 只适合 小 型 网络 ,不 适合 长 距
离 的传 输 。 以太 网是 一个 覆 盖 区域极 广 ,协 议
件 平 台输 人 数据 ,数据 传输 需 要对 硬 件平 台输
人的数据进行符合 T C P / I P协 议 的数 据 传 输 格
式把数据传输到以太网中。嵌入式系统与基于
T C P / I P以太 网协 议 栈搭 建 的控 制器 ,可 以使 控 制器 接 入 现有 的 以太 网 ,从 而实 现数 据 的长 距
基 金 项 目: 福 建 省 教 育 厅 A 类 项 目 ( J A1 2 3 7 7 )
作者简 介 :陈清华 ( 1 9 8 1 一 ),男,福 建漳州人 ,讲师 ;研 究方 向:电子信 息技 术。
7 4
《 福建师大福清分校学 报 》
2 0 1 5 年 9月
E N C 2 8 J 6 0是 带 有 行 业 标 准 串行 外 设 接 口 ( S e r i a l P e r i p h e r a l I n t e r f a c e ,S P I )的独 立 以 太

基于STM32的UIP协议栈移植通信

基于STM32的UIP协议栈移植通信

基于STM32的UIP协议栈移植通信
陈清华
【期刊名称】《福建师大福清分校学报》
【年(卷),期】2015(000)005
【摘要】选用STM32作为主控芯片,外加ENC28J60底层网络芯片,将UIP协议栈移植到STM32,通过UIP协议栈进行数据封装,发送到以太网.实践证明UIP协议栈移植到STM32进行以太网数据的传递,接口简单,开发方便,成本低,通信稳定可靠.【总页数】4页(P73-76)
【作者】陈清华
【作者单位】福建师范大学协和学院信息技术系,福建福州350108
【正文语种】中文
【中图分类】TP393
【相关文献】
1.基于UIP协议栈的磁熵变测量数据传输设计 [J], 边鸣镝;付成伟
2.uIP协议栈在基于DSP以太网通信系统中的应用 [J], 岳世为;尹为民
3.uC/OSⅡ下协议栈uIP的移植与应用 [J], 刘春凤;张代远
4.uIP协议栈在CC2430芯片上的移植研究 [J], 李伟勤;李新献;施岱松
5.基于STM32与Lwip协议栈的高效通信技术 [J], 李晨; 蒋林; 刘思平
因版权原因,仅展示原文概要,查看原文内容请购买。

uCGUI在stm32内核上的移植

uCGUI在stm32内核上的移植

LCDConf.h UCGUI390a\Start\Config
此文件用于 LCD 的相关应用配置,介绍如下
#ifndef LCDCONF_H
#define LCDCONF_H
#define LCD_XSIZE
(240)
#define LCD_YSIZE
(320)
#define LCD_CONTROLLER (9320) //控制器编号
配置文件目录
GUI\ConvertMono
灰度色彩转换支持
GUI\ConvertColor
色彩转换支持
GUI\Core
核心文件
GUI\Font
字体文件
GUI\JPEG
JPEG 格式图像显示支持
GUI\LCDDriver
LCD 驱动文件
GUI\MemDev
存储设备支持
这是今年暑假移植的,刚刚翻译完 uC/OS-III 用户手册,并移植了
uC/OS-III 到 stm32 处理器上,我就想把 uC/GUI 也放到网上去,希望
能帮到大家。
——屈环宇
——2011 年 11 月 6 号晚
Void LCD_MyInit(); 注意 LCD 的初始化函数名不能用 LCD_Init(); uC/GUI 中已有如此定义的 函数,会导致重定义。 接口函数的设计是跟处理器和 LCD 相关的,在移植 uC/GUI 前必须完成以 上 3 个 函 数 的 设 计 , 即 能 用 LCD_MyInit() 实 现 LCD 的 初 始 化 , LCD_ReadPoint(u16 x,u16 y)返回对应点的颜色,LCD_DrawPoint(u16 x, u16 y, u16 color)在 LCD 上显示对应点的颜色。

基于STM32的UCGUI移植解析(新手入门)

基于STM32的UCGUI移植解析(新手入门)
UCGUI 移植初级解析
-----------------如何建立一个简单的 UC/GUI 工程
仅供像我这样的新手学习 UCGUI 使用
做 UCGUI 移植,首先要选择好自己硬件平台,UCGUI 源码,液晶的底层驱 动。关于硬件和 GUI 源码(我选的源码 3.90 版,原子 STM32MINI 开发板)不 必多说。其次,液晶的底层驱动函数得要好好准备,这可是直接和 GUI 源码打 交道的。
(7) 修改:LCDDriver / LCDDummy.c 文件 方法:在这里面添加几个函数,关于这几个函数就是我在开始列举
的几个函数 LCD_ReadPoint(u16 x, u16 y);//读取点坐标 LCD_SetPoint(u16 x, u16 y, u16 color );//画点 你的函数也许不是这个名字哦,大家不要照搬,这是你自己的驱动函数, 在哪里添加这两个函数呢,不要着急,听我来说,
还有一个问题,网上有人说触摸用不到,可以不用添加,然后字体也只
添加几个用得到的,我的意见是:全部添加,避免难以修改的 KEIL 警告, 这点很重要,我是新手,我很清楚怎么过来的,呵呵呵。
(4):文件添加完了,还有一步呢,还要在添加路径。点击魔术棒,出现一 个选项卡,点击 C/C++,在 Include Paths 里包含文件路径,所有文件的都 要包进来哦。能玩移植的朋友们,我相信(3)(4)两步对你们来说不难。
(2):复制 源码/Sample/GUI_X 文件夹下的 GUI_X.c 文件,粘贴到工程 模板下的 Config 里; 图片指示:
(3):打开 KEIL 工程(事先准备好的),KEIL 界面左边有个 Project 视窗, 在 Target1 单击右键,出现一个选项卡,在 Groups 里创建各文件,然后依 次 Add Files,即添加.c .h 文件,这里要着重说明:添加文件的时候,尤 其是 GUI 源码,文件类型选择 ALL Files(系统默认.c 文件),就是为了添 加.h 文件,这一点很重要。举个例子吧,在 Config 文件夹下要添加 GUI_X.c GUIConf.h GUITouch.h LCDConf.h。

在STM32上移植ucGUI之触摸屏

在STM32上移植ucGUI之触摸屏

在STM32上移植ucGUI之触摸屏之前的三篇文章分别介绍了如何在STM32 裸机上移植ucGUI,移植ucGUI 源例程以及ucGUI 的存储设备和抗锯齿。

现将STM32 裸机上移植ucGUI 触摸屏的过程详述如下:1、将正点原子的《触摸屏移植实验》中HARDWRAE/TOUCH 目录复制到已经建立好的ucGUI 工程目录的HARDWARE 文件夹下,并添加touch.c 文件和头文件路径。

2、打开ucGUI 工程中的GUIConf.h 文件,将其中的GUI_SUPPORT_TOUCH 和GUI_WINSUPPORT 总开关打开。

如下所示:1#define GUI_SUPPORT_TOUCH 1 /* Support a touch screen (req. win-manager) */2#define GUI_WINSUPPORT 1 /* Window manager package available */此时编译程序,会出现四个函数未定义的错误。

3、在GUI_X 中添加文件GUI_X_Touch.c,此时编译工程错误消失。

4、在GUI_X_Touch.c 中添加预处理命令#include “touch.h”。

然后将其中的GUI_TOUCH_X_MeasureX 和GUI_TOUCH_X_MeasureY 两个函数改为如下所示的形式:01intGUI_TOUCH_X_MeasureX(void) {02u16x,y;03Read_ADS2(&x,&y);04returnx;05}0607intGUI_TOUCH_X_MeasureY(void) {08u16 x,y;09Read_ADS2(&x,&y);10returny;11}5、由于是在裸机上运行ucGUI程序,对话框程序会阻塞当前进程的执行。

所以需要在定时器中断中不断的去扫描触摸屏的状态。

设置定时器10ms 中断一次,在定时器中断处理函数中加入GUI_TOUCH_Exec()语句。

Uip_Ucos_STM32移植——uIP协议栈服务器端主动发送数据问题分析

基于uIP和uC/OS-II嵌入式网络开发——u IP主动发送数据分析摘要:uIP协议栈简单易用,可以为16位单片机或者是更低级的处理器使用,占用的资源很少,相关移植网上有详细介绍,本文主要讨论uIP如何主动发送数据。

所用的开发板是STM32系列的,uC/OS-II操作系统,开发板作为服务器端。

关键字:uIP;uC/OS-II;STM321 系统要实现的功能主要功能如下:开发板作为服务器端,PC做客户端。

连接成功以后,服务器始终作为主动的一方,主动与PC发送数据,PC收到后回传数据帧给服务器。

服务器不给PC交互数据时,则认为是空闲的,这时需要以3秒的频率给PC发送心跳,维持连接。

系统主要任务如下:心跳任务:负责心跳的发送,3秒到了,如果服务器不在给PC交互数据中,则主动发送心跳帧给PC机;网络数据接收任务:负责轮询的方式接收数据,OSTimeDly(1),1毫秒轮询一次,在这个任务中也处理500毫秒ARP超时和10秒TCP超时。

收到数据以后交给协议栈处理,协议栈调用应用程序回调函数tcp_demo_appcall,判断是否新数据到来,若是则调用newdata()。

在newdata()函数中处理PC发送过来的数据,并通过发送信号量的方式与主任务交互。

主任务:负责与PC的数据交互,合适的时机主动发送数据给PC机,然后通过信号量等待PC客户端的数据,等到以后再传下一包数据。

2 需要解决的问题2.1 客户端多次重连UIP协议栈默认提供20个用于listen状态的tcp结构,10个用于连接状态的tcp结构。

这样服务器端可以处理多个客户端,现在考虑的是,服务器端只希望处理一个客户端。

而客户端连接服务器的时候,不管现在服务器是否已经有客户端连接了,这样就需要服务器在收到新的客户端连接时,若已经与前一个客户端建立连接,需要先将其断开,然后再与这个新的建立连接。

2.1.1若客户端主动关闭连接,这样很好理解先看连接过程,3次握手:UIP_CLOSED收到客户端的连接SYN,则变为UIP_SYN_RCVD,并给客户端发送SYN+ACK,收到客户端的ACK,则变为UIP_ESTABLISHED,表明建立了连接。

奋斗STM32开发板uIP1.0 以太网例程讲解

奋斗版 STM32 开发板例程文档———uIP1.0 ENC28J60 以太网例程uIP1.0 ENC28J60 以太网例程实验平台:奋斗版STM32开发板V2、V2.1、V3 实验内容:本例程演示了在奋斗STM32开发板上完成ARP,ICMP,TCP服务器、WEB 服务器以及UDP服务器,该实验学习了基于uIP1.0网络协议栈的程序编制。

预先需要掌握的知识1.ENC28J60ENC28J60是MICROCHIP公司的带SPI 接口的独立以太网控制器, 以太网控制器特性 • IEEE 802.3 兼容的以太网控制器 • 集成MAC 和10 BASE-T PHY • 接收器和冲突抑制电路 • 支持一个带自动极性检测和校正的10BASE-T 端口 • 支持全双工和半双工模式 • 可编程在发生冲突时自动重发 • 可编程填充和CRC 生成 • 可编程自动拒绝错误数据包 • 最高速度可达10 Mb/s 的SPI 接口 缓冲器 • 8 KB 发送/ 接收数据包双端口SRAM • 可配置发送/ 接收缓冲器大小 • 硬件管理的循环接收FIFO • 字节宽度的随机访问和顺序访问(地址自动递增) • 用于快速数据传送的内部DMA • 硬件支持的IP 校验和计算 介质访问控制器(MAC)特性 • 支持单播、组播和广播数据包 • 可编程数据包过滤,并在以下事件的逻辑“与” 和“或”结果为真时唤醒主机: - 单播目标地址 - 组播地址 广播地址 - Magic Packet - 由64 位哈希表定义的组目标地址 - 多达64 字节的可编程模式匹配(偏移量可由用户定义)淘宝店铺:1奋斗版 STM32 开发板例程文档———uIP1.0 ENC28J60 以太网例程• 环回模式 物理层(PHY)特性 • 整形输出滤波器 • 环回模式 工作特性 • 两个用来表示连接、发送、接收、冲突和全/ 半双工状态的可编程LED 输出 • 使用两个中断引脚的七个中断源 • 25 MHz 时钟 • 带可编程预分频器的时钟输出引脚 • 工作电压范围是3.14V 到3.45V • TTL 电平输入 • 温度范围:-40°C 到+85°C (工业级), 0°C 到 +70°C (商业级)(仅SSOP 封装) • 28 引脚SPDIP、SSOP、SOIC 和QFN 封装概述ENC28J60 是带有行业标准串行外设接口(SerialPeripheral Interface,SPI)的独立以太网控制器。

stm32之UCGUI3.90a移植教程-裸奔-不带触摸版本_V1.0

uCGUI3.90a移植教程声明:本教程是作者学习uCGUI过程中的笔记,最后整理出来,献给初学者,旨在带领初学者入门uCGUI,仅供学习之用,不得用于商业。

如需转载,请注明出处。

作者:Stone_up时间:2013-08-01版本:V1.0说明平台: stm32f103zet6 TFTLCD型号: 2.8寸9341控制器ucgui源码: 3.90a版本触屏:不带触屏(后续更新)操作系统:不支持移植教程一、准备工作:(一)源码:准备3.90版本的UCGUI源码注:如果需要跑GUIDEMO,那么还需准备GUIDEMO源码。

(二)LCD底层驱动:准备LCD屏的底层驱动,接口函数如下:1、设置坐标点;static void lcd_set_cursor(u16 xpos, u16 ypos);2、在指定点画指定颜色的点;void lcd_set_point(u16 xpos, u16 ypos, u16 color);3、读取某个点的颜色值;u16 lcd_get_point(u16 x, u16 y);4、在指定区域填充颜色(开窗口的方式,速度更快);void lcd_window_fill(u16 sx, u16 sy, u16 ex, u16 ey, u16 color);5、LCD屏初始化(主要是出厂初始化代码);void ili9341_initialize(void);注:这里列出了和UCGUI的接口函数,这些函数的具体实现需要根据自己的LCD屏具体实现这些函数。

二、移植过程(一)把UCGUI源码copy到自己的工程中,UCGUI文件夹下面,方便管理;(二)添加UCGUI源码到工程中,放在对应的组下面,方便管理,如图:(三)添加头文件路径,如图:(四)打开GUI_Config文件夹,编辑GUIConf.h文件,内容如下:#define GUI_OS (0)#define GUI_SUPPORT_TOUCH (0)#define GUI_SUPPORT_UNICODE (1)#define GUI_DEFAULT_FONT &GUI_Font6x8#define GUI_ALLOC_SIZE 40*1024#define GUI_WINSUPPORT 0#define GUI_SUPPORT_MEMDEV 1#define GUI_SUPPORT_AA 1(五)打开GUI_Config文件夹,编辑LCDConf.h文件,内容如下:#define LCD_XSIZE (320)#define LCD_YSIZE (240)#define LCD_BITSPERPIXEL (16)#define LCD_CONTROLLER (-1)#define LCD_FIXEDPALETTE (565)#define LCD_SWAP_RB (1)#define LCD_INIT_CONTROLLER() ili9341_initialize();(六)打开GUI_LCDDriver文件夹,编辑LCDDummy.c文件,内容如下:1、先添加LCD驱动文件的头文件,以便下面函数调用;如:#include "tftlcd.h"2、确保#if (LCD_CONTROLLER == -1) \&& (!defined(WIN32) | defined(LCD_SIMCONTROLLER))中的LCD_CONTROLLER == -1 ,和LCDConf.h中的宏定义对应3、在void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex) 函数最后一行添加如下语句:lcd_set_point(xPhys, yPhys, PixelIndex);4、在unsigned int LCD_L0_GetPixelIndex(int x, int y) 函数return语句之前添加如下语句:PixelIndex = lcd_get_point(x, y);5、现在回到main函数1)添加头文#include "GUI.h"#include "GUIDEMO.h"2)在main函数中先调用必要的初始化函数后,再调用GUI_Init(); 函数,这个函数会调用LCD屏的初始化函数3)为了测试UCGUI是否初始化成功,我们先调用几个函数试试,在GUI_Init();下面接着调用如下函数:GUI_SetBkColor(GUI_BLACK);GUI_SetColor(GUI_RED);GUI_Clear();GUI_SetFont(&GUI_Font24_1);GUI_DispStringAt("- - uCGUI disp Function sample - -",4,10);// 延时3s,方便观看结果delay_ms(1000);delay_ms(1000);delay_ms(1000);看看是否把LCD刷成黑色,是否显示红色字符串4)然后再while循环中调用GUIDEMO_main(); 函数,开始运行GUIDEMO(七)定时器中断配置,给UCGUI系统一个时钟(个人观点,仅供参考),否则GUIDEMO程序无法运行1、在这里用定时器2,所以需要配置定时器和NVIC中断,配置函数大家就自己做了,只是这里的定时器配置成2KHz的频率,如果想要界面变化快点,那么提高频率即可;然后我们进入定时器2的中断函数,首先在stm32f10x_it.c 文件中加入外部变量声明extern volatile int OS_TimeMS; 然后加入定时器2中断函数,如下:void TIM2_IRQHandler(void){if ( TIM_GetITStatus(TIM2 , TIM_IT_Update) != RESET ){TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);OS_TimeMS++;if(OS_TimeMS%20==0){//GUI_TOUCH_Exec(); // 不带触摸不需要这条语句}} }后记作者新浪博客:/s/blog_9763553701018h2h.html技术讨论QQ:2898295180如有bug,恳请指出,欢迎各位网友一起讨论,一起进步,祝大家学业有成。

Uip+Stm32移植问题总结-ChangingsBlog

Uip+Stm32移植问题总结-ChangingsBlog#include "clock-arch.h"#include "stm32f10x.h"extern __IO int32_t g_RunTime;/*---------------------------------------------------------------------------*/clock_time_tclock_time(void){return g_RunTime;}/*---------------------------------------------------------------------------*/使用stm32 滴答定时器中断代码:User/stm32f10x_it.c__IO int32_t g_RunTime = 0;void SysTick_Handler(void){static uint8_t s_count = 0;if (++s_count >= 10){s_count = 0;g_RunTime++; /* 全局运行时间每10ms增1 */if (g_RunTime == 0x80000000){g_RunTime = 0;}}}3.uipopt.h/uip-conf.h 是配置文件,用来设置本地的IP 地址、网关地址、MAC 地址、全局缓冲区的大小、支持的最大连接数、侦听数、ARP 表大小等。

可以根据需要配置。

#define UIP_FIXEDADDR 1决定uIP是否使用一个固定的IP地址。

如果uIP使用一个固定的IP地址,应该置位(set)这些uipopt.h 中的选项。

如果不的话,则应该使用宏uip_sethostaddr(),uip_setdraddr() 和 uip_setnetmask()。

#define UIP_PINGADDRCONF 0 Ping IP地址赋值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档