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

📄 term_com.c

📁 ARM入门的好帮手.包含了从简单到相对较复杂的程序.
💻 C
字号:
//*----------------------------------------------------------------------------
//*      ATMEL Microcontroller Software Support  -  ROUSSET  -
//*----------------------------------------------------------------------------
//* The software is delivered "AS IS" without warranty or condition of any
//* kind, either express, implied or statutory. This includes without
//* limitation any warranty or condition with respect to merchantability or
//* fitness for any particular purpose, or against the infringements of
//* intellectual property rights of others.
//*----------------------------------------------------------------------------
//* File Name           : term_com.c
//* Object              : Test USART in polling with com driver
//*
//* 1.0 09/10/00 JPP    : Creation
//*----------------------------------------------------------------------------

//* --------------------------- include file ----------------------------------
#include <stdio.h>
#include "parts/r40807/lib_r40807.h"
#include "drivers/com/com.h"

//* --------------------------- Constant definition ---------------------------
#define MCKI            32768000
#define BAUD_RATE       38400

//* ------------------------------  Local variable ----------------------------

char message[512];
ComDesc COM;

static const char atmel_header[]=
{
"\n\r  *** ATMEL USART TEST ***\n\r"
"Copyright (C) 1999 ATMEL Corporations Version: 1.0\n\r"
};

static const char main_menu[]=
{
"\n\r  COMMAND MENU: Base \n\r"
"  0)  Info\n\r"
"  1)  Get Interger Val\n\r"
"  2)  Get Hexa  Val\n\r"
"Enter command to execute: "
};

//*----------------------------------------------------------------------------
//* Function Name       : Get_Command
//* Object              : Get command val
//* Input Parameters    : None
//* Output Parameters   : int : Command num
//*----------------------------------------------------------------------------
int Get_Command(void)
{
  int command;
  at91_print_frame(&COM,(char *)main_menu,sizeof(main_menu));
  at91_scanf(&COM,"%d", &command);
  at91_print_crlf(&COM);
  return command;
}
//*----------------------------------------------------------------------------
//* Function Name       : menu
//* Object              : check general menu
//* Input Parameters    : None
//* Output Parameters   : None
//*----------------------------------------------------------------------------
void menu(void)
{
int     command = 0;
int     value;

for(;;)
  {
    command = Get_Command();
    switch(command)
    {
     case 0:
            at91_print_frame(&COM,(char *)atmel_header,sizeof(atmel_header));
          break;
     case 1:        //* Get a integer
            at91_print(&COM,"please inter a interger :");
            at91_scanf(&COM,"%d", &value);
            sprintf(message,"\n\rValue= %d  hexa: %08X  \n\r",value,value);
            at91_print(&COM,message);
          break;
     case 2:        //* Get an Hexa
            at91_print(&COM,"please inter a interger :");
            at91_scanf(&COM,"%X", &value);
            sprintf(message,"\n\rValue= %d  hexa: %08X  \n\r",value,value);
            at91_print(&COM,message);
        break;

    default:         /*  invalid command  */
        at91_print(&COM,"Invalid command entered. Please enter again!\n\r");
    }
  }
}

//*----------------------------------------------------------------------------
//* Function Name       : main
//* Object              : Main function of Polling USART 0
//* Input Parameters    : none
//* Output Parameters   : True
//*----------------------------------------------------------------------------
int main( void )
//* Begin
{
    u_short cd_baud,error;

    //* open terminal for console
    COM.usart=&USART0_DESC;
    error=0;

    cd_baud = at91_baud_com(MCKI, BAUD_RATE);
    error = at91_error_baud_com(MCKI, BAUD_RATE);

    //* open com
    at91_open_com(&COM,(COM_8_BIT|COM_PAR_NONE|COM_NBSTOP_1|COM_FLOW_CONTROL_NONE), cd_baud);

    sprintf(message," \n\r\n\rAT91 Com at %d, 8 bits, parity none, one stop, error = %02d %% \n\r",BAUD_RATE,error);
    at91_print(&COM,message);

    at91_print_frame(&COM,(char *)atmel_header,sizeof(atmel_header));

    menu();

    return(TRUE);
//* End
}

⌨️ 快捷键说明

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