正在加载图片...
广州周立功单片机发展有限公司Tel:(020)38730916387309173873097638730977Fax:38730925 3. PD I USBD12设备端源码分析 下面说明设备端程序编写的详细过程: 第一步包含驱动程序相关头文件及定义应用程序使用的堆栈及事件。将 PDIUSBD12 驱动程序软件包加入到我们提供的工程模板中,然后请按照第14节(USB驱动程序软件包 的使用)修改相关内容。最后建立 main. c文件, main. c文件的开始部分见程序清单2。 程序清单2包含相关头文件、定义堆栈及事件 #include"config. h ∥包含LPC200模板的配置头文件 #include"D12 Driver. h ∥含 PDIUSBD12驱动程序的头文件 OS STK Task StartStk[ 128; 操作系统起动任务堆栈 OS STK TaskReclstk[400 ∥任务1堆栈(400个字 OS STK TaskRec2Stk[400]; ∥任务2堆栈(400个字) OS EVENT*TaskRec1 Sem ∥任务1就绪信号量 OS EVENT *Task Rec2 Sem ∥任务2就绪信号量 第二步配置PD|USBD12的中断优先级和设置 PDI USBD12的中服务程序地址。如程序清 单3所示。 程序清单3配置PD|USBD12的中断 void Init D12Int( void) VICVectCntl1=(0x20 0X0E); /FNT0通道分配到 IRQ slot1 VIC VectAddrI =(INT32U)Usb Handler ∥设置ENT0向量地址 VICInt Enable =1 <<14 ∥允许EINT0 第三步建立 I nt main(void函数。主函数初始化μCOS操作系统并启动该操作系 统。该函数如程序清单4所示。 程序清单4 int main(void函数 int main(void) OSInito ∥l始化uC/OS-I OS Task Create(TaskStart, (void*)0, &Task StartStk[ 1271, 3) ∥)创建起动任务 ∥开始多任务 第四步初始化目标板及PD|USBD12,运行起动任务。这些工作由起动任务 Task Start 完成。如程序清单5所示。 程序清单5起动任务 TaskStart( oid TaskStart(void"pdata)广州周立功单片机发展有限公司 Tel: (020) 38730916 38730917 38730976 38730977 Fax: 38730925 3.PDIUSBD12 设备端源码分析 下面说明设备端程序编写的详细过程: 第一步 包含驱动程序相关头文件及定义应用程序使用的堆栈及事件。将 PDIUSBD12 驱动程序软件包加入到我们提供的工程模板中,然后请按照第 1.4 节(USB 驱动程序软件包 的使用)修改相关内容。最后建立 main.c 文件,main.c 文件的开始部分见程序清单 2。 程序清单 2 包含相关头文件、定义堆栈及事件 #include "config.h" //包含 LPC2200 模板的配置头文件 #include "D12Driver.h" //包含 PDIUSBD12 驱动程序的头文件 OS_STK TaskStartStk[128]; //操作系统起动任务堆栈 OS_STK TaskRec1Stk[400]; //任务 1 堆栈(400 个字) OS_STK TaskRec2Stk[400]; //任务 2 堆栈(400 个字) OS_EVENT *TaskRec1_Sem; //任务 1 就绪信号量 OS_EVENT *TaskRec2_Sem; //任务 2 就绪信号量 第二步 配置 PDIUSBD12 的中断优先级和设置 PDIUSBD12 的中服务程序地址。如程序清 单 3 所示。 程序清单 3 配置 PDIUSBD12 的中断 void Init_D12Int(void) { VICVectCntl1 = (0x20 | 0x0E); //EINT0 通道分配到 IRQ slot 1 VICVectAddr1 = (INT32U)Usb_Handler; //设置 EINT0 向量地址 VICIntEnable = 1 << 14; //允许 EINT0 } 第三步 建立 int main(void)函数。主函数初始化 µC/OS-II 操作系统并启动该操作系 统。该函数如程序清单 4 所示。 程序清单 4 int main(void)函数 int main (void) { OSInit(); //初始化 µC/OS-II OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[127], 3); //创建起动任务 OSStart(); //开始多任务 } 第四步 初始化目标板及 PDIUSBD12,运行起动任务。这些工作由起动任务 TaskStart() 完成。如程序清单 5 所示。 程序清单 5 起动任务 TaskStart() void TaskStart (void *pdata) { - 11 -
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有