摘要: 前面移植了lwip之后只是简单地做了一个dhcp的程序,但是实际工作中经常要用来通讯,那今天就来讲一讲怎么用lwip来进行UDP通讯 要使用数据通信首先第一步得知道lwip是怎么样保存数据的,在使用netconn数据包进行通讯的时候,netbuf是主要的数据结构,该数据结构的构成如下struct... 阅读全文
posted @ 2015-04-18 16:59 邓小俊 阅读(4188) 评论(0) 推荐(1) 编辑
摘要: 前面小玩了一下ucos和lwip,但是都还不是真正的网络多任务,真正的网络多任务应该是什么样子的呢?应该是有一个专门的任务负责网络的通讯,他负责将数据发送出去,将数据接收回来,而其他的需要用到网络的任务与这个任务通讯,这才是能够极大提升网络效率的办法,lwip支持这种办法,不过移植起来就比较磨人了... 阅读全文
posted @ 2015-04-16 23:21 邓小俊 阅读(5787) 评论(0) 推荐(0) 编辑
摘要: 之前在裸机环境下移植了lwip,功能还是很强大的,但是就我看来,这和uip其实差别也不大,其实lwip更强大的功能需要在操作系统之下才能发挥出来,今天就来做这个 首先我们需要移植操作系统,系统选择ucos2.91,移植过程网上都有,我就写点不同的 配置文件修改如下/* --------------... 阅读全文
posted @ 2015-04-16 22:43 邓小俊 阅读(2423) 评论(0) 推荐(0) 编辑
摘要: MODBUS是一个工业上通信常用的通讯协议,一般在PLC上面用的比较多,主要是定义了一种数据传输的规范,比如数据发给谁,数据是干嘛的,数据错没错,接收到数据的从机告诉我数据有没有接受到等. 传输的方式的话比较多的是使用RS232c形式的串口传输,当然485传输也可以,比较高端的可以使用网络的tcp... 阅读全文
posted @ 2015-04-07 19:54 邓小俊 阅读(16547) 评论(1) 推荐(3) 编辑
摘要: 前面移植了LWIP,并且简单的实用了DHCP的功能,今天来使用一下实际的数据通讯的功能 首先是实现TCP客户端,我先上代码#ifndef __TCP_CLIENT_H_#define __TCP_CLIENT_H_#include "network.h"//连接状态enum tcp_client_... 阅读全文
posted @ 2015-04-01 22:01 邓小俊 阅读(17430) 评论(3) 推荐(2) 编辑
摘要: 在FreeRTOS中和UIP中,都使用到了一种C语言实现的多任务计数,专业的定义叫做协程(coroutine),顾名思义,这是一种协作的例程, 跟具有操作系统概念的线程不一样,协程是在用户空间利用程序语言的语法语义就能实现逻辑上类似多任务的编程技巧。 意思就是说协程不需要每次调用的时候都为任务准备... 阅读全文
posted @ 2015-04-01 21:15 邓小俊 阅读(3427) 评论(0) 推荐(1) 编辑
摘要: 之前我们使用UIP实现了tcp和udp通讯今天来说说UIP的实现流程,当然,这篇文章里面只会涉及tcp和udp,暂时还没办法说DHCP,因为UIP的DHCP实现使用了协程的概念,下一章将协程之后再说DHCP.void uip_init(void){ for(c = 0; c destipaddr... 阅读全文
posted @ 2015-04-01 21:07 邓小俊 阅读(1851) 评论(0) 推荐(0) 编辑
摘要: LWIP是一款开源的嵌入式网络协议栈,支持的功能很多,而且能在多任务环境下和单任务裸机环境下跑,今天说说他的移植过程,芯片为STM32,网卡为ENC28J60,无操作系统 首先下载LWIP的源代码,我下载的是1.4.1的源码,下载后解压,文件结构如图 将这四个目录中的文件全部拷贝到工程中,API是... 阅读全文
posted @ 2015-03-30 23:23 邓小俊 阅读(14840) 评论(0) 推荐(0) 编辑
摘要: UIP是单片机界联网的一个很好地选择,移植这个库有点复杂,首先是第一步,网卡驱动要写好,使用的网卡芯片为ENC28J60,驱动可以再工程包里面找到//配置网卡硬件,并设置MAC地址 //返回值:0,正常;1,失败;u8 tapdev_init(u8* macaddr){ u8 ... 阅读全文
posted @ 2015-03-28 23:34 邓小俊 阅读(7107) 评论(0) 推荐(0) 编辑
摘要: 使用FATFS只是完成了一个基本的文件读写,有时候我们需要扩展一些功能,比如MP3实验,需要上一曲下一曲的切换,扩展的代码如下//显示目录下所有文件u8 ShowFileList(u8* dirPath){ u8 *pname; //带路径的文件名,最终生成的文件名 ... 阅读全文
posted @ 2015-03-28 22:57 邓小俊 阅读(2345) 评论(0) 推荐(0) 编辑
摘要: 图片解码首先是最简单的bmp图片解码,关于bmp的结构可自行查阅,代码如下#ifndef __BMPDECODE_H_#define __BMPDECODE_H_#include "ff.h"#include "lcd.h"#include "stdlib.h"#include "usb_type.... 阅读全文
posted @ 2015-03-28 22:52 邓小俊 阅读(7238) 评论(0) 推荐(0) 编辑
摘要: USB设备可以定义一个复合设备,复合设备分两种,一种是一个设备多个配置,还有一种是一个配置多个接口,在本例中采用一个配置多个接口的方式 首先修改设备描述符,标准设备描述符和报告描述符都不需要修改,只需要修改配置描述符即可//usb配置描述符const u8 DinkUsbConfigDescrip... 阅读全文
posted @ 2015-03-28 22:32 邓小俊 阅读(11149) 评论(0) 推荐(0) 编辑
摘要: LIBUSB是一款简单好用的USB通讯开发库,一般HID设备用该库通讯能大大降低开发周期,使用如下,首先需要为设备安装驱动在libusb的bin目录下有一个inf_wirzed.exe的文件,该文件是生成驱动所用,具体步骤可以网上百度,很是傻瓜式操作,安装好驱动之后就可以使用其通讯函数了,安装好驱动... 阅读全文
posted @ 2015-03-22 20:35 邓小俊 阅读(1532) 评论(0) 推荐(1) 编辑
摘要: 首先在之前鼠标的基础上修改设备描述符#include "usbdesc.h"//usb标准设备描述符const U8 USB_DeviceDescriptor[] = { USB_DEVICE_DESC_SIZE, //bLength字段。设备描述符的长度为18(0x12)字节 USB_DEVICE... 阅读全文
posted @ 2015-03-22 19:22 邓小俊 阅读(1700) 评论(0) 推荐(0) 编辑
摘要: 该文档使用USB固件库,在其基础上进行了自己的定制,完成了一个USB-HID设备,首先是usb_desc.c文件,里面存放了usb各种描述符的存在#include "usb_desc.h"//usb标准设备描述符const u8 DinkUsbDeviceDescriptor[DINK_USB_SI... 阅读全文
posted @ 2015-03-22 18:19 邓小俊 阅读(6695) 评论(1) 推荐(1) 编辑
摘要: 李仲篇 从少林藏经阁地牢逃出来的第二年,我离开西域,再一次来到了长安. 当时,基本风头已经过去了,虽然江湖上还在流传着我的通缉令,但是关注的人没有那么多,毕竟这世上坏人太多了,总是层出不穷,而我作为一个二十年前的坏人,关注度其实并没有那么高,长安城墙下的通缉令张贴处我的画像我也去看了,那是我二十... 阅读全文
posted @ 2015-03-15 21:05 邓小俊 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 血眼龙王传-初章 我要死了. 说这句话之前我仔仔细细看了一下周围的山崖结构以及山下的植被情况,经过详细的推算得到了这个结果,理论上应该很准确,跳崖这个事情我做过一次,上次没事,而且还能遇到陆危楼,陆危楼天下只有一个,所以下面应该就没有陆危楼了,其实这是废话,有事现在也不会还能说这句话,但是我想说... 阅读全文
posted @ 2015-03-15 18:52 邓小俊 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 首先是对于端点的数据处理#ifndef __USBEP2_H_#define __USBEP2_H_#include "usb.h"#include "usbhw.h"#include "msc.h"#include "mscuser.h"void usb_ep2_in_process(void);... 阅读全文
posted @ 2015-03-15 17:19 邓小俊 阅读(808) 评论(0) 推荐(0) 编辑
摘要: u8 nandflash_write_buffer[NAND_SERECT_FULL_SIZE];static int currentBlock = -1;static int currentPage = -1;//带缓冲的nand读取,不支持跨扇区void NAND_Read_Addr_Mal(u... 阅读全文
posted @ 2015-03-15 17:19 邓小俊 阅读(1283) 评论(0) 推荐(0) 编辑
摘要: #ifndef __LCD_H_#define __LCD_H_#include "common.h"#include "debugserial.h"#include "delay.h"#include "sdram.h"#define White 0xFFFFFF#define Black 0x0... 阅读全文
posted @ 2015-03-15 17:18 邓小俊 阅读(1328) 评论(0) 推荐(0) 编辑
摘要: #include "led.h"void led_init(void){ //p1.14 p0.16 p1.13 p4.27 LPC_SC->PCONP |= (1P1_14 = 0x00;//选择gpio功能,禁止迟滞 不反向 正常推挽 LPC_IOCON->P1_14 |= (2P0_16 = ... 阅读全文
posted @ 2015-03-15 17:18 邓小俊 阅读(678) 评论(0) 推荐(0) 编辑
摘要: #ifndef __TIM_H_#define __TIM_H_#include "common.h"extern u8 tim1_mr0_flag;void tim0_ch0_count_int_init(u32 pr,u32 count);//定时器0 通道0 计数模式 中断模式 初始化#end... 阅读全文
posted @ 2015-03-15 17:18 邓小俊 阅读(919) 评论(0) 推荐(0) 编辑
摘要: #ifndef __SYS_H_#define __SYS_H_#include "common.h"#define SystemCoreClock 120000000 //cpu时钟频率,计算时有用#define ApbClock 120000000 //120M#define EmcClock ... 阅读全文
posted @ 2015-03-15 17:18 邓小俊 阅读(662) 评论(0) 推荐(0) 编辑
摘要: #ifndef __IIC0_H_#define __IIC0_H_#include "common.h"#include "delay.h"//IIC通讯过程中的指定状态#define STATUS_SENDSTART 0X08 //已经发送起始条件#define STATUS_REPEATSTA... 阅读全文
posted @ 2015-03-15 17:17 邓小俊 阅读(631) 评论(0) 推荐(0) 编辑
摘要: Sdram型号为hy57v256#ifndef __SRAM_H_#define __SRAM_H_#include "common.h"#include "delay.h"#include "stdlib.h"#include "debugserial.h"#define SDRAM_DEBUG#... 阅读全文
posted @ 2015-03-15 17:17 邓小俊 阅读(711) 评论(0) 推荐(0) 编辑
摘要: Lpc1788内置有eeprom使用代码#ifndef __E2PRONINCHIP_H_#define __E2PROMINCHIP_H#include "common.h"#include "sys.h"#include "debugserial.h"#define EEPROM_CLOCK 3... 阅读全文
posted @ 2015-03-15 17:17 邓小俊 阅读(991) 评论(0) 推荐(0) 编辑
摘要: #ifndef __SPI_H_#define __SPI_H_#include "common.h"#include "delay.h"// cs p1.21//sck p1.20//miso p1.23//mosi p1.24#define SPI_CLOCK 12000000void spi0... 阅读全文
posted @ 2015-03-15 17:16 邓小俊 阅读(1056) 评论(0) 推荐(0) 编辑
摘要: 首先是gpio中断,这一点和1768不同,1768使用的中断时和eint3共用中断通道,到了1788,专门为gpio开辟了中断#ifndef __JOYPAD_H_#define __JOYPAD_H_#include "sys.h"#include "delay.h"#define JOYPAD_... 阅读全文
posted @ 2015-03-15 02:12 邓小俊 阅读(1387) 评论(0) 推荐(0) 编辑
摘要: Norflash型号为sst39vf32#ifndef __NORFLASH_H_#define __NORFLASH_H_#include "common.h"#include "delay.h"#include "debugserial.h"#define NOR_FLASH_BASE 0x80... 阅读全文
posted @ 2015-03-15 02:07 邓小俊 阅读(718) 评论(0) 推荐(0) 编辑
摘要: #ifndef __ADC1_H_#define __ADC1_H_#include "common.h"#include "delay.h"void adc_init(u8 ch,u8 div);u16 adc_cover(u8 ch);#endif#include "adc1.h"void ad... 阅读全文
posted @ 2015-03-15 02:06 邓小俊 阅读(847) 评论(0) 推荐(0) 编辑
摘要: #ifndef __DEBUGSERIAL_H_#define __DEBUGSERIAL_H_#include "sys.h"#include "stdio.h"extern u8 serialBuffer[256];extern u16 serialStatus;//ڰvoid Debug_Se... 阅读全文
posted @ 2015-03-15 02:05 邓小俊 阅读(1408) 评论(0) 推荐(0) 编辑
摘要: #ifndef __MYIIC_H_#define __MYIIC_H_#include "common.h"#include "delay.h"#include "debugserial.h"//sda 027 scl 028//IO方向设置#define IIC1_SDA_IN() P0dir(... 阅读全文
posted @ 2015-03-15 02:04 邓小俊 阅读(667) 评论(0) 推荐(0) 编辑
摘要: #ifndef __USBCFG_H__#define __USBCFG_H__//#define USB_IF_NUM 1#define USB_MAX_PACKET0 64#define USB_DMA_EP 0x00000000//尽量不要是能太多时间//这里每一个事件都代表着一个回调函数,使... 阅读全文
posted @ 2015-03-15 01:57 邓小俊 阅读(879) 评论(0) 推荐(0) 编辑
摘要: #ifndef __USBEP1_H_#define __USBEP1_H_#include "usb.h"#include "usbhw.h"extern s8 sendBuffer[4]; //鼠标数据发送缓冲区extern u8 mouse_connect; //鼠标连接标志void usb_... 阅读全文
posted @ 2015-03-15 01:56 邓小俊 阅读(529) 评论(0) 推荐(0) 编辑
摘要: #ifndef __USBREG_H#define __USBREG_H/* usb设备中断定义 usb_devintst usb_devinten usb_devintclr usb_devintdet*/#define FRAME_INT 0x00000001 //每隔1MS产生一次帧中断,该中... 阅读全文
posted @ 2015-03-15 01:55 邓小俊 阅读(1065) 评论(0) 推荐(0) 编辑
摘要: 枚举过程如下#ifndef __USBCORE_H__#define __USBCORE_H__/* USB端点0 发送数据结构体*/typedef struct _USB_EP_DATA{ U8 *pData; U16 Count;} USB_EP_DATA;/* USB全局变量 */extern... 阅读全文
posted @ 2015-03-15 01:53 邓小俊 阅读(755) 评论(0) 推荐(0) 编辑
摘要: #ifndef __USB_H__#define __USB_H__//usb传输数据的宏定义描述#include "sys.h"typedef __packed union { U16 W; __packed struct { U8 L; U8 H; } WB;} U16_8;//定义一个16位长... 阅读全文
posted @ 2015-03-15 01:51 邓小俊 阅读(887) 评论(0) 推荐(0) 编辑
摘要: LPC1768芯片带有USB设备控制器,前面写的文章都是在说比较简单的设备驱动,今天来说复杂一点的 首先是硬件层的配置#ifndef __USBHW_H__#define __USBHW_H__#include "debugSerial.h"#include "usbreg.h"#inclu... 阅读全文
posted @ 2015-03-15 01:50 邓小俊 阅读(1641) 评论(0) 推荐(0) 编辑
摘要: #define XTAL_FREQ 12000000#define VECT_TAB_OFFSET 0x0000void SystemInit(void){ //PLL0时钟配置 LPC_SC->SCS = 0X00000020; /*使能外部主晶振,频率范围1-20M*/ if (LPC_SC->... 阅读全文
posted @ 2015-03-15 01:48 邓小俊 阅读(517) 评论(0) 推荐(0) 编辑
摘要: //其他通道的基本定时功能都能在这里实现void Time0Mr0Init(u32 arr,u32 psc){ LPC_SC->PCONP |= (1TCR |= (1MR0 = psc; //匹配寄存器与定时器计数器值相比较 LPC_TIM0->IR |= 0XFF; //清所有中断标志位 LPC... 阅读全文
posted @ 2015-03-15 01:46 邓小俊 阅读(1399) 评论(0) 推荐(0) 编辑