自己做的ARM的UDP通信实验 - 图文(3)
6) 在Startup.s文件的ResetInit子程序中,修改存储器接口Bank3总线配置,如程序清单
程序清单 3 存储器接口Bank3总线配置
LDR R0, =BCFG3 ;设置BCFG3寄存器 LDR R1, =0x10001460 STR R1, [R0] 4.2 实验程序
4.2.1
宏定义
首先对程序进行初始化宏定义,如程序清单 4
程序清单 4 初始化宏定义
#include \
#include \void Timer1_Init(void);
#define TASK_START_ID 0 #define TASK_1_ID 1 #define TASK_2_ID 2 #define TASK_3_ID 3 #define TASK_4_ID 4 #define TASK_5_ID 5 #define TASK_6_ID 6
#define TASK_START_PRIO 10 #define TASK_1_PRIO 11 #define TASK_2_PRIO 12 #define TASK_3_PRIO 13 #define TASK_4_PRIO 14 #define TASK_5_PRIO 15 #define TASK_6_PRIO 16
10
#define MSG_QUEUE_SIZE 20
OS_EVENT OS_EVENT OS_EVENT OS_EVENT
OS_STK task0_stack[3000]; OS_STK task1_stack[1000]; OS_STK task2_stack[2000]; OS_STK task3_stack[1000]; OS_STK task4_stack[2000];
4.2.2
RTL8019AS监听任务
*RecPackedFlag;
*RecBufOverFlowFlag; *RecTcpPackedFlag; *RecPingPackedFlag;
网络控制器监听程序,如程序清单 5
程序清单 5 网卡监听任务
void TaskB(void *pdata) //重要的监听RTL8019AS任务 {
void * UdpTemp; uint8 eer; while (1) { }
11
UdpTemp=OSQPend(RecUdpQFlag,0,&eer);
if(eer==OS_NO_ERR)
Udp_Process((Rec_Ptr *)UdpTemp); eer=eer; { }
}
4.2.3 UDP通信程序
UDP通信程序见程序清单 6
程序清单 6 UDP服务器
void TaskD(void *pdata) {
uint8 add[36]={\当接收到“A”时发送的数据
uint8 add1[10]={\当出错是发送的数据 uint8 rec_buffer[100]; //发送缓存区 SOCKET s;
uint8 couter_byte=5; //重复发送的次数
int rec_coute,send_coute; uint16 iii;
struct sockaddr servaddr,clientaddr;
OSTimeDly(60);
servaddr.sin_family=0; //设置客户机IP servaddr.sin_addr[0]=172; servaddr.sin_addr[1]=30; servaddr.sin_addr[2]=172; servaddr.sin_addr[3]=125;
servaddr.sin_port=1026; //设置服务器端口号
OSTimeDly(60);
s=*socket( 0, SOCK_DGRAM, UDP_PROTOCOL);//建clientaddr.sin_family=0; //设置本地IP
立SOCKET
clientaddr.sin_addr[0]=172; clientaddr.sin_addr[1]=30; clientaddr.sin_addr[2]=172; clientaddr.sin_addr[3]=77;
clientaddr.sin_port=1025; //设置本地监听端口号 iii=bind(
(SOCKET
12
* )&s, (struct
sockaddr*)&clientaddr,sizeof(clientaddr)); //绑定服务器地址
while (1) {
rec_coute=recvfrom( s, rec_buffer, 100, 0, (struct
sockaddr*)&servaddr, &iii ); //接收数据
if(rec_coute>0) { }
while(couter_byte!=0) //循环发送数据 {
send_coute=sendto(s,
if(send_coute==34) OSTimeDly(40); send_coute=sendto(s,
add1,
9,
0,
(struct
add,
34,
0,
(struct
if(rec_buffer[0]=='A') //如果第一个数据是“A”
couter_byte=5;
send_coute=sendto(s, rec_buffer, rec_coute, 0, (struct else
sockaddr*)&servaddr, sizeof(servaddr) ); //把接收的数据返回
sockaddr*)&servaddr, sizeof(servaddr) );
}
}
else
sockaddr*)&servaddr, sizeof(servaddr) ); //出错后发送的数据
OSTimeDly(40); couter_byte--;
}
13
4.2.4 创建系统任务并初始化
创建系统任务并初始化如程序清单 7
程序清单 7 系统任务
void task0(void *pdata)
{ /*在第1个任务中设置定时器0及中断*/ UBYTE iii;
#if OS_CRITICAL_METHOD == 3 OS_CPU_SR cpu_sr;
#endif
TargetInit();
OSTaskCreateExt(TaskB,
//
重要
的监听
RTL8019AS任务
(void *)0, &task1_stack[999], TASK_1_PRIO, TASK_1_ID, &task1_stack[0], 1000, (void *)0, 0);
OSTaskCreateExt(TaskD, //接受数据和发送数据 (void *)0, &task3_stack[999], TASK_3_PRIO, TASK_3_ID, &task3_stack[0], 1000, (void *)0, 0);
14
…… 此处隐藏:750字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [建筑文档]2018年公需课:专业技术人员创新能力与
- [建筑文档]2013年福建教师招考小学数学历年真题
- [建筑文档]高中信息技术课flash知识点总结 - 图文
- [建筑文档]电工实训 - 图文
- [建筑文档]最高院公告案例分析100篇(民商篇)
- [建筑文档]南开中学高2017级14-15学年(上)期末
- [建筑文档]五粮液集团战略分析
- [建筑文档]鲁教版(2012秋季版)九年级化学 酸碱
- [建筑文档]超星尔雅2017中国哲学概论自整理题库答
- [建筑文档]关于成为海口金盘饮料公司材料独家供货
- [建筑文档]LNG学习资料第一册 基础知识 - 图文
- [建筑文档]四年级品社下册《好大一个家》复习资料
- [建筑文档]现阶段领导权力腐败的特点及发展趋势
- [建筑文档]魏晋南北朝诗歌鉴赏—嵇康
- [建筑文档]坚持追求真爱是理智的行为 正方一辩稿
- [建筑文档]湘西州刑释解教人员帮教安置工作存在的
- [建筑文档]园林工程试题库及答案
- [建筑文档]计算机长期没有向WSUS报告状态
- [建筑文档]日语最新流行语
- [建筑文档]B62-016 景观进场交底专题会议
- 2018年中考语文课内外古诗词鉴赏专题复
- 高考试题研究心得体会
- C语言基础题及答案
- 电气控制及PLC习题及答案
- 都昌小学家长学校汇报材料
- GMAT作文模板正确使用方法
- 俄军办坦克大赛:中国99式有望与豹2A6
- 成本会计练习题
- 酒店餐饮业最流行的5S管理方法
- 2014-2015学年山东省菏泽市高二(下)
- 《黄鹤楼送孟浩然之广陵》教案、说课、
- 2013年结构化学自测题 有答案版
- 2011西安世界园艺博览会游览解说词(附
- 窗口文明单位示范单位创建活动总结
- 2018满分超星尔雅就业课后练习期末答案
- 韶山市城市总体规划-基础资料
- 苏教版第三单元知识点归纳
- 第4章 曲轴模态分析
- 加大查办案件力度的思考
- 武汉CPC导轨介绍