1打開S+core IDE,使用“S+core IDE eCos Project"範本採用預設設置新建一個專案;

2刪除專案資料夾目錄下的“default_install"資料夾;

3打開eCos config tool,使用預設範本建立源碼包,並添加“File IOpackages

4選中“I/O sub-system—>Serial device drivers—>Hardware serial device drivers",此時其下的SPCE3200的串列埠packages sunplus SCORE/SPCE3200 board serial device drivers由灰色變為高亮色,表示此packages被加入到當前範本中,將被編譯;

5選中“I/O sub-system—>Serial device drivers—>Termios compatible TTY drivers—>Termios TTY channel #0",並修改其下選項“Termios TTY channel #0 device”的值為“/dev/serial"。

6“default.ecc"為檔案名將eCos範本保存至專案目錄下並將其編譯;

 

7按照圖 1.5所示的程式流程編寫使用UART讀寫的程式;

8修改、編譯(Rebuild All)直到沒有任何錯誤;

9S2TXRX指撥開關撥向上方;

10使用串列埠連接開發板和PC,並在PC端打開串口除錯助手或超級終端機,設置串列傳輸速率115200,資料位元8位元,停止位1位,無;

 

 

 

//============================================================

//程式功能:

//        使用UART將開發版與PC連接,鍵盤輸入字元由超級終端機顯現出來

//硬體連接: 

//        S2TXRX指撥開關撥向上方

//============================================================

#include <cyg/hal/hal_arch.h>                                  

#include <cyg/kernel/kapi.h>

#include <cyg/io/io.h>

 

#include <stdio.h>                                                             // 標準I/O輸入輸出標頭檔

#include <unistd.h>                                                           // Unix標準函數定義

#include <cyg/fileio/fileio.h>                                              // POSIX標準文件訪問函數定義

#include <termios.h>                                                         // PPSIX終端控制定義

 

#define STACK_SIZE CYGNUM_HAL_STACK_SIZE_TYPICAL

 

cyg_uint8 stack[STACK_SIZE];                                                // 執行緒堆疊

cyg_handle_t h_UART_test;                                                    // 執行緒控制碼

cyg_thread UART_test_s;                                                        // 執行緒訊息結構體

 

int serial;                                                                                 // 定義eCos I/O設備(串列埠)的控制碼

//====================================================

// 語法格式:void UART_test(cyg_addrword_t data)

// 功能描述: 主執行緒

//====================================================

void UART_test(cyg_addrword_t data)

{

        char test[20]={0,};

        char *pTest = test;                                                      // 定義串列埠測試緩沖

        while(1)

        {

                read(serial, pTest, 1);                                        // 從串列埠讀取1個字符并保存到pTest

                write(serial, pTest, 1);                                       // pTest中的1個字符發送到串列埠

                cyg_thread_delay(10);                                     // 執行緒延時10 ticks

        }

}

//====================================================

// 語法格式:void cyg_user_start(void)

// 功能描述: 主函數

//====================================================

void cyg_user_start(void)

{

        struct termios Opts;

 

        serial = open("/dev/termios0",O_RDWR);               // 以讀寫方式打開串列埠

 

        tcgetattr(serial, &Opts);                         // 得到串列埠終端屬性

    cfsetispeed(&Opts,B115200);                    // 設置輸入波特率為115200Bps

        cfsetospeed(&Opts,B115200);               // 設置輸出波特率為115200bps

        Opts.c_lflag &= ~ECHO;                         // 設置串列埠終端屬性為不回顯

        tcsetattr(serial,TCSANOW,&Opts);         // 使串列埠終端屬性生效

 

        cyg_thread_create(0,                                                 // 執行緒優先級

                                          UART_test,                                // 執行緒函數名

                                          (cyg_addrword_t)0,                  // 執行緒參數

                                          "Main Thread",                          // 執行緒名稱

                                          (void *)stack,                            // 執行緒堆疊

                                          STACK_SIZE,                             // 執行緒堆疊大小

                                          &h_UART_test,                          // 返回執行緒控制碼

                                          &UART_test_s);                         // 執行緒訊息結構體

        cyg_thread_resume(h_UART_test);                            // 啟動執行緒

    return;

}

運行結果:

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 pixnote21 的頭像
    pixnote21

    pixnote21的隨手筆記

    pixnote21 發表在 痞客邦 留言(0) 人氣()