5.7_任务4 传感器节点组网——代码 (1).docVIP

5.7_任务4 传感器节点组网——代码 (1).doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

5.7任务4传感器节点组网——代码

5.7.2任务实施

编写程序

(1)增加头文件

#include?hal_defs.h??

#include?hal_cc8051.h??

#include?hal_int.h??

#include?hal_mcu.h??

#include?hal_board.h??

#include?hal_led.h??

#include?hal_rf.h??

#include?basic_rf.h??

#include?hal_uart.h???

#include?hal_pwm.h???

#include?UART_PRINT.h??

#include?stdlib.h??

#include?string.h??

#include?stdio.h??

(2)宏和变量定义。定义点对点通讯地址、无线数据缓存数组、无线参数结构体及LED灯闪烁的宏。

/*****点对点通讯地址设置******/

#defineRF_CHANNEL16//频道11~26

#definePAN_ID0xD0C2//网络id

#defineMY_ADDR0xB4F3//本机模块地址

/********无线数据缓存********/

#defineMAX_SEND_BUF_LEN128

#defineMAX_RECV_BUF_LEN128

staticuint8pTxData[MAX_SEND_BUF_LEN];//定义无线发送缓冲区的大小

staticuint8pRxData[MAX_RECV_BUF_LEN];//定义无线接收缓冲区的大小

/**************************************************/

staticbasicRfCfg_tbasicRfConfig;

//使LEDn闪烁time毫秒

#defineFlashLed(n,time)do{\

halLedSet(n);\

halMcuWaitMs(time);\

halLedClear(n);\

}while(0)

(3)无线初始化函数ConfigRf_Init(),参考传感节点。

(4)新增生成数组的16进制形式的字符串格式函数GetHexStr()。

/******************************************************************************************?

*函数:uint8?GetHexStr(uint8?*input,?uint8?len,?uint8?*output)?

*功能:生成数组的16进制形式的字符串格式,成员间以空格隔开?

*?????例如:由{0xA1,0xB2,0xC3}生成A1?B2?C3?

*输入:uint8?*input-指向输入缓存区,?uint8?len-输入数据的字节长度?

*输出:uint8?*output-指向输出缓存区?

*返回:返回生成字符串的长度?

*特殊说明:无?

******************************************************************************************/

uint8?GetHexStr(uint8?*input,?uint8?len,?uint8?*output)??

{??

??char?str[128];??

??memset(str,?\0,?128);??

??for(uint8?i=0;?ilen;?i++)??

??{??

????sprintf(str+i*3,%02X?,?*input);??//注意,字符串间以空格隔开,“%02X”双引号中有一个空格

????input++;??

??}??

??strcpy((char?*)output,?(const?char?*)str);??

??return?strlen((const?char?*)str);??

}??

(5)初始化定时器1输出PWM,使PWM波的周期和占空比可调,由前面的定时器知识,编写出函数TIM1_PwmInit()用于控制输出的PWM波,函数原型定义在hal_pwm.c中,源码如下。

/*******************************************

文档评论(0)

方世玉 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6101050130000123

1亿VIP精品文档

相关文档