⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.c

📁 CC2430的液晶显示程序
💻 C
字号:
/******************************************************************************
Filename:     uart.c
Target:       cc2430
Revised:      16/12-2005
Revision:     1.0

Description:
    Reads in data written through the UART. When ENTER is pressed, the data is
    written back. ESC ends the session.

    Set up hyperterminal for 57600 kBaud transfer.
    Use 8 bits, no flow control and no parity bit.

******************************************************************************/

#include <stdio.h>
#include <string.h>
#include "app_ex.h"
#include "lcd128_64.h"

// Prototypes
char uartGetkey(void);
void UartTX_Send_String(char *Data,int len);

#define BUFFER_SIZE 32

typedef struct{
   UINT8 pointer;
   char text[BUFFER_SIZE];
} BUFFER;

BUFFER buffer;

void initUART(void);
void uart_main(void);


/******************************************************************************
* @fn  initUART
*
* @brief
*      Initializes components for the UART application example.
*
* Parameters:
*
* @param  void
*
* @return void
*
******************************************************************************/
void initUART(void)
{

   // Setup for UART0
   IO_PER_LOC_UART0_AT_PORT0_PIN2345();

   SET_MAIN_CLOCK_SOURCE(CRYSTAL);

   UART_SETUP(0, 57600, HIGH_STOP);

   UTX0IF = 1;

/*
      CLKCON &= ~0x40;              //晶振
    while(!(SLEEP & 0x40));      //等待晶振稳定
    CLKCON &= ~0x47;             //TICHSPD128分频,CLKSPD不分频
    SLEEP |= 0x04; 		 //关闭不用的RC振荡器

    PERCFG = 0x00;				//位置1 P0口
    P0SEL = 0x3c;				//P0用作串口
    P2DIR &= ~0XC0;                             //P0优先作为串口0

//    IO_PER_LOC_UART0_AT_PORT1_PIN2345();
    U0CSR |= 0x80;				//UART方式
    U0GCR |= 10;				//baud_e
    U0BAUD |= 216;				//波特率设为57600
    UTX0IF = 0;

//    */
//   initLcd();
}


/******************************************************************************
* @fn  uart_main
*
* @brief
*      Main function.
*
* Parameters:
*
* @param  void
*
* @return void
*
******************************************************************************/
#ifdef COMPLETE_APPLICATION
void uart_main(void){
#else
void main(void){
#endif
     char c = 0;
   UINT8 i;
   char arr1[17] = "";
   char arr2[17] = "";
   initUART();

   memset(buffer.text, ' ', BUFFER_SIZE);
   buffer.pointer = 0;
   ClearScreen();
   Print6(0,25,"UART <--> LCD",1);
   /*
   if(LanguageSel == 1)
   {
       Print6(2,10," Plesae input:",1);
   }
   else
   {
       Print(2,8,"请从串口输入:",1);
   }
   */
   Print6(2,25,"Plesae Input:",1);
   Print6(1,31,"57600 8-N-1",1);

   Rectangle(2 , 4 , 124 , 7);

   printf((char*)"\n\nType text\n");
   printf((char*)"ENTER to readback text to hyperterminal\n");
   printf((char*)"BACKSPACE to delete last written character\n");
   printf((char*)"ESC to quit\n");

   while( !stopApplication() && ( c = uartGetkey()) != ESC ){
      switch ( c ){
      case ENTER:
         for(i = 0; i < BUFFER_SIZE; i++){
            printf((char*)"%c", buffer.text[i]);
         }
         printf((char*)"\n");

         memset(buffer.text, ' ', BUFFER_SIZE);
         buffer.pointer = 0;
         break;
      case BACK_SPACE:
         if (buffer.pointer > 0){
            buffer.pointer--;
            buffer.text[buffer.pointer] = ' ';
         }
         break;
      case ESC:
         break;
      default:
         if (buffer.pointer == BUFFER_SIZE){
           for(i=0;i<BUFFER_SIZE;i++)
              buffer.text[i] = buffer.text[i+1];
              buffer.text[i]= c;
         }
         else
         {
           buffer.text[buffer.pointer++] = c;
         }
         break;
   }
      memcpy(arr1,&buffer.text[0],16);
      arr1[16] = '\0';
      memcpy(arr2,&buffer.text[16],16);
      arr2[16] = '\0';
      Print6(5,15,(INT8U*)arr1,1);
      Print6(6,15,(INT8U*)arr2,1);
   }
}



/****************************************************************
*函数功能 :串口发送字符串函数					
*入口参数 : data:数据									
*			len :数据长度							
*返 回 值 :无											
*说    明 :				
****************************************************************/
void UartTX_Send_String(char *Data,int len)
{
  int j;
  for(j=0;j<len;j++)
  {
    U0DBUF = *Data++;
    while(UTX0IF == 0);
    UTX0IF = 0;
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -