基于stm32和dm9000的照明控制系统毕业论文(编辑修改稿)内容摘要:
TCP/ IP 实现一般要基于多任务处理环境,而大多数 8 位机系统不具备这个条件; ③ 应用程序主动参与部分协议栈功能的实现 (如 TCP 的重发机制,数据包分段和流量控制 ),由 UIP 内核设置重发事件,应用程序重新生成数据提交发送,免去了大量内部缓存的占用。 基于事件驱动的应用接口使得这些实现较为简单。 正是由于 UIP 所具有的以上显著特点,自从 0. 6 版本以来就被移植到多种处理器上,包括 MSP4 AVR 和 Z80 等。 协议栈接口 图 1 描述了 UIP、底层系统和应用程序三者之间的调用关系。 其中 UIP 协议通过一系列接口函数与底层系统和上层应用程序通信,它内部的协议集合对外部系统来说是透明的,从而增强了该协议的通用性和独立性,可以非常方便地移植到不同系统和应用平台。 图 1描述了 UIP、底层系统和应用程序三者之间的调用关系。 其中 UIP 提供了 3 个函数给底层系统: uip— init()39。 uip— input()’ uip— periodic()。 应用程序向 UIP 提供一个调用函数 uip appcall(),在网络事件或计时事件发生时进行调用;同时, UIP 也要向应用程序提供一些与协议栈的接口函数,应用程序根据接口函 数提供的信息或者状态,执行相应的操作。 Uipappcall() 应用程序 UIP 协议栈 安徽建筑大学毕业设计(论文) 12 Uipinput() uipperiodc() 图 UIP、底层系统和应用程序之间的调用关系 设备驱动程序接口 :UIP 内核中有两个函数直接提供给底层设备驱动程序。 一个是 uip— input(),当设备驱动程序从网络层收到的一个数据包时要调用 这个函数,设备驱动程序必须事先将数据包存入到 uip bur 中,包长放到 uip— len,然后交由 uip— input()处理。 当函数返回时,如果 uip— len 不为 0,则表明有带外数据 (如 SYN, ACK 等 )要发送。 当需要 ARP 支持时,还需要考虑更新ARP 表示或发出 ARP 请求和回应。 以下代码即为设备驱动程序从网络层收到的个数据包后的处理过程: define BUF ((struet uip— eth— hdr*)amp。 uip— buf[O]) uip — len=ethemet — devicedriver — poll(); //接收以太网数据包 (设备驱动程序 ) if(uip— len0){ //收到数据 if(BUF 一 type: : HTONS(UIP — ETHTYPE — IP)){ 底 层 系 统 网卡驱动 系统定时器 安徽建筑大学毕业设计(论文) 13 //是 IP 包吗 ? uip — arp— ipin(); //去除以太网头结构,更新 ARP 表 uip — input(); // IP包处理 if(uip— len0){ //有带外回应数据 uiparp out(); //加以太网头结构, 在主动连接时可能要构造 ARP 请求 ethemet — devieedriver — send(); //发送数据到以太网 (设备驱动程序 ) } }else if(sot 一 type==HTONS(U1PETHTYPEARP)){ //是 ARP 请求包 uip — arp— arpin();//如是是 ARP 回应,更新 ARP 表; 如果是请求,构造回应数据包 if(uip— len0){ //是 ARP 请求,要发送回应 ether — devicedriver — send(); //发 ARP 回应到以太网上 另一个 UIP内核直接提供给底层设备驱动程序的函数是 uip— periodic(conn)。 这个函数用于 UIP 内核对各连接的定时轮循,因此需要一个硬件支持的定时程序安徽建筑大学毕业设计(论文) 14 周期性地用它轮循各连接,一般用于检查主机是否有数据要发送,如有,则构造IP 包。 以下示例即为 UIP 内核对各连接的定时轮循过程: for(i=0; iUIP— CONNS; i++){ uip — periodic(i); if(uip— lenO){ uip — arp— out(); ethemet — devicedriver — send(); 从本质上来说, uip— input()和 uip— periodic()在内部是一个函数, 即 uip— process(u8 一 t flag), uIP 的设计者将 uip— process(UIP— DATA)定义成uip_intput(),而将 uip— process(UIP— TIMER)定义成 uip— periodic(),因此从代码实现上来说是完全复用的。 应用程序接口 :UIP 使用基于事件的程序模式,应用程序由 c语言函数实现。 当收发数据、新连接建立或者数据需要重新传输时, UIP 都会调用应用程序。 同时,应用程序还要周期查询是否有新的数据收发。 因为应用程序只提供了一个回调函数,所以应用程序还要 把不同的网络服务映射到不同的端 13 和连接。 UIP在接受到底层传来的数据包后,如果需要送上层应用程序处理,就调用 UIP— APPCALL()。 同时设置结构体 UIP— eonn 指针指向当前连接。 UIP conn 记录一条 TCP 连接的所有相关信息,它是维持 UIP 运行的关键结构,定义如下: struct【 cp— conn{ u8 一 t tcpstateflags;// TCP 的状态和标志 ul6 一 t lport, rpert;//当地和远端端口 ul6 一 t fipodar[2];//远端的地址 安徽建筑大学毕业设计(论文) 15 u8 一 t rcv nxt[4];//下一个要接收的序列号 u8 一 t sod — xt[4];∥ 上一个已发送的序列号 u8 一 t aeknxt[4];//对端下一个应答序列号 u8 一 t timer;//重传时间 u8 一 t nrtx;//计算特殊段的重发数量 u8 一 t mss;//连接中最大分段的大小 u8 一 t appstate[UIP— APPSTATE — SIZE]; UIP 提供给应用程序的接口函数如: tep listen()、 uip— connect()、 uip— send()、 tcp— datalen()、 tcp— close()、 tcp— abort()、 tcp— stop()、 uip— stopped()、 uip— restart()等,实现了 TCP/ IP 协议栈的基本功能。 为了将用户的应用程序挂接到 UIP 中,必须将宏 UIP— APPcALL()定义成实际的应用程序函数名,这样每当某个 UIP 事件发生时,内核就会调用该应用程序进行处理。 如果要加入应用程序状态的话,必须将宏 UIPAPPSTATESIZE 定义成应用程序状态结构体的长度。 在应用程序函数中,依靠 UIP 事件检测函数来决定处理的方法,另外可以通过判断当前连接 的端口号来区分处理不同的连接。 安徽建筑大学毕业设计(论文) 16 程序流程图 程序运行初始化流程图 图 初始化流程图 开始 系统时钟设置 初始化网络设备以及 UIP 协议栈,配置 IP 地址 UIP MAC 初始化 应用层 MAC 初始化 UIP 初始化 创建 TCP 监听窗口和 HTTP 监听窗口 ARP 初始化 安徽建筑大学毕业设计(论文) 17 程序功能流程图 当通过网络调 试助手发来的指令时处理 uIP 事件 否 否 是 是 是 否 图 功能流程图 指令 设置指令 设置 IO 高低平(设置灯的开关) 查询指令 命令错误 查询 IO 状态 (灯的开关状 态) 输出 IO( 灯)的状态 发生错误 结束 安徽建筑大学毕业设计(论文) 18 系统 LED 灯程序 include include include include include define LED1_ON() GPIO_SetBits(GPIOB, GPIO_Pin_5)。 define LED2_ON() GPIO_SetBits(GPIOC, GPIO_Pin_6)。 define LED3_ON() GPIO_SetBits(GPIOC, GPIO_Pin_7)。 define LED1_OFF() GPIO_ResetBits(GPIOB, GPIO_Pin_5)。 define LED2_OFF() GPIO_ResetBits(GPIOC, GPIO_Pin_6)。 define LED3_OFF() GPIO_ResetBits(GPIOC, GPIO_Pin_7)。 extern unsigned short LPORT。 void server_udp_appcall(void)。 void led_poll(void)。 ******************************************************************************* * 函数名 : void led_poll(void) * 参 数 : 无 * 返 回 : 无 * 功 能 : 查询 LED 灯的状态并返回其状态 **************************************************************************/ void led_poll(void) { uint8_t led1_readvalue。 uint8_t led2_readvalue。 uint8_t led3_readvalue。 led1_readvalue = GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_5 )。 安徽建筑大学毕业设计(论文) 19 led2_readvalue = GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_6 )。 led3_readvalue = GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_7 )。 if(led1_readvalue == 0)myudp_send(LED1 亮 \n,8)。 else myudp_send(LED1 灭 \n,8)。 if(led2_readvalue == 0)myudp_send(LED2 亮 \n,8)。 else myudp_send(LED2 灭 \n,8)。 if(led3_readvalue == 0)myudp_send(LED3 亮 \n,8)。 else myudp_send(LED3 灭 \n,8)。基于stm32和dm9000的照明控制系统毕业论文(编辑修改稿)
相关推荐
研究,取得了显著的成就。 目前,智能车辆的发展正处于第三阶段。 这一阶段的研究成果代表了当前国外智能车辆的主要发展方向。 在世界科学界和工业设计界中,众多的研究机构研发的智能车辆具有代表性的有: 德意志联邦大学的研究 1985 年 第一辆 VaMoRs 智能原型车辆在户外高速公路上以 100km/h的速度进行了测试,它使用了机器视觉来保证横向和纵向的车辆控制。 1988 年 在都灵的
LED 显示屏面积可以根据需要由单元模块任意拼装,以其变化丰富的色彩,图案实时动态的显示模式,完美的多媒体效果,强大的视觉冲击力将信息、文字、图片、动画、视频等多种方式显示出来 ,成为信息传播的划时代产品 ,在铁路民航、体育场馆、会议厅、高速公路、广场、大型商场、证券市场以及多种监控调度中得到了广泛的应用。 LED 之所以受到广泛重视而得到迅速发展,是与它本身所具有的优点分不开的。
外 ,新的 STM32系列还特别适合侧重低功耗的设备,如血糖和血脂监测设备。 STM32F103的 USART接口 USART 接口的引脚描述 表 USART 的引脚描述 引脚名称 类型 描述 第二章 ARM 系统的硬件平台 5 RX 输入端口 串口数据流入 TX 输出端口 串口数据流出 USART 主要的特性 全双工的,异步通信。 2. NRZ 标准格式。 3. 分数波特 率 发生器系统。 4
客户部培训简略 户部与媒介部年国家税务局要控制企业的广告宣传费用不能超过利润的 2%。 受伤的会是传统广告,因为经费不足,如果能够让客户充分了解网络广告的优势,并有充足的成功案例,网络广告应该是可以成功的。 服务客户(是服务性行业) 替客户策划、创作、调查、研究、制作、投放广告 替客户统筹整合性行销活动,发挥“全传播”功能 不是创造广告,而是替客户创造销售机会 不是卖广告,而是替客户卖产品
低功耗。 供电电压从 5V降到 3V、 2V 甚至 1V左右。 工作电流从 mA 级降到μ A级。 在生产工艺上以 CMOS 代替 NMOS,并向 HCMOS 过渡; 系统扩展与配置。 有供扩展外部电路用的三总线结构 DB、 AB、 CB,以方便构成各种应用系统。 根据单片机网络系统、多机系统的特点专门开发 出单片机串行总线。 此外,还特别配 置有传感器,人机对话 、网络多通道等 接口
行测量,并通过单片机定时来检测电机是否堵转,堵转后控制电磁继电器动作及延时。 本设计主要用单片机 STC12C520xx作为控制核心,由电磁式转速传感器 .光耦电路 .电磁继电器 .接触器等构成。 本 文重点是测量转速及单片机定时系统。 在软件系统的设计上,根据 STC12C5202单片机的编程结构特点,充分利用单片机的片上资源,采用模块化编程思想,将系统功能分解成较小的功能模块