Browse Source

更新项目名称

dropLin 9 months ago
parent
commit
ec53a2822a
2 changed files with 837 additions and 837 deletions
  1. 2 2
      keil_v5/project.uvoptx
  2. 835 835
      project/main.c

+ 2 - 2
keil_v5/project.uvoptx

@@ -350,7 +350,7 @@
       <OPTFL>
         <tvExp>1</tvExp>
         <tvExpOptDlg>0</tvExpOptDlg>
-        <IsCurrentTarget>1</IsCurrentTarget>
+        <IsCurrentTarget>0</IsCurrentTarget>
       </OPTFL>
       <CpuCode>18</CpuCode>
       <DebugOpt>
@@ -574,7 +574,7 @@
       <OPTFL>
         <tvExp>1</tvExp>
         <tvExpOptDlg>0</tvExpOptDlg>
-        <IsCurrentTarget>0</IsCurrentTarget>
+        <IsCurrentTarget>1</IsCurrentTarget>
       </OPTFL>
       <CpuCode>255</CpuCode>
       <DebugOpt>

+ 835 - 835
project/main.c

@@ -1,835 +1,835 @@
-#include "main.h"
-#include "ReadKey.h"
-#include "key.h"
-#include "ReadKey.h"
-#include "crc8.h"
-#include "led.h"
-#include "eventUnit.h"
-#include "myADC.h"
-#include "myInputCapture.h"
-#include "myLcd.h"
-#include "myDisplayUnit.h"
-#include "myFlashData.h"
-#include "myTim.h"
-#include "myUart.h"
-#include "myUart3.h"
-#include "myRadio.h"
-
-#define SOFT_VERSION 0x06
-#define SET_RF_FREQ_HZ(base, ch,step) base+ch*step*10*1000
-//---------------key
-KeyParamExt_ts *getKeyReturn;
-key_value_te keyPressValue;
-
-
-static uint16_t present_adcValue;
-static uartPacket_ts uart3Packet;
-static uartPacket_ts uartPackage_Rx;
-
-static bool startToCountingRx = false;
-static float present_moduleCurrendValue;
-static float validPackageCount = 0;
-static uint32_t rfContinuousFreq = 1;
-static float rfRxTestRate = 1;
-
-static uint8_t packetTxMode;
-static uint8_t packetRxMode;
-
-static rfRxPacket_ts rfRecvPacket;
-static rfTxPacket_ts rfTxPacket;
-static uint32_t rfTxCount = 0;
-static uint32_t rfRxCount = 0;
-static uint32_t rfTxAndGetAckTime_ms = 0;
-static uint32_t rfTxAndGetAckTimeSet_ms = 1000;
-static uint32_t rfTxReTmCount = 0;
-static bool rfTxGetAckStatus = false;
-static uint8_t rfCtrlMode;
-const uint32_t rfBaseFreqList[DVTP_MAX_COUNT] = 
-{
-    /*"1"*/410920000,
-    /*"2"*/490920000,
-    /*"3"*/850920000,
-    /*"4"*/910920000,
-
-};
-const uint32_t rfBaudrateList[MAX_RF_BAUDRATE_COUNT] = 
-{
-    244, 627, 1220, 2441, 5022, 12500, 20400, 62500
-};
-const int8_t rfTxPowerList[RF_TX_PWR_MAX_COUNT] = 
-{
-    -26,-26,-17,-5,-3,-2,-1,2,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
-};
-static char deviceNameList[DVTP_MAX_COUNT][20] = 
-{
-    /*"1"*/"VG4130S433N0S1",
-    /*"2"*/"VG4130S490N0S1",
-    /*"3"*/"VG4130S868N0S1",
-    /*"4"*/"VG4130S915N0S1",
-};
-static char rf_cr_name[][20] = 
-{
-    /*"0"*/"4/5",
-    /*"1"*/"4/6",
-    /*"2"*/"4/7",
-    /*"3"*/"4/8",
-};
-static char rf_bw_name[][20] = 
-{
-    /*"0"*/"62.5k",
-    /*"1"*/"125k",
-    /*"2"*/"250k",
-    /*"3"*/"500k",
-};
-static char rf_rgm_name[][20] = 
-{
-    /*"0"*/"LDO",
-    /*"1"*/"DCDC",
-};
-userParams_ts deviceInforDef = 
-{
-    .projectModel = "VG4130",
-    .deviceId = 1,
-    .rfChannel = 30,
-    .channelStep = 100,
-    .txPower = RF_TX_PWR_MAX_COUNT - 1,
-    .rfBaudrate = RF_BAUDRATE_1220,
-    .chipType = DVTP_VG4130S433N0S1,
-    .packetLen = 12,
-    .sendPacketCounts = 100,
-    .rf_sf = 9,
-    .rf_bw = 7,
-    .rf_cr = 3,
-    .rf_regulatorMode = 0x01,
-};
-userParams_ts deviceInfor;
-#define EVENT_TIME_CYCLE_10ms         0
-#define EVENT_TIME_CYCLE_500ms      1
-#define EVENT_UART3_RECV     2
-#define EVENT_UART_RECV         3
-// #define EVENT_TEST_RX_TIMEOUT       4
-#define EVENT_RF_CONTINUOUS_TX       5
-#define EVENT_RF_CONTINUOUS_RX       6
-#define EVENT_RF_IDLE       7
-#define EVENT_RF_CONTINUOUS_TX_MD       8
-#define EVENT_TIMEOUT_TO_SAVE_PARAMS       9
-#define EVENT_RF_GET_RX_PACKET       10
-#define EVENT_RF_PACKET_TX       11
-#define EVENT_RF_PACKET_RX       12
-#define EVENT_TIMEOUT_CHECK_RF_PACKET       13
-#define EVENT_RF_RX_ERROR       14
-static uint16_t eventReturn;
-
-void dealKeyPressProccess(void)
-{
-    if (getKeyReturn->haveKey == false)
-    {
-        return;
-    }
-    getKeyReturn->haveKey = false;
-
-    switch (getKeyReturn->value)
-    {
-    case LEFT_KEY:
-    {
-        if(getLongKeySt() == true)
-        {
-            clearLongKey(); 
-
-            EnableReleaseKey();
-            myDisplay_enter(ENTER_LAST_PAGE);
-        }
-        else
-        {
-            if (getReleaseKeySt())
-            {
-
-            }
-            else
-            {
-                EnableLongKey(5);   
-            }
-        }
-    }
-        break;
-    case RIGHT_KEY:
-    {
-        if(getLongKeySt() == true)
-        {
-            clearLongKey(); 
-
-            EnableReleaseKey();
-        }
-        else
-        {
-            if (getReleaseKeySt())
-            {
-
-            }
-            else
-            {
-                EnableLongKey(5);   
-            }
-        }
-    }
-        break;
-    case TOP_KEY:
-    {
-        if(getCyclicKeySt() == true)
-        {
-            EnableCyclicKey(30); 
-            myDisplay_change(1);
-        }
-        else
-        {
-            if (getReleaseKeySt())
-            {
-                beep_shortBeep();
-                myDisplay_change(1);
-            }
-            else
-            {
-                EnableReleaseKey();
-                EnableCyclicKey(300);   
-            }
-        }
-    }
-        break;
-    case BOTTOM_KEY:
-    {
-        if(getCyclicKeySt() == true)
-        {
-            EnableCyclicKey(30); 
-            myDisplay_change(0);
-        }
-        else
-        {
-            if (getReleaseKeySt())
-            {
-                beep_shortBeep();
-                myDisplay_change(0);
-            }
-            else
-            {
-                EnableReleaseKey();
-                EnableCyclicKey(300);   
-            }
-        }
-    }
-        break;
-    case OK_KEY:
-    {
-        if(getLongKeySt() == true)
-        {
-            clearLongKey(); 
-
-            EnableReleaseKey();
-            beep_shortBeep();
-            myDisplay_enter(ENTER_NEXT_PAGE);
-        }
-        else
-        {
-            if (getReleaseKeySt())
-            {
-
-            }
-            else
-            {
-                EnableLongKey(5);   
-            }
-        }
-    }
-        break;
-    default:
-        break;
-    }
-}
-
-/**
- * 
- * 串口回调函数,当串口有硬件超时时会调用该函数
-*/
-static void rcc_init(void)
-{
-    //---------普通IO口时钟使能
-    RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE ); 
-    RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE ); 
-    RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE ); 
-    RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOD, ENABLE ); 
-
-    //----------SPI1时钟使能
-    RCC_APB2PeriphClockCmd( RCC_APB2Periph_SPI1, ENABLE );  
-    //----------复用功能时钟使能
-    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
-
-    #if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL)
-    /* ADCCLK = PCLK2/2 */
-    RCC_ADCCLKConfig(RCC_PCLK2_Div2);
-    #else
-    /* ADCCLK = PCLK2/4 */
-    RCC_ADCCLKConfig(RCC_PCLK2_Div4); 
-    #endif
-}
-/**
- * 
- * 串口回调函数,当串口有硬件超时时会调用该函数
-*/
-void UART1_CALLBACK(uint8_t *buf, uint16_t len)
-{
-    if(uartPackage_Rx.isValid == 0)
-    {
-        memcpy(uartPackage_Rx.packet, buf, len);
-        uartPackage_Rx.len = len;
-        uartPackage_Rx.isValid = 1;
-        event_post(EVENT_UART_RECV);
-    }
-}
-void UART3_CALLBACK(uint8_t *buf, uint16_t len)
-{
-    if(uart3Packet.isValid == 0)
-    {
-        memcpy(uart3Packet.packet, buf, len);
-        uart3Packet.len = len;
-        uart3Packet.isValid = true;
-        event_post(EVENT_UART3_RECV);
-    }
-}
-/**
- * 
- * 定时器中断回调,当产生定时器中断会调用该函数
-*/
-void TIM3_CALLBACK(void)
-{
-    static uint8_t timeCnt_1ms = 0;
-
-    beep_onDriver();
-    if( ++timeCnt_1ms == 5)
-    {
-        timeCnt_1ms = 0;
-        rfTxAndGetAckTime_ms ++;
-        eventDriver();
-    }
-}
-
-void uiEnterCallback(int pageId, int cursorCount, int status, int value)
-{
-    switch (pageId - 1)
-    {
-    case UI_PAGE_ID_ITEM_MODE:
-    {
-
-    }break;
-    case UI_PAGE_ID_RF_CONTINUOUS:
-    {
-        switch (cursorCount)
-        {
-        case CNT_ITEM_INDEX_TX:
-        {
-            // event_post(status ? EVENT_RF_CONTINUOUS_TX : EVENT_RF_CONTINUOUS_RX);
-            event_post(EVENT_RF_CONTINUOUS_TX);
-            rfCtrlMode = status ? UI_PAGE_ID_RF_CONTINUOUS : 0;
-        }
-            break;
-        case CNT_ITEM_INDEX_RX:
-        {
-            event_post(status ? EVENT_RF_CONTINUOUS_RX : EVENT_RF_IDLE);
-        }
-            break;
-        case CNT_ITEM_INDEX_TX_MD:
-        {
-            event_post(status ? EVENT_RF_CONTINUOUS_TX_MD : EVENT_RF_IDLE);
-        }
-            break;
-        default:
-            break;
-        }
-    }
-        break;
-    case UI_PAGE_ID_TX_PACKET:
-    {
-        switch (cursorCount)
-        {
-        case 0://signle pcaket tx
-        case 1:// pcaket tx and wait ack
-        case 2://packet tx unitl max count
-        {
-            setEvent(status ? EVENT_RF_PACKET_TX : EVENT_RF_IDLE, 
-                    status ? true : false, 
-                    status ? 500 : 0);
-            rfCtrlMode = status ? UI_PAGE_ID_TX_PACKET : 0;
-            rfTxCount = 0;
-            rfRxCount = 0;
-            packetTxMode = cursorCount;
-        }
-            break;
-        default:
-            break;
-        }
-    }
-        break;
-    case UI_PAGE_ID_RX_PACKET:
-    {
-        switch (cursorCount)
-        {
-        case 0:
-        case 1:
-        {
-            event_post(status ? EVENT_RF_PACKET_RX : EVENT_RF_IDLE);
-            rfCtrlMode = status ? UI_PAGE_ID_RX_PACKET : 0;
-            rfTxCount = 0;
-            rfRxCount = 0;
-            packetRxMode = cursorCount;
-        }
-            break;
-        default:
-            break;
-        }
-    }
-        break;
-    case UI_PAGE_ID_SETTING:
-    {
-        switch (cursorCount)
-        {
-        case SET_ITEM_INDEX_TYPE://chipType
-        {
-            deviceInfor.chipType = value;
-            myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_TXPOWER, 
-                                            deviceInfor.txPower, 
-                                            RF_TX_PWR_N_26, RF_TX_PWR_MAX_COUNT - 1, 1);
-            myRadio_setTxPower(deviceInfor.txPower);
-            myDisplay_setting_loadParams(SET_ITEM_INDEX_TXPOWER, "%ddBm", rfTxPowerList[deviceInfor.txPower]);
-            myDisplay_setting_loadParams(SET_ITEM_INDEX_TYPE, deviceNameList[deviceInfor.chipType]);
-            myDisplay_setting_loadParams(SET_ITEM_INDEX_FREQ, "%03u->%6.2fMHz", deviceInfor.rfChannel, (float)(SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep)) / 1000000.0);
-            myRadio_setFrequency(SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep));
-            setEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS, false, 200);
-        }
-            break;
-        case SET_ITEM_INDEX_FREQ://Freq
-        {
-            deviceInfor.rfChannel = value;
-            myDisplay_setting_loadParams(SET_ITEM_INDEX_FREQ, "%03u->%6.2fMHz", deviceInfor.rfChannel, (float)(SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep)) / 1000000.0);
-            myRadio_setFrequency(SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep));
-            setEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS, false, 200);
-        }
-            break;
-        case SET_ITEM_INDEX_STEP://channelStep
-        {
-            deviceInfor.channelStep = value;
-            myDisplay_setting_loadParams(SET_ITEM_INDEX_STEP, "%uHz", deviceInfor.channelStep*10*1000);
-            myDisplay_setting_loadParams(SET_ITEM_INDEX_FREQ, "%03u->%6.2fMHz", deviceInfor.rfChannel, (float)(SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep)) / 1000000.0);
-            myRadio_setFrequency(SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep));
-            setEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS, false, 200);
-        }
-            break;
-        case SET_ITEM_INDEX_TXPOWER://TxPower
-        {
-            deviceInfor.txPower = value;
-
-            myRadio_setTxPower(deviceInfor.txPower);
-            myDisplay_setting_loadParams(SET_ITEM_INDEX_TXPOWER, "%ddBm", rfTxPowerList[deviceInfor.txPower]);
-            setEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS, false, 200);
-        }
-        break;
-        case SET_ITEM_INDEX_RFBAUDRATE://RFBAUDRATE
-        {
-            deviceInfor.rfBaudrate = value;
-            myDisplay_setting_loadParams(SET_ITEM_INDEX_RFBAUDRATE, "%ubps", rfBaudrateList[deviceInfor.rfBaudrate]);
-            setEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS, false, 200);
-            deviceInfor.rf_sf = loraBaudrateFrame[deviceInfor.rfBaudrate].SpreadingFactor;
-            deviceInfor.rf_bw = loraBaudrateFrame[deviceInfor.rfBaudrate].SignalBw;
-            deviceInfor.rf_cr = loraBaudrateFrame[deviceInfor.rfBaudrate].ErrorCoding;
-            myDisplay_setting_loadParams(SET_ITEM_INDEX_SF, "%u", deviceInfor.rf_sf);
-            myDisplay_setting_loadParams(SET_ITEM_INDEX_BW, "%u->%s", deviceInfor.rf_bw, rf_bw_name[deviceInfor.rf_bw - 6]);
-            myDisplay_setting_loadParams(SET_ITEM_INDEX_CR, "%u->%s", deviceInfor.rf_cr, rf_cr_name[deviceInfor.rf_cr - 1]);
-        }
-            break;
-        case SET_ITEM_INDEX_PACKET_LEN://
-        {
-            deviceInfor.packetLen = value;
-            myDisplay_setting_loadParams(SET_ITEM_INDEX_PACKET_LEN, "%u Byte", deviceInfor.packetLen);
-            setEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS, false, 200);
-        }
-            break;
-        case SET_ITEM_INDEX_SF://
-        {
-            deviceInfor.rf_sf = value;
-            myDisplay_setting_loadParams(SET_ITEM_INDEX_SF, "%u", deviceInfor.rf_sf);
-            setEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS, false, 200);
-        }
-            break;
-        case SET_ITEM_INDEX_BW://
-        {
-            deviceInfor.rf_bw = value;
-            myDisplay_setting_loadParams(SET_ITEM_INDEX_BW, "%u->%s", deviceInfor.rf_bw, rf_bw_name[deviceInfor.rf_bw - 6]);
-            setEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS, false, 200);
-        }
-            break;
-        case SET_ITEM_INDEX_CR://
-        {
-            deviceInfor.rf_cr = value;
-            myDisplay_setting_loadParams(SET_ITEM_INDEX_CR, "%u->%s", deviceInfor.rf_cr, rf_cr_name[deviceInfor.rf_cr - 1]);
-            setEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS, false, 200);
-        }
-            break;
-        case SET_ITEM_INDEX_RGM://
-        {
-            deviceInfor.rf_regulatorMode = value;
-            myDisplay_setting_loadParams(SET_ITEM_INDEX_RGM, "%u->%s", deviceInfor.rf_regulatorMode, rf_rgm_name[deviceInfor.rf_regulatorMode]);
-            setEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS, false, 200);
-        }
-            break;
-        default:
-            break;
-        }
-    }
-        break;
-
-    default:
-        break;
-    }
-}
-void rfRx_callback(uint8_t status, rfRxPacket_ts packet)
-{
-    
-    
-    switch (status)
-    {
-        case RX_STA_SECCESS:
-        {
-            rfRecvPacket = packet;
-            myRadio_receiver();
-            event_post(EVENT_RF_GET_RX_PACKET);
-        }
-        break;
-        case RX_STA_TIMEOUT:
-        {
-            event_post(EVENT_RF_RX_ERROR);
-        }
-        break;
-        case RX_STA_PAYLOAD_ERROR:
-        {
-            event_post(EVENT_RF_RX_ERROR);
-        }
-        break;
-        case TX_STA_SECCESS:
-        {
-            LED1_ON_ONE();
-            if (rfCtrlMode == UI_PAGE_ID_TX_PACKET)
-            {
-                switch (packetTxMode)
-                {
-                case 0://signle pcaket tx
-                {
-                    setEvent( EVENT_RF_PACKET_TX, false, 50);
-                }break;
-                case 1:// pcaket tx and wait ack
-                {
-                    setEvent( EVENT_RF_PACKET_TX, false, (uint32_t)((float)(rfTxAndGetAckTime_ms>100?rfTxAndGetAckTime_ms:100) * 1.5));
-                    myRadio_receiver();
-                }break;
-                case 2://packet tx unitl max count
-                {
-                    if (rfTxCount < deviceInfor.sendPacketCounts)
-                    {
-                        setEvent( EVENT_RF_PACKET_TX, false, 50);
-                    }
-                    else
-                    {
-                        event_clear(EVENT_RF_PACKET_TX);
-                    }
-                    
-                }
-                    break;
-                default:
-                    break;
-                }
-                myDisplay_ui_rf_tx_packet_consumeTime(rfTxAndGetAckTime_ms);
-            }
-            else
-            {
-                myRadio_receiver();
-            }
-        }
-        break;
-        default:
-            break;
-    }
-}
-int main(void)
-{
-    userParams_ts userParamsTemp;
-#ifdef BOOTLOADER_APP
-	SCB->VTOR = FLASH_BASE | 0x000C800;
-#endif
-    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
-    rcc_init();
-        
-    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//关闭jtag , 开启swd
-    //读取本地保存数据
-    myFlash_read((uint8_t*)&deviceInfor, sizeof(userParams_ts));
-    if (crc8_gernCheckT((unsigned char*)&deviceInfor, 
-                        sizeof(userParams_ts) - 1, 
-                        deviceInfor.checkSum) == 0)
-    {
-        deviceInfor = deviceInforDef;
-    }
-    if (memcmp(deviceInfor.projectModel, deviceInforDef.projectModel, strlen(deviceInforDef.projectModel)) != 0)
-    {
-        deviceInfor = deviceInforDef;
-    }
-    //初始化按键
-    key_init();
-
-    //初始化LED灯
-    LED_Init();
-
-    //初始化串口
-    // myUart3_init(115200, UART3_CALLBACK);    //用于透传模块测试,需要时再打开
-    myUart1_init(115200, UART1_CALLBACK);
-
-    //初始化定时器
-    myTim1_init(200, TIM3_CALLBACK);
-
-    //初始化模拟转换ADC,用于无线模块驱动电流检测
-    myADC_init();
-
-    //蜂鸣器初始化
-    beep_init();
-    beep_setFreq(deviceInfor.beepNumb);
-
-    //初始化射频
-    myRadio_setChipType(deviceInfor.chipType);
-    RadioSetregulatorMode(deviceInfor.rf_regulatorMode);
-    myRadio_init(0, rfRx_callback);
-    myRadio_setFrequency(SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep));
-    myRadio_setTxPower(deviceInfor.txPower);
-    myRadio_setRfParams(deviceInfor.rf_sf, deviceInfor.rf_bw, deviceInfor.rf_cr);
-    myRadio_receiver();
-    // LCD显示屏初始化界面显示
-    myDisplay_init(uiEnterCallback);
-    myDisplay_ui_firstUi_setDeviceName(deviceNameList[deviceInfor.chipType]);
-    myDisplay_ui_firstUi_setFreq(SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep));
-    myDisplay_ui_firstUi_setRfPower(rfTxPowerList[deviceInfor.txPower]);
-    myDisplay_ui_firstUi_setRfparams(deviceInfor.rf_sf, rf_bw_name[deviceInfor.rf_bw - 6], deviceInfor.rf_cr);
-    myDisplay_ui_firstUi_setRfRgm(rf_rgm_name[deviceInfor.rf_regulatorMode]);
-    myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_TYPE, deviceInfor.chipType, 0, DVTP_MAX_COUNT - 1, 1);
-    myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_FREQ, deviceInfor.rfChannel, 0, 255, 1);
-    myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_STEP, deviceInfor.channelStep, 25, 200, 1);
-
-    myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_TXPOWER, 
-                                    deviceInfor.txPower, 
-                                    RF_TX_PWR_N_26, RF_TX_PWR_MAX_COUNT - 1, 1);
-    myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_RFBAUDRATE, deviceInfor.rfBaudrate, RF_BAUDRATE_RESV1, MAX_RF_BAUDRATE_COUNT - 1, 1);
-    myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_PACKET_LEN, deviceInfor.packetLen, 1, 255, 1);
-    myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_SF, deviceInfor.rf_sf, 5, 12, 1);
-    myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_BW, deviceInfor.rf_bw, 6, 9, 1);
-    myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_CR, deviceInfor.rf_cr, 1, 4, 1);
-    myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_RGM, deviceInfor.rf_regulatorMode, 0, 1, 1);
-    myDisplay_setting_loadParams(SET_ITEM_INDEX_FREQ, "%03u->%6.2fMHz", deviceInfor.rfChannel, (float)(SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep)) / 1000000.0);
-    myDisplay_setting_loadParams(SET_ITEM_INDEX_STEP, "%uHz", deviceInfor.channelStep*10*1000);
-    myDisplay_setting_loadParams(SET_ITEM_INDEX_TYPE, deviceNameList[deviceInfor.chipType]);
-    myDisplay_setting_loadParams(SET_ITEM_INDEX_RFBAUDRATE, "%ubps", rfBaudrateList[deviceInfor.rfBaudrate]);
-    myDisplay_setting_loadParams(SET_ITEM_INDEX_TXPOWER, "%ddBm", rfTxPowerList[deviceInfor.txPower]);
-    myDisplay_setting_loadParams(SET_ITEM_INDEX_SF, "%u", deviceInfor.rf_sf);
-    myDisplay_setting_loadParams(SET_ITEM_INDEX_BW, "%u->%s", deviceInfor.rf_bw, rf_bw_name[deviceInfor.rf_bw - 6]);
-    myDisplay_setting_loadParams(SET_ITEM_INDEX_CR, "%u->%s", deviceInfor.rf_cr, rf_cr_name[deviceInfor.rf_cr - 1]);
-    myDisplay_setting_loadParams(SET_ITEM_INDEX_RGM, "%u->%s", deviceInfor.rf_regulatorMode, rf_rgm_name[deviceInfor.rf_regulatorMode]);
-    myDisplay_setting_loadParams(SET_ITEM_INDEX_PACKET_LEN, "%u Byte", deviceInfor.packetLen);
-    myDisplay_ui_deviceInfor_setVer(SOFT_VERSION);
-    myDisplay_ui_deviceInfor_setModule("VGKitBoard_4142S");
-    //上电长想一声
-    beep_longBeep();
-
-    setEvent(EVENT_TIME_CYCLE_10ms, true, 10);
-    setEvent(EVENT_TIME_CYCLE_500ms, true, 500);
-    while(1)
-    {   
-        eventReturn = event_pend();
-
-        if (getEvent(EVENT_TIME_CYCLE_10ms))
-        {
-            getKeyReturn = KeyValueChange(keyPressValue);
-            dealKeyPressProccess();
-        }
-        if (getEvent(EVENT_TIME_CYCLE_500ms))
-        {
-            present_moduleCurrendValue = myADC_getVoltageValue()/50/0.5*1000;
-            myDisplay_ui_rf_continuos_txCurrent(present_moduleCurrendValue);
-            myDisplay_ui_rf_rxPacket_rxCurrent(present_moduleCurrendValue);
-            myDisplay_ui_rf_continuos_rxRssi(myRadio_getRssi());
-            uiTimerFlash_callBack();
-        }
-        if (getEvent(EVENT_RF_CONTINUOUS_RX))
-        {
-            myRadio_setCtrl(RADIO_EXT_CONTROL_RX_SENSITIVITY, 
-                        SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep));
-            startToCountingRx = true;
-            validPackageCount = 0;
-        }
-        if (getEvent(EVENT_RF_CONTINUOUS_TX))
-        {
-            myRadio_setCtrl(RADIO_EXT_CONTROL_TX_UNMODULATED, 
-                        SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep));
-        }
-        if (getEvent(EVENT_RF_CONTINUOUS_TX_MD))
-        {
-            myRadio_setCtrl(RADIO_EXT_CONTROL_TX_MODULATED, 
-                        SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep));
-        }
-        if (getEvent(EVENT_RF_PACKET_TX))
-        {
-            rfTxCount ++;
-            event_clear(EVENT_RF_PACKET_TX);
-            memset(rfTxPacket.payload, 0, sizeof(rfTxPacket.payload));
-            sprintf(rfTxPacket.payload, "%05u-hello...", rfTxCount);
-            rfTxPacket.len = strlen(rfTxPacket.payload);
-            memset(&rfTxPacket.payload[rfTxPacket.len + 1], 0x77, sizeof(rfTxPacket.payload) - rfTxPacket.len - 1);
-            rfTxPacket.len = deviceInfor.packetLen;
-            myDisplay_ui_rf_tx_packet_buffer(rfTxPacket.payload);
-            myDisplay_ui_rf_tx_packet_counts(deviceInfor.packetLen);
-            rfTxAndGetAckTime_ms = 0;
-            myRadio_transmit(&rfTxPacket);
-            event_clear(EVENT_TIMEOUT_CHECK_RF_PACKET);
-            printf("rfTxPacket.absTime = %u\n", rfTxPacket.absTime);
-            if (rfCtrlMode == UI_PAGE_ID_TX_PACKET)
-            {  
-                switch (packetTxMode)
-                {
-                case 0://signle pcaket tx
-                case 2://packet tx unitl max count
-                {
-                    setEvent(EVENT_RF_PACKET_TX, false, (rfTxPacket.absTime + 1000));
-                }break;
-                case 1:// pcaket tx and wait ack
-                {
-                        setEvent(EVENT_RF_PACKET_TX, false, (rfTxPacket.absTime + 1000));
-                    if (rfTxCount > deviceInfor.sendPacketCounts)
-                    {
-                        myDisplay_ui_rf_tx_packet_rate((float)rfRxCount/rfTxCount * 100);
-                        rfTxCount = 0;
-                        rfRxCount = 0;
-                    }
-                    else
-                    {
-                    }
-                    
-                }break;
-                default:
-                    break;
-                }
-            }
-        }
-        if (getEvent(EVENT_RF_PACKET_RX))
-        {
-            myRadio_receiver();
-            validPackageCount  = 0;
-        }
-        if (getEvent(EVENT_RF_GET_RX_PACKET))
-        {
-            rfRxCount ++;
-            myDisplay_ui_rf_continuos_rxLen(0, validPackageCount);
-            if (rfCtrlMode == UI_PAGE_ID_TX_PACKET)
-            {   
-                switch (packetTxMode)
-                {
-                case 0://signle pcaket tx
-                {
-                }break;
-                case 1:// pcaket tx and wait ack
-                {
-                    event_post(EVENT_RF_PACKET_TX);
-                    myDisplay_ui_rf_tx_packet_ackRssi(rfRecvPacket.rssi);
-                }break;
-                case 2://packet tx unitl max count
-                {
-                }
-                    break;
-                default:
-                    break;
-                }
-            }else if (rfCtrlMode == UI_PAGE_ID_RX_PACKET)
-            {   
-                switch (packetRxMode)
-                {
-                case 0:
-                {
-                }break;
-                case 1:
-                {
-                    rfTxCount ++;
-                    memset(rfTxPacket.payload, 0, sizeof(rfTxPacket.payload));
-                    sprintf(rfTxPacket.payload, "%05u-hello...", rfTxCount);
-                    rfTxPacket.len = strlen(rfTxPacket.payload);
-                    memset(&rfTxPacket.payload[rfTxPacket.len + 1], 0x77, sizeof(rfTxPacket.payload) - rfTxPacket.len - 1);
-                    rfTxPacket.len = deviceInfor.packetLen;
-                    myRadio_transmit(&rfTxPacket);
-                }break;
-                default:
-                    break;
-                }
-                myDisplay_ui_rf_rxPacket_rssi(rfRecvPacket.rssi);
-                myDisplay_ui_rf_rxPacket_count(rfRxCount);
-                if (atoi(rfRecvPacket.payload) == 1)
-                {
-                    rfRxCount = 1;
-                }
-                
-                float rxRate = (float)rfRxCount / atoi(rfRecvPacket.payload) * 100;
-                myDisplay_ui_rf_rxPacket_rate(rxRate);
-                myDisplay_ui_rf_rxPacket_scroll_buffer(rfRecvPacket.payload, 0);
-                myDisplay_ui_rf_rxContinue_scroll_buffer(rfRecvPacket.payload, 0);
-            }
-            else if (rfCtrlMode == UI_PAGE_ID_FIRST_UI)
-            {   
-                setEvent( EVENT_RF_PACKET_TX, false, 0);
-            }
-            myUart1_sendArray(rfRecvPacket.payload, rfRecvPacket.len);
-            memset(rfRecvPacket.payload, 0, sizeof(rfRecvPacket.payload));
-            LED2_ON_ONE();
-        }
-        if (getEvent(EVENT_RF_RX_ERROR))
-        {
-            myRadio_receiver();
-        }
-        if (getEvent(EVENT_RF_IDLE))
-        {
-            startToCountingRx = false;
-            myRadio_abort();
-            event_clear(EVENT_RF_PACKET_TX);
-        }
-        if (getEvent(EVENT_UART_RECV))
-        {
-            if (uartPackage_Rx.isValid)
-            {
-                uartPackage_Rx.isValid = false;
-                myDisplay_ui_rf_rxPacket_buffer(uartPackage_Rx.packet, 10);
-                rfTxPacket.len = uartPackage_Rx.len;
-                memcpy(rfTxPacket.payload, uartPackage_Rx.packet, rfTxPacket.len);
-                myRadio_transmit(&rfTxPacket);
-                uartPackage_Rx.len = 0;
-            }
-        }
-        if (getEvent(EVENT_UART3_RECV))
-        {
-            if (uart3Packet.isValid)
-            {
-                uart3Packet.isValid = false;
-                myDisplay_ui_rf_rxPacket_buffer(uart3Packet.packet, 10);
-                rfTxPacket.len = uart3Packet.len;
-                memcpy(rfTxPacket.payload, uart3Packet.packet, rfTxPacket.len);
-                myRadio_transmit(&rfTxPacket);
-                uart3Packet.len = 0;
-            }
-        }
-        if (getEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS))
-        {
-            deviceInfor.checkSum = crc8_ger((unsigned char*)&deviceInfor, sizeof(userParams_ts) - 1);
-            myFlash_write((uint8_t*)&deviceInfor, sizeof(userParams_ts));
-        }
-        
-        keyPressValue = keyScan();
-        myRadio_process();
-        
-    }     
-} 
-
+#include "main.h"
+#include "ReadKey.h"
+#include "key.h"
+#include "ReadKey.h"
+#include "crc8.h"
+#include "led.h"
+#include "eventUnit.h"
+#include "myADC.h"
+#include "myInputCapture.h"
+#include "myLcd.h"
+#include "myDisplayUnit.h"
+#include "myFlashData.h"
+#include "myTim.h"
+#include "myUart.h"
+#include "myUart3.h"
+#include "myRadio.h"
+
+#define SOFT_VERSION 0x06
+#define SET_RF_FREQ_HZ(base, ch,step) base+ch*step*10*1000
+//---------------key
+KeyParamExt_ts *getKeyReturn;
+key_value_te keyPressValue;
+
+
+static uint16_t present_adcValue;
+static uartPacket_ts uart3Packet;
+static uartPacket_ts uartPackage_Rx;
+
+static bool startToCountingRx = false;
+static float present_moduleCurrendValue;
+static float validPackageCount = 0;
+static uint32_t rfContinuousFreq = 1;
+static float rfRxTestRate = 1;
+
+static uint8_t packetTxMode;
+static uint8_t packetRxMode;
+
+static rfRxPacket_ts rfRecvPacket;
+static rfTxPacket_ts rfTxPacket;
+static uint32_t rfTxCount = 0;
+static uint32_t rfRxCount = 0;
+static uint32_t rfTxAndGetAckTime_ms = 0;
+static uint32_t rfTxAndGetAckTimeSet_ms = 1000;
+static uint32_t rfTxReTmCount = 0;
+static bool rfTxGetAckStatus = false;
+static uint8_t rfCtrlMode;
+const uint32_t rfBaseFreqList[DVTP_MAX_COUNT] = 
+{
+    /*"1"*/410920000,
+    /*"2"*/490920000,
+    /*"3"*/850920000,
+    /*"4"*/910920000,
+
+};
+const uint32_t rfBaudrateList[MAX_RF_BAUDRATE_COUNT] = 
+{
+    244, 627, 1220, 2441, 5022, 12500, 20400, 62500
+};
+const int8_t rfTxPowerList[RF_TX_PWR_MAX_COUNT] = 
+{
+    -26,-26,-17,-5,-3,-2,-1,2,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
+};
+static char deviceNameList[DVTP_MAX_COUNT][20] = 
+{
+    /*"1"*/"VG4130S433N0S1",
+    /*"2"*/"VG4130S490N0S1",
+    /*"3"*/"VG4130S868N0S1",
+    /*"4"*/"VG4130S915N0S1",
+};
+static char rf_cr_name[][20] = 
+{
+    /*"0"*/"4/5",
+    /*"1"*/"4/6",
+    /*"2"*/"4/7",
+    /*"3"*/"4/8",
+};
+static char rf_bw_name[][20] = 
+{
+    /*"0"*/"62.5k",
+    /*"1"*/"125k",
+    /*"2"*/"250k",
+    /*"3"*/"500k",
+};
+static char rf_rgm_name[][20] = 
+{
+    /*"0"*/"LDO",
+    /*"1"*/"DCDC",
+};
+userParams_ts deviceInforDef = 
+{
+    .projectModel = "VG4130",
+    .deviceId = 1,
+    .rfChannel = 30,
+    .channelStep = 100,
+    .txPower = RF_TX_PWR_MAX_COUNT - 1,
+    .rfBaudrate = RF_BAUDRATE_1220,
+    .chipType = DVTP_VG4130S433N0S1,
+    .packetLen = 12,
+    .sendPacketCounts = 100,
+    .rf_sf = 9,
+    .rf_bw = 7,
+    .rf_cr = 3,
+    .rf_regulatorMode = 0x01,
+};
+userParams_ts deviceInfor;
+#define EVENT_TIME_CYCLE_10ms         0
+#define EVENT_TIME_CYCLE_500ms      1
+#define EVENT_UART3_RECV     2
+#define EVENT_UART_RECV         3
+// #define EVENT_TEST_RX_TIMEOUT       4
+#define EVENT_RF_CONTINUOUS_TX       5
+#define EVENT_RF_CONTINUOUS_RX       6
+#define EVENT_RF_IDLE       7
+#define EVENT_RF_CONTINUOUS_TX_MD       8
+#define EVENT_TIMEOUT_TO_SAVE_PARAMS       9
+#define EVENT_RF_GET_RX_PACKET       10
+#define EVENT_RF_PACKET_TX       11
+#define EVENT_RF_PACKET_RX       12
+#define EVENT_TIMEOUT_CHECK_RF_PACKET       13
+#define EVENT_RF_RX_ERROR       14
+static uint16_t eventReturn;
+
+void dealKeyPressProccess(void)
+{
+    if (getKeyReturn->haveKey == false)
+    {
+        return;
+    }
+    getKeyReturn->haveKey = false;
+
+    switch (getKeyReturn->value)
+    {
+    case LEFT_KEY:
+    {
+        if(getLongKeySt() == true)
+        {
+            clearLongKey(); 
+
+            EnableReleaseKey();
+            myDisplay_enter(ENTER_LAST_PAGE);
+        }
+        else
+        {
+            if (getReleaseKeySt())
+            {
+
+            }
+            else
+            {
+                EnableLongKey(5);   
+            }
+        }
+    }
+        break;
+    case RIGHT_KEY:
+    {
+        if(getLongKeySt() == true)
+        {
+            clearLongKey(); 
+
+            EnableReleaseKey();
+        }
+        else
+        {
+            if (getReleaseKeySt())
+            {
+
+            }
+            else
+            {
+                EnableLongKey(5);   
+            }
+        }
+    }
+        break;
+    case TOP_KEY:
+    {
+        if(getCyclicKeySt() == true)
+        {
+            EnableCyclicKey(30); 
+            myDisplay_change(1);
+        }
+        else
+        {
+            if (getReleaseKeySt())
+            {
+                beep_shortBeep();
+                myDisplay_change(1);
+            }
+            else
+            {
+                EnableReleaseKey();
+                EnableCyclicKey(300);   
+            }
+        }
+    }
+        break;
+    case BOTTOM_KEY:
+    {
+        if(getCyclicKeySt() == true)
+        {
+            EnableCyclicKey(30); 
+            myDisplay_change(0);
+        }
+        else
+        {
+            if (getReleaseKeySt())
+            {
+                beep_shortBeep();
+                myDisplay_change(0);
+            }
+            else
+            {
+                EnableReleaseKey();
+                EnableCyclicKey(300);   
+            }
+        }
+    }
+        break;
+    case OK_KEY:
+    {
+        if(getLongKeySt() == true)
+        {
+            clearLongKey(); 
+
+            EnableReleaseKey();
+            beep_shortBeep();
+            myDisplay_enter(ENTER_NEXT_PAGE);
+        }
+        else
+        {
+            if (getReleaseKeySt())
+            {
+
+            }
+            else
+            {
+                EnableLongKey(5);   
+            }
+        }
+    }
+        break;
+    default:
+        break;
+    }
+}
+
+/**
+ * 
+ * 串口回调函数,当串口有硬件超时时会调用该函数
+*/
+static void rcc_init(void)
+{
+    //---------普通IO口时钟使能
+    RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE ); 
+    RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE ); 
+    RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE ); 
+    RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOD, ENABLE ); 
+
+    //----------SPI1时钟使能
+    RCC_APB2PeriphClockCmd( RCC_APB2Periph_SPI1, ENABLE );  
+    //----------复用功能时钟使能
+    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
+
+    #if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL)
+    /* ADCCLK = PCLK2/2 */
+    RCC_ADCCLKConfig(RCC_PCLK2_Div2);
+    #else
+    /* ADCCLK = PCLK2/4 */
+    RCC_ADCCLKConfig(RCC_PCLK2_Div4); 
+    #endif
+}
+/**
+ * 
+ * 串口回调函数,当串口有硬件超时时会调用该函数
+*/
+void UART1_CALLBACK(uint8_t *buf, uint16_t len)
+{
+    if(uartPackage_Rx.isValid == 0)
+    {
+        memcpy(uartPackage_Rx.packet, buf, len);
+        uartPackage_Rx.len = len;
+        uartPackage_Rx.isValid = 1;
+        event_post(EVENT_UART_RECV);
+    }
+}
+void UART3_CALLBACK(uint8_t *buf, uint16_t len)
+{
+    if(uart3Packet.isValid == 0)
+    {
+        memcpy(uart3Packet.packet, buf, len);
+        uart3Packet.len = len;
+        uart3Packet.isValid = true;
+        event_post(EVENT_UART3_RECV);
+    }
+}
+/**
+ * 
+ * 定时器中断回调,当产生定时器中断会调用该函数
+*/
+void TIM3_CALLBACK(void)
+{
+    static uint8_t timeCnt_1ms = 0;
+
+    beep_onDriver();
+    if( ++timeCnt_1ms == 5)
+    {
+        timeCnt_1ms = 0;
+        rfTxAndGetAckTime_ms ++;
+        eventDriver();
+    }
+}
+
+void uiEnterCallback(int pageId, int cursorCount, int status, int value)
+{
+    switch (pageId - 1)
+    {
+    case UI_PAGE_ID_ITEM_MODE:
+    {
+
+    }break;
+    case UI_PAGE_ID_RF_CONTINUOUS:
+    {
+        switch (cursorCount)
+        {
+        case CNT_ITEM_INDEX_TX:
+        {
+            // event_post(status ? EVENT_RF_CONTINUOUS_TX : EVENT_RF_CONTINUOUS_RX);
+            event_post(EVENT_RF_CONTINUOUS_TX);
+            rfCtrlMode = status ? UI_PAGE_ID_RF_CONTINUOUS : 0;
+        }
+            break;
+        case CNT_ITEM_INDEX_RX:
+        {
+            event_post(status ? EVENT_RF_CONTINUOUS_RX : EVENT_RF_IDLE);
+        }
+            break;
+        case CNT_ITEM_INDEX_TX_MD:
+        {
+            event_post(status ? EVENT_RF_CONTINUOUS_TX_MD : EVENT_RF_IDLE);
+        }
+            break;
+        default:
+            break;
+        }
+    }
+        break;
+    case UI_PAGE_ID_TX_PACKET:
+    {
+        switch (cursorCount)
+        {
+        case 0://signle pcaket tx
+        case 1:// pcaket tx and wait ack
+        case 2://packet tx unitl max count
+        {
+            setEvent(status ? EVENT_RF_PACKET_TX : EVENT_RF_IDLE, 
+                    status ? true : false, 
+                    status ? 500 : 0);
+            rfCtrlMode = status ? UI_PAGE_ID_TX_PACKET : 0;
+            rfTxCount = 0;
+            rfRxCount = 0;
+            packetTxMode = cursorCount;
+        }
+            break;
+        default:
+            break;
+        }
+    }
+        break;
+    case UI_PAGE_ID_RX_PACKET:
+    {
+        switch (cursorCount)
+        {
+        case 0:
+        case 1:
+        {
+            event_post(status ? EVENT_RF_PACKET_RX : EVENT_RF_IDLE);
+            rfCtrlMode = status ? UI_PAGE_ID_RX_PACKET : 0;
+            rfTxCount = 0;
+            rfRxCount = 0;
+            packetRxMode = cursorCount;
+        }
+            break;
+        default:
+            break;
+        }
+    }
+        break;
+    case UI_PAGE_ID_SETTING:
+    {
+        switch (cursorCount)
+        {
+        case SET_ITEM_INDEX_TYPE://chipType
+        {
+            deviceInfor.chipType = value;
+            myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_TXPOWER, 
+                                            deviceInfor.txPower, 
+                                            RF_TX_PWR_N_26, RF_TX_PWR_MAX_COUNT - 1, 1);
+            myRadio_setTxPower(deviceInfor.txPower);
+            myDisplay_setting_loadParams(SET_ITEM_INDEX_TXPOWER, "%ddBm", rfTxPowerList[deviceInfor.txPower]);
+            myDisplay_setting_loadParams(SET_ITEM_INDEX_TYPE, deviceNameList[deviceInfor.chipType]);
+            myDisplay_setting_loadParams(SET_ITEM_INDEX_FREQ, "%03u->%6.2fMHz", deviceInfor.rfChannel, (float)(SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep)) / 1000000.0);
+            myRadio_setFrequency(SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep));
+            setEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS, false, 200);
+        }
+            break;
+        case SET_ITEM_INDEX_FREQ://Freq
+        {
+            deviceInfor.rfChannel = value;
+            myDisplay_setting_loadParams(SET_ITEM_INDEX_FREQ, "%03u->%6.2fMHz", deviceInfor.rfChannel, (float)(SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep)) / 1000000.0);
+            myRadio_setFrequency(SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep));
+            setEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS, false, 200);
+        }
+            break;
+        case SET_ITEM_INDEX_STEP://channelStep
+        {
+            deviceInfor.channelStep = value;
+            myDisplay_setting_loadParams(SET_ITEM_INDEX_STEP, "%uHz", deviceInfor.channelStep*10*1000);
+            myDisplay_setting_loadParams(SET_ITEM_INDEX_FREQ, "%03u->%6.2fMHz", deviceInfor.rfChannel, (float)(SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep)) / 1000000.0);
+            myRadio_setFrequency(SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep));
+            setEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS, false, 200);
+        }
+            break;
+        case SET_ITEM_INDEX_TXPOWER://TxPower
+        {
+            deviceInfor.txPower = value;
+
+            myRadio_setTxPower(deviceInfor.txPower);
+            myDisplay_setting_loadParams(SET_ITEM_INDEX_TXPOWER, "%ddBm", rfTxPowerList[deviceInfor.txPower]);
+            setEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS, false, 200);
+        }
+        break;
+        case SET_ITEM_INDEX_RFBAUDRATE://RFBAUDRATE
+        {
+            deviceInfor.rfBaudrate = value;
+            myDisplay_setting_loadParams(SET_ITEM_INDEX_RFBAUDRATE, "%ubps", rfBaudrateList[deviceInfor.rfBaudrate]);
+            setEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS, false, 200);
+            deviceInfor.rf_sf = loraBaudrateFrame[deviceInfor.rfBaudrate].SpreadingFactor;
+            deviceInfor.rf_bw = loraBaudrateFrame[deviceInfor.rfBaudrate].SignalBw;
+            deviceInfor.rf_cr = loraBaudrateFrame[deviceInfor.rfBaudrate].ErrorCoding;
+            myDisplay_setting_loadParams(SET_ITEM_INDEX_SF, "%u", deviceInfor.rf_sf);
+            myDisplay_setting_loadParams(SET_ITEM_INDEX_BW, "%u->%s", deviceInfor.rf_bw, rf_bw_name[deviceInfor.rf_bw - 6]);
+            myDisplay_setting_loadParams(SET_ITEM_INDEX_CR, "%u->%s", deviceInfor.rf_cr, rf_cr_name[deviceInfor.rf_cr - 1]);
+        }
+            break;
+        case SET_ITEM_INDEX_PACKET_LEN://
+        {
+            deviceInfor.packetLen = value;
+            myDisplay_setting_loadParams(SET_ITEM_INDEX_PACKET_LEN, "%u Byte", deviceInfor.packetLen);
+            setEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS, false, 200);
+        }
+            break;
+        case SET_ITEM_INDEX_SF://
+        {
+            deviceInfor.rf_sf = value;
+            myDisplay_setting_loadParams(SET_ITEM_INDEX_SF, "%u", deviceInfor.rf_sf);
+            setEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS, false, 200);
+        }
+            break;
+        case SET_ITEM_INDEX_BW://
+        {
+            deviceInfor.rf_bw = value;
+            myDisplay_setting_loadParams(SET_ITEM_INDEX_BW, "%u->%s", deviceInfor.rf_bw, rf_bw_name[deviceInfor.rf_bw - 6]);
+            setEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS, false, 200);
+        }
+            break;
+        case SET_ITEM_INDEX_CR://
+        {
+            deviceInfor.rf_cr = value;
+            myDisplay_setting_loadParams(SET_ITEM_INDEX_CR, "%u->%s", deviceInfor.rf_cr, rf_cr_name[deviceInfor.rf_cr - 1]);
+            setEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS, false, 200);
+        }
+            break;
+        case SET_ITEM_INDEX_RGM://
+        {
+            deviceInfor.rf_regulatorMode = value;
+            myDisplay_setting_loadParams(SET_ITEM_INDEX_RGM, "%u->%s", deviceInfor.rf_regulatorMode, rf_rgm_name[deviceInfor.rf_regulatorMode]);
+            setEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS, false, 200);
+        }
+            break;
+        default:
+            break;
+        }
+    }
+        break;
+
+    default:
+        break;
+    }
+}
+void rfRx_callback(uint8_t status, rfRxPacket_ts packet)
+{
+    
+    
+    switch (status)
+    {
+        case RX_STA_SECCESS:
+        {
+            rfRecvPacket = packet;
+            myRadio_receiver();
+            event_post(EVENT_RF_GET_RX_PACKET);
+        }
+        break;
+        case RX_STA_TIMEOUT:
+        {
+            event_post(EVENT_RF_RX_ERROR);
+        }
+        break;
+        case RX_STA_PAYLOAD_ERROR:
+        {
+            event_post(EVENT_RF_RX_ERROR);
+        }
+        break;
+        case TX_STA_SECCESS:
+        {
+            LED1_ON_ONE();
+            if (rfCtrlMode == UI_PAGE_ID_TX_PACKET)
+            {
+                switch (packetTxMode)
+                {
+                case 0://signle pcaket tx
+                {
+                    setEvent( EVENT_RF_PACKET_TX, false, 50);
+                }break;
+                case 1:// pcaket tx and wait ack
+                {
+                    setEvent( EVENT_RF_PACKET_TX, false, (uint32_t)((float)(rfTxAndGetAckTime_ms>100?rfTxAndGetAckTime_ms:100) * 1.5));
+                    myRadio_receiver();
+                }break;
+                case 2://packet tx unitl max count
+                {
+                    if (rfTxCount < deviceInfor.sendPacketCounts)
+                    {
+                        setEvent( EVENT_RF_PACKET_TX, false, 50);
+                    }
+                    else
+                    {
+                        event_clear(EVENT_RF_PACKET_TX);
+                    }
+                    
+                }
+                    break;
+                default:
+                    break;
+                }
+                myDisplay_ui_rf_tx_packet_consumeTime(rfTxAndGetAckTime_ms);
+            }
+            else
+            {
+                myRadio_receiver();
+            }
+        }
+        break;
+        default:
+            break;
+    }
+}
+int main(void)
+{
+    userParams_ts userParamsTemp;
+#ifdef BOOTLOADER_APP
+	SCB->VTOR = FLASH_BASE | 0x000C800;
+#endif
+    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
+    rcc_init();
+        
+    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//关闭jtag , 开启swd
+    //读取本地保存数据
+    myFlash_read((uint8_t*)&deviceInfor, sizeof(userParams_ts));
+    if (crc8_gernCheckT((unsigned char*)&deviceInfor, 
+                        sizeof(userParams_ts) - 1, 
+                        deviceInfor.checkSum) == 0)
+    {
+        deviceInfor = deviceInforDef;
+    }
+    if (memcmp(deviceInfor.projectModel, deviceInforDef.projectModel, strlen(deviceInforDef.projectModel)) != 0)
+    {
+        deviceInfor = deviceInforDef;
+    }
+    //初始化按键
+    key_init();
+
+    //初始化LED灯
+    LED_Init();
+
+    //初始化串口
+    // myUart3_init(115200, UART3_CALLBACK);    //用于透传模块测试,需要时再打开
+    myUart1_init(115200, UART1_CALLBACK);
+
+    //初始化定时器
+    myTim1_init(200, TIM3_CALLBACK);
+
+    //初始化模拟转换ADC,用于无线模块驱动电流检测
+    myADC_init();
+
+    //蜂鸣器初始化
+    beep_init();
+    beep_setFreq(deviceInfor.beepNumb);
+
+    //初始化射频
+    myRadio_setChipType(deviceInfor.chipType);
+    RadioSetregulatorMode(deviceInfor.rf_regulatorMode);
+    myRadio_init(0, rfRx_callback);
+    myRadio_setFrequency(SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep));
+    myRadio_setTxPower(deviceInfor.txPower);
+    myRadio_setRfParams(deviceInfor.rf_sf, deviceInfor.rf_bw, deviceInfor.rf_cr);
+    myRadio_receiver();
+    // LCD显示屏初始化界面显示
+    myDisplay_init(uiEnterCallback);
+    myDisplay_ui_firstUi_setDeviceName(deviceNameList[deviceInfor.chipType]);
+    myDisplay_ui_firstUi_setFreq(SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep));
+    myDisplay_ui_firstUi_setRfPower(rfTxPowerList[deviceInfor.txPower]);
+    myDisplay_ui_firstUi_setRfparams(deviceInfor.rf_sf, rf_bw_name[deviceInfor.rf_bw - 6], deviceInfor.rf_cr);
+    myDisplay_ui_firstUi_setRfRgm(rf_rgm_name[deviceInfor.rf_regulatorMode]);
+    myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_TYPE, deviceInfor.chipType, 0, DVTP_MAX_COUNT - 1, 1);
+    myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_FREQ, deviceInfor.rfChannel, 0, 255, 1);
+    myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_STEP, deviceInfor.channelStep, 25, 200, 1);
+
+    myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_TXPOWER, 
+                                    deviceInfor.txPower, 
+                                    RF_TX_PWR_N_26, RF_TX_PWR_MAX_COUNT - 1, 1);
+    myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_RFBAUDRATE, deviceInfor.rfBaudrate, RF_BAUDRATE_RESV1, MAX_RF_BAUDRATE_COUNT - 1, 1);
+    myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_PACKET_LEN, deviceInfor.packetLen, 1, 255, 1);
+    myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_SF, deviceInfor.rf_sf, 5, 12, 1);
+    myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_BW, deviceInfor.rf_bw, 6, 9, 1);
+    myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_CR, deviceInfor.rf_cr, 1, 4, 1);
+    myDisplay_setSettingParamsProfile(SET_ITEM_INDEX_RGM, deviceInfor.rf_regulatorMode, 0, 1, 1);
+    myDisplay_setting_loadParams(SET_ITEM_INDEX_FREQ, "%03u->%6.2fMHz", deviceInfor.rfChannel, (float)(SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep)) / 1000000.0);
+    myDisplay_setting_loadParams(SET_ITEM_INDEX_STEP, "%uHz", deviceInfor.channelStep*10*1000);
+    myDisplay_setting_loadParams(SET_ITEM_INDEX_TYPE, deviceNameList[deviceInfor.chipType]);
+    myDisplay_setting_loadParams(SET_ITEM_INDEX_RFBAUDRATE, "%ubps", rfBaudrateList[deviceInfor.rfBaudrate]);
+    myDisplay_setting_loadParams(SET_ITEM_INDEX_TXPOWER, "%ddBm", rfTxPowerList[deviceInfor.txPower]);
+    myDisplay_setting_loadParams(SET_ITEM_INDEX_SF, "%u", deviceInfor.rf_sf);
+    myDisplay_setting_loadParams(SET_ITEM_INDEX_BW, "%u->%s", deviceInfor.rf_bw, rf_bw_name[deviceInfor.rf_bw - 6]);
+    myDisplay_setting_loadParams(SET_ITEM_INDEX_CR, "%u->%s", deviceInfor.rf_cr, rf_cr_name[deviceInfor.rf_cr - 1]);
+    myDisplay_setting_loadParams(SET_ITEM_INDEX_RGM, "%u->%s", deviceInfor.rf_regulatorMode, rf_rgm_name[deviceInfor.rf_regulatorMode]);
+    myDisplay_setting_loadParams(SET_ITEM_INDEX_PACKET_LEN, "%u Byte", deviceInfor.packetLen);
+    myDisplay_ui_deviceInfor_setVer(SOFT_VERSION);
+    myDisplay_ui_deviceInfor_setModule("VGKitBoard_4130S");
+    //上电长想一声
+    beep_longBeep();
+
+    setEvent(EVENT_TIME_CYCLE_10ms, true, 10);
+    setEvent(EVENT_TIME_CYCLE_500ms, true, 500);
+    while(1)
+    {   
+        eventReturn = event_pend();
+
+        if (getEvent(EVENT_TIME_CYCLE_10ms))
+        {
+            getKeyReturn = KeyValueChange(keyPressValue);
+            dealKeyPressProccess();
+        }
+        if (getEvent(EVENT_TIME_CYCLE_500ms))
+        {
+            present_moduleCurrendValue = myADC_getVoltageValue()/50/0.5*1000;
+            myDisplay_ui_rf_continuos_txCurrent(present_moduleCurrendValue);
+            myDisplay_ui_rf_rxPacket_rxCurrent(present_moduleCurrendValue);
+            myDisplay_ui_rf_continuos_rxRssi(myRadio_getRssi());
+            uiTimerFlash_callBack();
+        }
+        if (getEvent(EVENT_RF_CONTINUOUS_RX))
+        {
+            myRadio_setCtrl(RADIO_EXT_CONTROL_RX_SENSITIVITY, 
+                        SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep));
+            startToCountingRx = true;
+            validPackageCount = 0;
+        }
+        if (getEvent(EVENT_RF_CONTINUOUS_TX))
+        {
+            myRadio_setCtrl(RADIO_EXT_CONTROL_TX_UNMODULATED, 
+                        SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep));
+        }
+        if (getEvent(EVENT_RF_CONTINUOUS_TX_MD))
+        {
+            myRadio_setCtrl(RADIO_EXT_CONTROL_TX_MODULATED, 
+                        SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep));
+        }
+        if (getEvent(EVENT_RF_PACKET_TX))
+        {
+            rfTxCount ++;
+            event_clear(EVENT_RF_PACKET_TX);
+            memset(rfTxPacket.payload, 0, sizeof(rfTxPacket.payload));
+            sprintf(rfTxPacket.payload, "%05u-hello...", rfTxCount);
+            rfTxPacket.len = strlen(rfTxPacket.payload);
+            memset(&rfTxPacket.payload[rfTxPacket.len + 1], 0x77, sizeof(rfTxPacket.payload) - rfTxPacket.len - 1);
+            rfTxPacket.len = deviceInfor.packetLen;
+            myDisplay_ui_rf_tx_packet_buffer(rfTxPacket.payload);
+            myDisplay_ui_rf_tx_packet_counts(deviceInfor.packetLen);
+            rfTxAndGetAckTime_ms = 0;
+            myRadio_transmit(&rfTxPacket);
+            event_clear(EVENT_TIMEOUT_CHECK_RF_PACKET);
+            printf("rfTxPacket.absTime = %u\n", rfTxPacket.absTime);
+            if (rfCtrlMode == UI_PAGE_ID_TX_PACKET)
+            {  
+                switch (packetTxMode)
+                {
+                case 0://signle pcaket tx
+                case 2://packet tx unitl max count
+                {
+                    setEvent(EVENT_RF_PACKET_TX, false, (rfTxPacket.absTime + 1000));
+                }break;
+                case 1:// pcaket tx and wait ack
+                {
+                        setEvent(EVENT_RF_PACKET_TX, false, (rfTxPacket.absTime + 1000));
+                    if (rfTxCount > deviceInfor.sendPacketCounts)
+                    {
+                        myDisplay_ui_rf_tx_packet_rate((float)rfRxCount/rfTxCount * 100);
+                        rfTxCount = 0;
+                        rfRxCount = 0;
+                    }
+                    else
+                    {
+                    }
+                    
+                }break;
+                default:
+                    break;
+                }
+            }
+        }
+        if (getEvent(EVENT_RF_PACKET_RX))
+        {
+            myRadio_receiver();
+            validPackageCount  = 0;
+        }
+        if (getEvent(EVENT_RF_GET_RX_PACKET))
+        {
+            rfRxCount ++;
+            myDisplay_ui_rf_continuos_rxLen(0, validPackageCount);
+            if (rfCtrlMode == UI_PAGE_ID_TX_PACKET)
+            {   
+                switch (packetTxMode)
+                {
+                case 0://signle pcaket tx
+                {
+                }break;
+                case 1:// pcaket tx and wait ack
+                {
+                    event_post(EVENT_RF_PACKET_TX);
+                    myDisplay_ui_rf_tx_packet_ackRssi(rfRecvPacket.rssi);
+                }break;
+                case 2://packet tx unitl max count
+                {
+                }
+                    break;
+                default:
+                    break;
+                }
+            }else if (rfCtrlMode == UI_PAGE_ID_RX_PACKET)
+            {   
+                switch (packetRxMode)
+                {
+                case 0:
+                {
+                }break;
+                case 1:
+                {
+                    rfTxCount ++;
+                    memset(rfTxPacket.payload, 0, sizeof(rfTxPacket.payload));
+                    sprintf(rfTxPacket.payload, "%05u-hello...", rfTxCount);
+                    rfTxPacket.len = strlen(rfTxPacket.payload);
+                    memset(&rfTxPacket.payload[rfTxPacket.len + 1], 0x77, sizeof(rfTxPacket.payload) - rfTxPacket.len - 1);
+                    rfTxPacket.len = deviceInfor.packetLen;
+                    myRadio_transmit(&rfTxPacket);
+                }break;
+                default:
+                    break;
+                }
+                myDisplay_ui_rf_rxPacket_rssi(rfRecvPacket.rssi);
+                myDisplay_ui_rf_rxPacket_count(rfRxCount);
+                if (atoi(rfRecvPacket.payload) == 1)
+                {
+                    rfRxCount = 1;
+                }
+                
+                float rxRate = (float)rfRxCount / atoi(rfRecvPacket.payload) * 100;
+                myDisplay_ui_rf_rxPacket_rate(rxRate);
+                myDisplay_ui_rf_rxPacket_scroll_buffer(rfRecvPacket.payload, 0);
+                myDisplay_ui_rf_rxContinue_scroll_buffer(rfRecvPacket.payload, 0);
+            }
+            else if (rfCtrlMode == UI_PAGE_ID_FIRST_UI)
+            {   
+                setEvent( EVENT_RF_PACKET_TX, false, 0);
+            }
+            myUart1_sendArray(rfRecvPacket.payload, rfRecvPacket.len);
+            memset(rfRecvPacket.payload, 0, sizeof(rfRecvPacket.payload));
+            LED2_ON_ONE();
+        }
+        if (getEvent(EVENT_RF_RX_ERROR))
+        {
+            myRadio_receiver();
+        }
+        if (getEvent(EVENT_RF_IDLE))
+        {
+            startToCountingRx = false;
+            myRadio_abort();
+            event_clear(EVENT_RF_PACKET_TX);
+        }
+        if (getEvent(EVENT_UART_RECV))
+        {
+            if (uartPackage_Rx.isValid)
+            {
+                uartPackage_Rx.isValid = false;
+                myDisplay_ui_rf_rxPacket_buffer(uartPackage_Rx.packet, 10);
+                rfTxPacket.len = uartPackage_Rx.len;
+                memcpy(rfTxPacket.payload, uartPackage_Rx.packet, rfTxPacket.len);
+                myRadio_transmit(&rfTxPacket);
+                uartPackage_Rx.len = 0;
+            }
+        }
+        if (getEvent(EVENT_UART3_RECV))
+        {
+            if (uart3Packet.isValid)
+            {
+                uart3Packet.isValid = false;
+                myDisplay_ui_rf_rxPacket_buffer(uart3Packet.packet, 10);
+                rfTxPacket.len = uart3Packet.len;
+                memcpy(rfTxPacket.payload, uart3Packet.packet, rfTxPacket.len);
+                myRadio_transmit(&rfTxPacket);
+                uart3Packet.len = 0;
+            }
+        }
+        if (getEvent(EVENT_TIMEOUT_TO_SAVE_PARAMS))
+        {
+            deviceInfor.checkSum = crc8_ger((unsigned char*)&deviceInfor, sizeof(userParams_ts) - 1);
+            myFlash_write((uint8_t*)&deviceInfor, sizeof(userParams_ts));
+        }
+        
+        keyPressValue = keyScan();
+        myRadio_process();
+        
+    }     
+} 
+