📄 mt.c
字号:
//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include "includes.h"
//-----------------------------------------------------------------------------
// TYPES
//-----------------------------------------------------------------------------
typedef struct{
uint8 index;
char Str[BUF_SIZE];
}Buffer;
//-----------------------------------------------------------------------------
// LOCAL VARIABLES
//-----------------------------------------------------------------------------
Buffer Buf;
char inStr;
//-----------------------------------------------------------------------------
// LOCAL FUNCTIONS
//-----------------------------------------------------------------------------
void PrintHelp(void);
void UART_Process(void);
void intTIMER(void);
uint16 ConvertChar(char *pData,byte len);
/******************************************************************************
* @fn main
*
* @brief Modul test code
*
* @param none
*
* @return none
*****************************************************************************/
void main(void)
{
SET_MAIN_CLOCK_SOURCE(CRYSTAL);
DISABLE_ALL_INTERRUPTS();
INIT_LED1();
intTIMER();
initUART();
INT_GLOBAL_ENABLE(true);
memset(Buf.Str,' ',BUF_SIZE);
Buf.index = 0;
PrintHelp();
while(( inStr = getUART() )!= ESC )
{
switch ( inStr )
{
case ENTER:
UART_Process();
break;
case BACK_SPACE:
if (Buf.index > 0)
{
Buf.index--;
Buf.Str[Buf.index] = ' ';
}
break;
default:
if (Buf.index < BUF_SIZE)
{
Buf.Str[Buf.index] = inStr;
Buf.index++;
}
break;
}
}
}//End main
/******************************************************************************
* @fn PrintHelp
*
* @brief help for command
*
* @param none
*
* @return none
*****************************************************************************/
void PrintHelp(void)
{
SoftVer();
printf((char*)"- Commad Explain: \n");
printf((char*)"- ?? // Help \n");
printf((char*)"- ?v // cc2430 version \n");
printf((char*)"- ?c // cc2430 temperature \n");
printf((char*)"- re // Restart MCU cc2430 \n");
printf((char*)"- ch [param] // Channel (param:11~16) \n");
printf((char*)"- pw [param] // Out Power (param:? help) \n");
printf((char*)"- tx [param] // Send (param:1~125) \n");
printf((char*)"- rx [param] // Recive (param:1~250) \n");
printf((char*)"- le [param] // LED flash (param:1~3) \n");
printf((char*)"/------------------------------------------/\n");
}
/******************************************************************************
* @fn UART_Process
*
* @brief UART_Process
*
* @param none
*
* @return none
*****************************************************************************/
void UART_Process(void)
{
uint8 i;
uint16 temp;
uint32 frequency;
/* 指令头检查 */
if(Buf.index<2)
{
printf((char*)"Command len error!\n");
goto CLR;
}
else if((Buf.index>2)&&(Buf.Str[2]!=' '))
{
printf((char*)"Command error!\n");
goto CLR;
}
/* ?? */ // 帮助
if(!strncmp(Buf.Str,"??",2))
PrintHelp();
/* ?v */ // cc2430 版本
else if((!strncmp(Buf.Str,"?v",2))
||(!strncmp(Buf.Str,"?V",2)))
{
McuVer();
}
/* ?c */ // cc2430温度
else if((!strncmp(Buf.Str,"?c",2))
||(!strncmp(Buf.Str,"?C",2)))
{
temp = getTemperature();
printf((char *)"%d℃\n", temp);
}
/* re */ // 复位
else if((!strncmp(Buf.Str,"re",2))
||(!strncmp(Buf.Str,"RE",2)))
Reset();
/* ch */ // 频道
else if((!strncmp(Buf.Str,"ch",2))
||(!strncmp(Buf.Str,"CH",2)))
{
frequency = ConvertChar(&Buf.Str[3],(Buf.index-3));
if(!frequency)
{
printf((char*)"Please input parameters!\n");
goto CLR;
}
else if((frequency<11)||(frequency>16))
{
printf((char*)"frequency error!\n");
goto CLR;
}
frequency -= 11;
frequency = 5000*frequency;
frequency += 2405000;
if(RfConfig(frequency))
printf((char*)"set channel OK!\n");
else
printf((char*)"set channel Failed!\n");
}
/* pw */ // 发射功率
else if((!strncmp(Buf.Str,"pw",2))
||(!strncmp(Buf.Str,"PW",2)))
{
if(Buf.Str[3]=='?')
{
printf((char*)"Power[dBm] 0.6 0.5 0.3 0.2 -0.1 -0.4 -0.9 -1.5 -2.7 -4.0 -5.7 -7.9 -10.8...\n");
printf((char*)"TXCTRLL : 255 223 191 159 127 95 63 31 27 23 19 15 11 ...\n");
printf((char*)"Power[dBm] ... -15.4 -18.6 -25.2\n");
printf((char*)"TXCTRLL : ... 7 6 3 \n");
goto CLR;
}
temp = ConvertChar(&Buf.Str[3],(Buf.index-3));
if(!temp)
{
printf((char*)"Please input parameters!\n");
goto CLR;
}
RADIO_SET_TX_POWER(temp);
printf((char*)"set OutPower OK!\n");
}
/* tx */ // 发送
else if((!strncmp(Buf.Str,"tx",2))
||(!strncmp(Buf.Str,"TX",2)))
{
temp = ConvertChar(&Buf.Str[3],(Buf.index-3));
if(!temp)
{
printf((char*)"Please input parameters!\n");
goto CLR;
}
if(temp>RF_BUF_SIZE)
{
printf((char*)"length error!\n");
goto CLR;
}
for(i=0; i<temp; i++)
RfBuf[i] = i;
if(RfSendPacket(RfBuf,temp))
printf((char*)"Radio Tx %d bytes Complete!\n", temp);
else
printf((char*)"Radio Tx Failed at %d!\n", temp);
}
/* rx */ // 接收
else if((!strncmp(Buf.Str,"rx",2))
||(!strncmp(Buf.Str,"RX",2)))
{
RfRecvtimeOut = ConvertChar(&Buf.Str[3],(Buf.index-3));
if(!RfRecvtimeOut)
{
printf((char*)"Please input parameters!\n");
goto CLR;
}
if(RfReceivePacket(RfBuf,&Rssi,&Lqi,RfRecvtimeOut))
{
if( RfRecvLength < 2)
RfRecvLength = 2;
printf((char*)"Radio Rx %d bytes successful![Rssi %d LQI %d]\n", (RfRecvLength-2),(Rssi-45),Lqi);
}
else
printf((char*)"Radio Rx Failed at %d bytes!\n", RfRecvLength);
}
/* le */ // LED 闪烁频率
else if((!strncmp(Buf.Str,"le",2))
||(!strncmp(Buf.Str,"LE",2)))
{
temp = ConvertChar(&Buf.Str[3],(Buf.index-3));
if(!temp)
{
printf((char*)"Please input parameters!\n");
goto CLR;
}
else if((temp<1)||(temp>3))
{
printf((char*)"led falsh frequency error!\n");
goto CLR;
}
TIMER1_INIT();
if(SetTimer1Period(temp*20000)) // us
{
TIMER1_ENABLE_OVERFLOW_INT(TRUE);
INT_ENABLE(INUM_T1, INT_ON);
TIMER1_RUN(true);
printf((char*)"set led fash OK!\n");
}
else
printf((char*)"set led fash Failed!\n");
}
/* null */ // 指令不存在
else
printf((char*)"Command error!\n");
CLR:memset(Buf.Str, ' ', BUF_SIZE);
Buf.index = 0;
}
/******************************************************************************
* @fn intTIMER
*
* @brief intTIMER
*
* @param none
*
* @return none
*****************************************************************************/
void intTIMER(void)
{
TIMER1_INIT();
if(SetTimer1Period(200000)) // us
{
TIMER1_ENABLE_OVERFLOW_INT(TRUE);
INT_ENABLE(INUM_T1, INT_ON);
TIMER1_RUN(true);
}
}
/******************************************************************************
* @fn T1_IRQ
*
* @brief T1_IRQ
*
* @param none
*
* @return none
*****************************************************************************/
#pragma vector=T1_VECTOR
__interrupt void T1_IRQ(void)
{
EA = false;
if(T1CTL & 0x10) // T1 overflow
{
LED1 = !LED1;
}
EA = true;
T1CTL &= ~0x10;
}
/******************************************************************************
* @fn ConvertChar
*
* @brief asiic to byte
*
* @param none
*
* @return uint16
*****************************************************************************/
uint16 ConvertChar(char *pData,byte len)
{
uint8 i;
uint16 val=0;
for(i=0; i<len; i++)
{
if ((*( pData+i) >= '0') && (*(pData+i) <= '9'))
val = val*10 + *( pData+i) - '0';
}
return val;
}
/*------------------------------------------------------------------------------
0ooo
ooo0 ( )
( ) ) /
\ ( (_/
\_) By:cuiqingwei [gary]
------------------------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -