CC2530開發試題(三)
阿新 • • 發佈:2021-11-10
試題
程式碼部分
ZigbeeA - rf_set.c
#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 "sensor_drv/sensor.h" #include <stdio.h> #include <string.h> #include <stdarg.h> /*****點對點通訊地址設定******/ #define RF_CHANNEL 25 // 頻道 11~26 #define PAN_ID 0x1234 //網路id #define MY_ADDR 0x1111 //本機模組地址 #define SEND_ADDR 0x2222 //傳送地址 /**************************************************/ static basicRfCfg_t basicRfConfig; // 無線RF初始化 void ConfigRf_Init(void) { basicRfConfig.panId = PAN_ID; basicRfConfig.channel = RF_CHANNEL; basicRfConfig.myAddr = MY_ADDR; basicRfConfig.ackRequest = TRUE; while(basicRfInit(&basicRfConfig) == FAILED); basicRfReceiveOn(); } /********************MAIN************************/ void main(void) { halBoardInit();//選手不得在此函式內新增程式碼 ConfigRf_Init();//選手不得在此函式內新增程式碼 uint8 ledArray[4] = {0x06, 0x05, 0x14, 0xC}; uint8 ledCurrCount, cycleCount; uint8 key_send; P1SEL &= ~0xFF; P1DIR &= ~0xFF; P1DIR |= 0x1F; P1 = 0x04; while(1) { /* user code start */ if(P1_2 == 0) { halMcuWaitMs(10); if(P1_2 == 0) { key_send = 0x01; basicRfSendPacket(SEND_ADDR, &key_send, 1); while(cycleCount < 3) { P1 = ledArray[ledCurrCount]; halMcuWaitMs(2000); if(ledCurrCount == 3) ++cycleCount; if(ledCurrCount < 3) ++ledCurrCount; else ledCurrCount = 0; if(cycleCount == 3) { key_send = 0x00; basicRfSendPacket(SEND_ADDR, &key_send, 1); } } while(P1_2 == 0); //鬆手後 ledCurrCount = 0; cycleCount = 0; P1 = 0x04; } } /* user code end */ } }
ZigbeeB - rf_set.c
#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 "sensor_drv/sensor.h" #include <stdio.h> #include <string.h> #include <stdarg.h> /*****點對點通訊地址設定******/ #define RF_CHANNEL 25 // 頻道 11~26 #define PAN_ID 0x1234 //網路id #define MY_ADDR 0x2222 //本機模組地址 #define SEND_ADDR 0x1111 //傳送地址 /**************************************************/ static basicRfCfg_t basicRfConfig; // 無線RF初始化 void ConfigRf_Init(void) { basicRfConfig.panId = PAN_ID; basicRfConfig.channel = RF_CHANNEL; basicRfConfig.myAddr = MY_ADDR; basicRfConfig.ackRequest = TRUE; while(basicRfInit(&basicRfConfig) == FAILED); basicRfReceiveOn(); } /********************MAIN************************/ void main(void) { halBoardInit();//選手不得在此函式內新增程式碼 ConfigRf_Init();//選手不得在此函式內新增程式碼 uint8 key_recv; P1SEL &= ~0xFF; P1DIR &= ~0xFF; P1DIR |= 0x81; P1 = 0x00; while(1) { /* user code start */ if(basicRfPacketIsReady()) { basicRfReceive(&key_recv, 1, NULL); if(key_recv == 0x01) { //開啟ledlight P1_0 = 1; P1_7 = 1; } else if(key_recv == 0x00) { //關閉ledlight halMcuWaitMs(3000); P1_0 = 0; P1_7 = 0; } } /* user code end */ } }