<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于嵌入式NiosⅡ軟核的串口直接讀寫(xiě)寄存器方式編程

基于嵌入式NiosⅡ軟核的串口直接讀寫(xiě)寄存器方式編程

作者: 時(shí)間:2010-10-02 來(lái)源:網(wǎng)絡(luò ) 收藏

2 串口直接讀寫(xiě)寄存器方式編程
2.1 串口初始化

NiosⅡ的串口編程有多種方式,比較多的是采用標準C語(yǔ)言寫(xiě)法,占用程序空間比較大。NiosⅡ處理器的啟動(dòng)可采用2種方式:自動(dòng)初始化和用戶(hù)自定義初始化。ANSI C標準定義應用程序可以通過(guò)調用main()來(lái)開(kāi)始執行。在調用main()之前,應用程序假定運行環(huán)境和所有的服務(wù)系統都被初始化并準備運行。初始化可以被硬件抽象層(HAL)系統庫自動(dòng)執行。程序員不需要考慮系統的輸出設備以及如何初始化每一個(gè)外設,HAL會(huì )自動(dòng)初始化整個(gè)系統。
另外,ANSI C標準也提供了一個(gè)可變的入口點(diǎn)程序,以避免自動(dòng)初始化。ANSI C標準還定義程序員能手動(dòng)初始化任何所用的硬件。alt_ main()函數提供了一個(gè)獨立式的編程環(huán)境,能夠完全控制系統的初始化。獨立式編程環(huán)境可以使程序員手動(dòng)編寫(xiě)初始化系統的代碼。
HAL提供的系統初始化代碼按以下啟動(dòng)順序運行:
(1)啟動(dòng)指令和數據高速緩沖存儲器;
(2)配置堆棧;
(3)配置全局指針;
(4)通過(guò)鏈接器提供的_bss_start和_bss_end來(lái)零初始化BSS層,_bss_start和_bss_end是開(kāi)始和結束B(niǎo)SS的命令;
(5)如果當前系統沒(méi)有啟動(dòng)下載器,就復制.rwdata,.rodata或者剩下的部分到RAM;
(6)調用alt_main()。
在NiosⅡIDE工程中,只需簡(jiǎn)單定義alt_main()就可以實(shí)現用戶(hù)的啟動(dòng)順序,而且能夠選擇HAL的服務(wù)程序。如果應用程序需要一個(gè)alt_ main()入口點(diǎn)程序,可以復制默認的執行作為開(kāi)始點(diǎn),根據要求來(lái)定制它。

使用獨立式編程環(huán)境會(huì )增加NiosⅡ程序編寫(xiě)的復雜性。獨立式編程環(huán)境的主要作用在于減小代碼量,但要使用這種方法,需要對NiosⅡ處理器的外設和驅動(dòng)編寫(xiě)都非常熟悉才行。在NiosⅡIDE中也可以通過(guò)某些選項來(lái)減小HAL系統庫容量,從而達到減小代碼量的目的,比使用獨立式編程環(huán)境容易得多。
串口部分程序初始化代碼如下:
//串口中斷初始化

2.2 串口收發(fā)通信程序
串口的收發(fā)可采用查詢(xún)和中斷方式,中斷方式要更好一些。
查詢(xún)方式發(fā)送子程序代碼如下:




關(guān)鍵詞: 收發(fā)器

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>