📄 main.c
字号:
pdata = pdata;
while( (ret = LCD_CreateViewPort()) == ERROR_NO_VIEWPORT_AVAILABLE ) {
OSTimeDly( OS_DLY_100MS );
}
viewPortIndex = ret;
LCD_ActiveViewPort( viewPortIndex );
LCD_SetViewPortSize( 0, 30, 159, 159 );
LCD_ClrVP();
LCD_SetFont( Fnt_GB11x12 );
LCD_SetPixelPos( 50, 0 );
LCD_PutStr( (INT8U*)"显示测试" );
LCD_Button( 100, 109, 50, 20, (INT8U*)"返回", LCD_INVERT_COPY);
LCD_SetOutputStyle( LCD_COPY );
LCD_SetFont( Fnt_GB11x12);
LCD_SetPixelPos( 20, 20);
LCD_PutStr( (INT8U*)"帅" );
LCD_SetFont( Fnt_GB15x16);
LCD_SetPixelPos( 20, 40);
LCD_PutStr( (INT8U*)"帅" );
LCD_SetFont( Fnt_GB24x24 );
LCD_SetPixelPos( 20, 60);
LCD_PutStr( (INT8U*)"帅" );
LCD_SetFont( Fnt_GB32x32);
LCD_SetPixelPos( 20, 90);
LCD_PutStr( (INT8U*)"帅" );
LCD_SetOutputStyle( LCD_INVERT_COPY );
LCD_SetFont( Fnt_GB11x12);
LCD_SetPixelPos( 40, 20);
LCD_PutStr( (INT8U*)"帅" );
LCD_SetFont( Fnt_GB15x16);
LCD_SetPixelPos( 40, 40);
LCD_PutStr( (INT8U*)"帅" );
LCD_SetFont( Fnt_GB24x24 );
LCD_SetPixelPos( 50, 60);
LCD_PutStr( (INT8U*)"帅" );
LCD_SetFont( Fnt_GB32x32);
LCD_SetPixelPos( 60, 90);
LCD_PutStr( (INT8U*)"帅" );
LCD_SetOutputStyle( LCD_COPY );
LCD_SetFont( Fnt_GB32x32 );
LCD_SetPixelPos( 120, 20 );
LCD_PutStr( (INT8U*)"丑" );
LCD_SetFont( Fnt_GB24x24 );
LCD_SetPixelPos( 120, 60);
LCD_PutStr( (INT8U*)"丑" );
LCD_SetOutputStyle( LCD_INVERT_COPY );
LCD_SetFont( Fnt_GB32x32 );
LCD_SetPixelPos( 80, 20 );
LCD_PutStr( (INT8U*)"丑" );
LCD_SetFont( Fnt_GB24x24 );
LCD_SetPixelPos( 90, 60);
LCD_PutStr( (INT8U*)"丑" );
LCD_DeactiveViewPort( viewPortIndex );
while (1) {
switch( Key_GetCode() ) {
case KEY_F2:
LCD_DeleteViewPort( viewPortIndex );
OSTaskResume( START_TASK_PRIO );
OSTaskDel( OS_PRIO_SELF );
break;
}
OSTimeDly( OS_DLY_100MS );
}
}
void KeyTask(void *pdata)
{
INT16U key=KEY_NONE;
INT8U str[30];
INT8U viewPortIndex;
INT16S ret;
INT8U keyType;
pdata = pdata;
while( (ret = LCD_CreateViewPort()) == ERROR_NO_VIEWPORT_AVAILABLE ) {
OSTimeDly( OS_DLY_100MS );
}
viewPortIndex = ret;
LCD_ActiveViewPort( viewPortIndex );
LCD_SetViewPortSize( 0, 30, 159, 159 );
LCD_ClrVP();
LCD_SetFont( Fnt_GB11x12 );
LCD_SetPixelPos( 50, 0 );
LCD_PutStr( (INT8U*)"按键测试" );
LCD_Button( 100, 109, 50, 20, (INT8U*)"返回", LCD_INVERT_COPY);
LCD_Button( 10, 109, 50, 20, (INT8U*)"数字", LCD_INVERT_COPY);
LCD_SetViewPortSize( 1, 45, 159, 135 );
LCD_DeactiveViewPort( viewPortIndex );
keyType = KEYSET_NUMBER;
Key_SetKeySet( KEYSET_NUMBER );
while (1) {
OSTimeDly( OS_DLY_100MS );
key = Key_GetCode();
if( key == KEY_NONE ) continue;
if( key < 0xA0A0 ) {
switch( key & 0xFF ) {
case KEY_F1:
LCD_ActiveViewPort( viewPortIndex );
LCD_SetViewPortSize( 0, 30, 159, 159 );
keyType++;
if( keyType > KEYSET_CHINESE ) {
keyType = KEYSET_NUMBER;
}
if( keyType == KEYSET_NUMBER ) {
LCD_Button( 10, 109, 50, 20, (INT8U*)"数字", LCD_INVERT_COPY);
LCD_SetViewPortSize( 1, 45, 159, 135 );
}
else if( keyType == KEYSET_LETTER ) {
LCD_Button( 10, 109, 50, 20, (INT8U*)"字母", LCD_INVERT_COPY);
LCD_SetViewPortSize( 1, 45, 159, 135 );
}
else {
LCD_Button( 10, 109, 50, 20, (INT8U*)"中文", LCD_INVERT_COPY);
LCD_SetViewPortSize( 1, 45, 159, 100 );
}
LCD_ClrVP();
LCD_DeactiveViewPort( viewPortIndex );
Key_SetKeySet( keyType );
continue;
case KEY_F2:
Key_SetKeySet( KEYSET_NUMBER );
LCD_DeleteViewPort( viewPortIndex );
OSTaskResume( START_TASK_PRIO );
OSTaskDel( OS_PRIO_SELF );
break;
case KEY_SEND:
sprintf( (char*)str, "Send " );
break;
case KEY_ON_OFF:
sprintf( (char*)str, "ON/OFF" );
break;
case KEY_ENTER:
sprintf( (char*)str, "Enter" );
break;
case KEY_UP:
sprintf( (char*)str, "Up" );
break;
case KEY_DOWN:
sprintf( (char*)str, "Down" );
break;
case KEY_LEFT:
sprintf( (char*)str, "Left" );
break;
case KEY_RIGHT:
sprintf( (char*)str, "Right" );
break;
default:
sprintf( (char*)str, "%c", key );
break;
}
}
else {
sprintf( (char*)str, "%c%c", (INT8U)(key>>8), (INT8U)key );
}
LCD_ActiveViewPort( viewPortIndex );
LCD_PutStr( str );
LCD_DeactiveViewPort( viewPortIndex );
}
}
void CableComTask(void *pdata)
{
INT8U ch;
INT8U viewPortIndex;
INT16S ret;
INT8U waitForComm;
INT8U buff[1000];
pdata = pdata;
while( (ret = LCD_CreateViewPort()) == ERROR_NO_VIEWPORT_AVAILABLE ) {
OSTimeDly( OS_DLY_100MS );
}
viewPortIndex = ret;
LCD_ActiveViewPort( viewPortIndex );
LCD_SetViewPortSize( 0, 30, 159, 159 );
LCD_ClrVP();
LCD_SetFont( Fnt_GB11x12 );
LCD_SetPixelPos( 50, 0 );
LCD_PutStr( (INT8U*)"有线通讯测试" );
LCD_Button( 10, 109, 50, 20, (INT8U*)"不等待", LCD_INVERT_COPY);
LCD_Button( 100, 109, 50, 20, (INT8U*)"返回", LCD_INVERT_COPY);
LCD_SetPixelPos( 20, 30 );
LCD_PutStr( (INT8U*)"将串口收到的数据发回" );
LCD_DeactiveViewPort( viewPortIndex );
waitForComm = FALSE;
SCI_Open( COM0, SCICFG_Baud9600, SCICFG_8DataBit, SCICFG_ParityNone, SCICFG_1StopBit);
while (1) {
switch( Key_GetCode() ) {
case KEY_F1:
LCD_ActiveViewPort( viewPortIndex );
LCD_ClrVP();
if( waitForComm == TRUE ) {
waitForComm = FALSE;
LCD_Button( 10, 109, 50, 20, (INT8U*)"不等待", LCD_INVERT_COPY);
LCD_Button( 100, 109, 50, 20, (INT8U*)"返回", LCD_INVERT_COPY);
LCD_SetPixelPos( 20, 30 );
LCD_PutStr( (INT8U*)"将串口收到的数据发回" );
}
else {
waitForComm = TRUE;
LCD_Button( 10, 109, 50, 20, (INT8U*)"等待", LCD_INVERT_COPY);
LCD_Button( 100, 109, 50, 20, (INT8U*)"返回", LCD_INVERT_COPY);
LCD_SetPixelPos( 0, 30 );
LCD_PutStr( (INT8U*)" 等待串口数据\r\n 满1k后从串口发回\r\n 连续3秒无数据则超时退出" );
}
LCD_DeactiveViewPort( viewPortIndex );
break;
case KEY_F2:
LCD_DeleteViewPort( viewPortIndex );
OSTaskResume( START_TASK_PRIO );
OSTaskDel( OS_PRIO_SELF );
break;
}
if( waitForComm == TRUE ) {
ret = SCI_WaitForGet( COM0, buff, 1000, 3000 );
SCI_WaitForSend( COM0, buff, ret );
}
else {
do {
ret = SCI_Get( COM0, &ch, 1 );
if( ret == 1 ) {
SCI_Send( COM0, &ch, 1 );
}
} while( ret == 1 );
}
OSTimeDly( OS_DLY_50MS );
}
}
void WirelessTask(void *pdata)
{
INT8U ch;
INT8U viewPortIndex;
INT16S ret;
INT8U usingRF;
INT8U key;
pdata = pdata;
while( (ret = LCD_CreateViewPort()) == ERROR_NO_VIEWPORT_AVAILABLE ) {
OSTimeDly( OS_DLY_100MS );
}
viewPortIndex = ret;
LCD_ActiveViewPort( viewPortIndex );
LCD_SetViewPortSize( 0, 30, 159, 159 );
LCD_ClrVP();
LCD_SetFont( Fnt_GB11x12 );
LCD_SetPixelPos( 50, 0 );
LCD_PutStr( (INT8U*)"无线通讯测试" );
LCD_SetPixelPos( 10, 30 );
LCD_PutStr( (INT8U*)"发送按键" );
LCD_Button( 10, 109, 50, 20, (INT8U*)"测红外", LCD_INVERT_COPY);
LCD_Button( 100, 109, 50, 20, (INT8U*)"返回", LCD_INVERT_COPY);
LCD_SetViewPortSize( 0, 50, 159, 130 );
LCD_DeactiveViewPort( viewPortIndex );
usingRF = TRUE;
//RF_PowerOn();
SET_RF_PWR;
SCI_Open( COM1, SCICFG_Baud9600, SCICFG_8DataBit, SCICFG_ParityNone, SCICFG_1StopBit);
while (1) {
OSTimeDly( OS_DLY_100MS );
key = Key_GetCode();
switch( key ) {
case KEY_F1:
if( usingRF ) {
SCI_Close( COM1 );
SCI_Open( COM1, SCICFG_Baud1200, SCICFG_8DataBit, SCICFG_ParityEven, SCICFG_1StopBit);
IR_PowerOn();
usingRF = FALSE;
LCD_ActiveViewPort( viewPortIndex );
LCD_SetViewPortSize( 0, 30, 159, 159 );
LCD_SetPixelPos( 50, 0 );
LCD_PutStr( (INT8U*)"红外通讯测试" );
LCD_Button( 10, 109, 50, 20, (INT8U*)"测无线", LCD_INVERT_COPY);
LCD_SetViewPortSize( 0, 50, 159, 130 );
LCD_DeactiveViewPort( viewPortIndex );
}
else {
SCI_Close( COM1 );
SCI_Open( COM1, SCICFG_Baud9600, SCICFG_8DataBit, SCICFG_ParityNone, SCICFG_1StopBit);
RF_PowerOn();
usingRF = TRUE;
LCD_ActiveViewPort( viewPortIndex );
LCD_SetViewPortSize( 0, 30, 159, 159 );
LCD_SetPixelPos( 50, 0 );
LCD_PutStr( (INT8U*)"无线通讯测试" );
LCD_Button( 10, 109, 50, 20, (INT8U*)"测红外", LCD_INVERT_COPY);
LCD_SetViewPortSize( 0, 50, 159, 130 );
LCD_DeactiveViewPort( viewPortIndex );
}
break;
case KEY_F2:
LCD_DeleteViewPort( viewPortIndex );
SCI_Close( COM1 );
//RF_PowerOff();
CLEAR_RF_PWR;
IR_PowerOff();
OSTaskResume( START_TASK_PRIO );
OSTaskDel( OS_PRIO_SELF );
break;
case KEY_NONE:
break;
default:
SCI_Send( COM1, &key, 1 );
if( !usingRF ) {
while( 1 ) {
if( SCI_SendComplete( COM1 ) == TRUE ) {
break;
}
OSTimeDly( OS_DLY_20MS );
}
SCI_Flush( COM1 );
}
break;
}
do {
ret = SCI_Get( COM1, &ch, 1 );
if( ret == 1 ) {
//SCI_Send( COM1, &ch, 1 );
LCD_ActiveViewPort( viewPortIndex );
LCD_PutCh( ch );
LCD_DeactiveViewPort( viewPortIndex );
}
} while( ret == 1 );
}
}
void FlashTask(void *pdata)
{
INT8U buff[50];
INT8U i;
INT8U res;
INT32U addr;
INT8U y;
INT8U viewPortIndex;
INT16S ret;
pdata = pdata;
while( (ret = LCD_CreateViewPort()) == ERROR_NO_VIEWPORT_AVAILABLE ) {
OSTimeDly( OS_DLY_100MS );
}
viewPortIndex = ret;
LCD_ActiveViewPort( viewPortIndex );
LCD_SetViewPortSize( 0, 30, 159, 159 );
LCD_ClrVP();
LCD_SetFont( Fnt_GB11x12 );
LCD_SetPixelPos( 50, 0 );
LCD_PutStr( (INT8U*)"数据存储" );
LCD_Button( 100, 109, 50, 20, (INT8U*)"返回", LCD_INVERT_COPY);
y = 20;
LCD_SetPixelPos( 10, y );
LCD_PutStr( (INT8U*)"正在擦除。。。" );
addr = 12345; // for 16M bit addr < 0x1FFFFF, for 32M bit addr < 3FFFFF. if over range, the address will wrap back to 0.
W25x_SectorErase( addr ); //one sector = 4096 bytes
W25x_SectorErase( addr+4096 ); //erase 2 sector, for the data may on the boundary
y += 15;
LCD_SetPixelPos( 10, y );
LCD_PutStr( (INT8U*)"正在写数据。。。" );
for( i=0; i<50; i++ ) {
buff[i] = i+' ';
}
W25x_WriteData( addr, buff, 50 );
y += 15;
LCD_SetPixelPos( 10, y );
LCD_PutStr( (INT8U*)"正在读数据。。。" );
for( i=0; i<50; i++ ) {
buff[i] = 0;
}
W25x_ReadData( addr, buff, 50 );
y += 15;
LCD_SetPixelPos( 10, y );
LCD_PutStr( (INT8U*)"正在校验。。。" );
res = TRUE;
for( i=0; i<50; i++ ) {
if( buff[i] != i+' ' ) {
res = FALSE;
break;
}
}
y += 15;
LCD_SetPixelPos( 10, y );
if( res == TRUE ) {
LCD_PutStr( (INT8U*)"数据存储测试成功!" );
}
else {
LCD_PutStr( (INT8U*)"数据存储测试失败!" );
}
LCD_DeactiveViewPort( viewPortIndex );
LCD_DeleteViewPort( viewPortIndex );
while (1) {
switch( Key_GetCode() ) {
case KEY_F2:
OSTaskResume( START_TASK_PRIO );
OSTaskDel( OS_PRIO_SELF );
break;
}
OSTimeDly( OS_DLY_100MS );
}
}
void SetTimeTask(void *pdata)
{
INT8U key;
INT8U str1[20], str2[20];
INT8U viewPortIndex;
INT16S ret;
RTCTime time;
pdata = pdata;
while( (ret = LCD_CreateViewPort()) == ERROR_NO_VIEWPORT_AVAILABLE ) {
OSTimeDly( OS_DLY_100MS );
}
viewPortIndex = ret;
LCD_ActiveViewPort( viewPortIndex );
LCD_SetViewPortSize( 0, 30, 159, 159 );
LCD_ClrVP();
LCD_SetFont( Fnt_GB11x12 );
LCD_SetPixelPos( 50, 0 );
LCD_PutStr( (INT8U*)"设置时间" );
LCD_SetPixelPos( 10, 30 );
LCD_PutStr( (INT8U*)"YYYYMMDDHHMMSS" );
LCD_Button( 10, 109, 50, 20, (INT8U*)"确定", LCD_INVERT_COPY);
LCD_Button( 100, 109, 50, 20, (INT8U*)"返回", LCD_INVERT_COPY);
LCD_DeactiveViewPort( viewPortIndex );
str1[0] = 0;
str2[0] = 0;
while (1) {
OSTimeDly( OS_DLY_100MS );
key = Key_GetCode();
switch( key ) {
case KEY_F1:
time.tm_year = (str1[0]-'0')*1000 + (str1[1]-'0')*100 + (str1[2]-'0')*10 + (str1[3]-'0');
time.tm_mon = (str1[4]-'0')*10 + (str1[5]-'0');
time.tm_mday = (str1[6]-'0')*10 + (str1[7]-'0');
time.tm_hour = (str1[8]-'0')*10 + (str1[9]-'0');
time.tm_min = (str1[10]-'0')*10 + (str1[11]-'0');
time.tm_sec = (str1[12]-'0')*10 + (str1[13]-'0');
RTCSetDateTime( time );
case KEY_F2:
LCD_DeleteViewPort( viewPortIndex );
OSTaskResume( START_TASK_PRIO );
OSTaskDel( OS_PRIO_SELF );
break;
default:
if( key>= KEY_0 && key <= KEY_9 ) {
sprintf( (char*)str2, "%s", str1 );
sprintf( (char*)str1, "%s%c", str2, key );
LCD_ActiveViewPort( viewPortIndex );
LCD_SetPixelPos( 10, 50 );
LCD_PutStr( str1 );
LCD_DeactiveViewPort( viewPortIndex );
}
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -