嵌入式课程设计报告
开始 系统时钟和玩味设备初始化 NO RF初始化 YES SW1是否按下 YES NO 信道设置 是否按下SW2或SW4 SW2被按下 开启接收功能 发射功率设置 SW3被按下 发送数据包数量设置 是否接受到数据 发送速度设置 数据计算 YES 计 关闭接收功能 NO 是否按下SW4? 结果显示 NO 是否使能32K定时器 定时发送数据
图13流程图
18
嵌入式课程设计报告
附录
#include \#include \#include \#include \#include \#include \
#define RF_CHANNEL 25 // RF 使用信道25,其功率是2.4GHz #define PAN_ID 0x2011 //通信PANID #define SWITCH_ADDR 0x2530 //开关模块地址 #define LIGHT_ADDR 0xBEEF //灯模块地址 #define APP_PAYLOAD_LENGTH 1 //命令长度 #define LIGHT_TOGGLE_CMD 0 //命令数据 // 以下为状态的宏定义 #define IDLE 0 #define SEND_CMD 1 //角色的宏定义 #define NONE 0 #define SWITCH 1 #define LIGHT 2 #define APP_MODES 2 //按键的宏定义 #define HAL_BUTTON_1 1 #define HAL_BUTTON_2 2 #define HAL_BUTTON_3 3 #define HAL_BUTTON_4 4 #define HAL_BUTTON_5 5 #define HAL_BUTTON_6 6 static
uint8
pTxData[APP_PAYLOAD_LENGTH];
//
发
pRxData[APP_PAYLOAD_LENGTH]; //接收数据数组
19
送
数
据
数
组
嵌入式课程设计报告
static basicRfCfg_t basicRfConfig; //RF初始化
extern void halboardinit(void); //硬件的初始化函数为halboardinit extern void ctrPCA9554FLASHLED(uint8 led); //IIC灯控制函数 extern void ctrPCA9554LED(uint8 led,uint8 operation); extern uint8 halkeycmd(void); //获取按键值函数 #ifdef SECURITY_CCM //定义安全密钥 static uint8 key[]= {
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, }; #endif
static void wanLight(); //灯应用处理函数 static void wanSwitch(); //开关应用处理函数
static uint8 wanSelectMode(void); //应用功能选择函数
/************************************************************************** * 函数名称:wanLight
* 功能描述:接收模式应用函数,初始化RF一些参数,接收另一个模块发送的控制命令,然后控制相应的LED灯
* 参 数:无 * 返 回 值:无
**************************************************************************/ static void wanLight() {
basicRfConfig.myAddr = LIGHT_ADDR; //设置灯应用函数接收模块的地址 if(basicRfInit(&basicRfConfig)==FAILED) //RF初始化 {
ctrPCA9554FLASHLED(5); //若RF初始化失败,则所有的LED5都将闪烁 } 165 basicRfReceiveOn(); //打开接收功能 // Main loop while (TRUE) {
while(!basicRfPacketIsReady()); //准备接收数据
20
嵌入式课程设计报告
if(basicRfReceive(pRxData, APP_PAYLOAD_LENGTH, NULL)>0) //如若满足条件,则接收数据
{
if(pRxData[0] == LIGHT_TOGGLE_CMD) //判断命令正确与否 {
ctrPCA9554FLASHLED(1); //关闭或打开LED1 } } } }
/************************************************************************** * 函数名称:wanSwitch
* 功能描述:发送模式应用函数,初始化发送模式RF,通过按下SW4向另一个模块发送控制命令。
* 参 数:无 * 返 回 值:无
**************************************************************************************************/
static void wanSwitch() {
pTxData[0] = LIGHT_TOGGLE_CMD; //向发送数据中写入命令
basicRfConfig.myAddr = SWITCH_ADDR; //设置开关应用发送模块的地址 if(basicRfInit(&basicRfConfig)==FAILED) //RF初始化 {
ctrPCA9554FLASHLED(5); //RF初始化失败,则所有的LED5闪烁 } 166 basicRfReceiveOff(); //关闭接收功能 // Main loop while (TRUE) {
if(halkeycmd() == HAL_BUTTON_4) //判断是否按下SW4 {
basicRfSendPacket(LIGHT_ADDR, pTxData, APP_PAYLOAD_LENGTH);//发送数据
21
相关推荐: