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

📄 uart_example.c

📁 在sharp 404开发板的串口测试代码
💻 C
字号:
/***********************************************************************
 * $Workfile:   uart_example.c  $
 * $Revision:   1.0  $
 * $Author:   WellsK  $
 * $Date:   Jul 01 2003 11:58:52  $
 *
 * Project: Polled UART driver example
 *
 * Description:
 *     A polled UART driver example.
 *
 * Revision History:
 * $Log:   //smaicnt2/pvcs/VM/sharpmcu/archives/sharpmcu/software/csps/lh7a404
/bsps/sdk7a404/examples/uart_polled/uart_example.c-arc  $
 * 
 *    Rev 1.0   Jul 01 2003 11:58:52   WellsK
 * Initial revision.
 * 
 *
 ***********************************************************************
 * SHARP MICROELECTRONICS OF THE AMERICAS MAKES NO REPRESENTATION
 * OR WARRANTIES WITH RESPECT TO THE PERFORMANCE OF THIS SOFTWARE,
 * AND SPECIFICALLY DISCLAIMS ANY RESPONSIBILITY FOR ANY DAMAGES, 
 * SPECIAL OR CONSEQUENTIAL, CONNECTED WITH THE USE OF THIS SOFTWARE.
 *
 * SHARP MICROELECTRONICS OF THE AMERICAS PROVIDES THIS SOFTWARE SOLELY 
 * FOR THE PURPOSE OF SOFTWARE DEVELOPMENT INCORPORATING THE USE OF A 
 * SHARP MICROCONTROLLER OR SYSTEM-ON-CHIP PRODUCT. USE OF THIS SOURCE
 * FILE IMPLIES ACCEPTANCE OF THESE CONDITIONS.
 *
 * COPYRIGHT (C) 2001 SHARP MICROELECTRONICS OF THE AMERICAS, INC.
 *     CAMAS, WA
 **********************************************************************/
#include "abl_types.h"
#include "lh7a404_uart_driver.h"
#include "abl_irq_fiq.h"

/* UART device handle */
STATIC INT_32 uartdev;

CHAR menu1[] = "Hello world\n\r";
CHAR menu2[] = "This is string 2\n\r";
CHAR menu3[] = "This is string 3\n\r";
CHAR menu4[] = "This is string 4\n\r";
CHAR menu5[] = "This is string 5\n\r";

/* Print a menu */
void print_menu(void)
{
    uart_write_polled(uartdev, menu1, sizeof(menu1));
    uart_write_polled(uartdev, menu2, sizeof(menu2));
    uart_write_polled(uartdev, menu3, sizeof(menu3));
    uart_write_polled(uartdev, menu4, sizeof(menu4));
    uart_write_polled(uartdev, menu5, sizeof(menu5));
}

/***********************************************************************
 *
 * Function: c_entry
 *
 * Purpose: UART example code without interrupts
 *
 * Processing:
 *     Sends out a 'simulated' menu to UART 2 at 115K-N-8-1. Press the
 *     'r' key to display the menu again. Press ESC to end the example.
 *     Any other key is simply wrapped back around to the terminal.
 *
 * Parameters: None
 *
 * Outputs: None
 *
 * Returns: Always returns 1
 *
 * Notes:
 *     Using polling mode is not as easy aas using interrupt mode!
 *
 **********************************************************************/
int c_entry(void)
{
    CHAR buffer[10];
    INT_32 len, idx;
    BOOL_32 exitflag = FALSE;

    /* Disable interrupts in ARM core */
    disable_irq_fiq();

    /* Open UART 2 */
    if ((uartdev = uart_open(UART2, 0)) == 0x00000000)
    {
        return 0;
    }

    /* Set UART 1 to 115.2K-N-8-1 */
    uart_ioctl(uartdev, UART_SET_BAUD_RATE, BPS_115200);
    uart_ioctl(uartdev, UART_SET_PARITY, UART_PARITY_NONE);
    uart_ioctl(uartdev, UART_SET_DATA_BITS, 8);
    uart_ioctl(uartdev, UART_SET_STOP_BITS, 1);

    /* Print a menu */
    print_menu();

	

    /* Read some data from the buffer */
    while (exitflag == FALSE)
    {
        len = 0;
        while (len == 0)
        {
            len = uart_read_polled(uartdev, buffer, sizeof(buffer));
        }
        
        /* Got some data */
        idx = 0;
        while (idx < len)
        {
            if (buffer[idx] == 27)
            {
                /* ESC key, set exit flag */
                exitflag = TRUE;
            }
            else if (buffer[idx] == 'r')
            {
                print_menu();
            }
            else
            {
                /* Echo it back */
                uart_write_polled(uartdev, &buffer[idx], 1);
            }
            idx++;
        }
    }

    /* Close UART */
    uart_close(uartdev);

    return 1;
}

#ifndef __GNUC__
/* With ARM and GHS toolsets, the entry point is main() - this will
   allow the linker to generate wrapper code to setup stacks, allocate
   heap area, and initialize and copy code and data segments. For GNU
   toolsets, the entry point is through __start() in the crt0_gnu.asm
   file, and that startup code will setup stacks and data */
int main(void)
{
    return c_entry();
}
#endif

⌨️ 快捷键说明

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