久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 模擬技術 > 設計應用 > 將串行應用移植到USB接口的簡便方法(06-100)

將串行應用移植到USB接口的簡便方法(06-100)

——
作者:Microchip Technology Inc. Lucio Di Jasio 時間:2008-04-02 來源:電子產品世界 收藏
  便捷的固件移植

  在下面的討論中,我們假設原先的端口代碼是用C語言編寫的,并且使用了可訪問集成UART外設的公共C語言庫。 給定這些條件后,將固件移植到CDC需要進行如下的修改:

本文引用地址:http://cqxgywz.com/article/81086.htm

  ·在主文件頭部,用相應的聲明代替針對端口的#include聲明;

  ·在主函數中,增加對-CDC初始化代碼的調用;

  ·在主函數中,增加對后臺任務的調用;

  ·驗證應用程序代碼,以實現與USB后臺任務的協同多任務處理;

  ·最后,為鏈接器提供USB-CDC專用庫,生成最終的可執行代碼,然后對閃存芯片進行編程。

  實際上,上述這種情況要求應用所調用的任何功能都不能包含阻塞循環。 也就是說,任何功能都不能占用100%的處理器時間,也不能妨礙USB后臺任務的執行。 反過來,所有USB專用控制函數、中斷、標志和緩沖機制都由CDC類固件后臺任務管理,設計工程師無需關注其實現細節。 設計工程師所看到的只是一個非常類似于公共端口庫的小函數集。表1給出了部分函數例子。

  大多數讀者立即就可認出這些函數并將其與通用C語言庫中的函數對應起來。 事實上,puts 和 gets 函數可以直接用CDC類中對應的 putsUSBUSART 和 getsUSBUSART 函數來替代。 通過其它專用實施函數還可以支持不同的串類型(空結束與固定長度緩沖)和存儲類型(RAM還是ROM串表)。 下面給出熟悉的HelloWorld程序利用CDC-USB函數實現的程序。

  #include "systemusbusb.h"
  #include "io_cfg.h"

  void main(void)
  {
      InitializeSystem();
      while(1)
      {
          USBTasks();         // USB Tasks
          HelloWorld();       // send a message to the
              world
      }//end while
  }//end main
  HelloWorld(void)
  {   
     If ( mUSBUSARTIsTxTrfReady())                  // check if Tx buffer empty
         putrsUSBUSART( "Hello World!rn") //
            send a new text string
  } // Hello World



關鍵詞: Microchip USB 串行

評論


相關推薦

技術專區

關閉