在
xps中提供的
uart ip
只有lite
(精簡版)可用,相容
16550
模式的uart ip
是要付費的。
lite
模式的uart
比較簡單,但是使用時也帶來諸多問題,比如中斷只有一種模式,即收發都會觸發中斷並且無法區分,這個確實比較讓人惱火。還好在大多數應用場合影響不大。
uart
的收發控制有兩種方式,一種是查詢方式(
polled
),另一種是中斷方式(
interrupt
)。查詢方式比較簡單,不斷查詢狀態暫存器即可。比較常用的是中斷方式,
ok,來看一段**吧:
#include "xparameters.h"
#include "xgpio.h"
#include "xutil.h"
#include "xintc.h"
#include "xuartlite.h"
#include "xuartlite_l.h" //
首先定義中斷函式
void uart_rev_handler(void)}
int main()
可以看出,在
uart
中斷函式中我們只做了一件事情,就是看接收
fifo
中是否有數,如果有數的話就讀出來。而不對傳送產生的中斷做出響應。
需要注意的是,要慎用
xps給出的
api驅動函式,因為有些函式在呼叫的時候當條件不滿足時會停下來等待,使得整個程式被掛起。
讓我比較困惑的乙個問題是:
xps驅動給出的
api驅動中有兩個函式分別是
void xuartlite_setrecvhandler(xuartlite * instanceptr, xuartlite_handler funcptr, void * callbackref)
和void xuartlite_setsendhandler(xuartlite * instanceptr, xuartlite_handler funcptr, void * callbackref)
,看介紹是說設定中斷函式當中斷發生的時候被呼叫。但是在用這個兩個函式的時候卻無法正常呼叫
uart
中斷函式,而且看這兩個函式就很奇怪,因為我在系統中用了中斷管理模組,所有的中斷必須連線到中斷管理模組上,但是這兩個函式明顯沒有這個介面,那就不是這麼用的!或許是當系統中只有
uart
中斷時直接接到
processor
上的。maybe, who konws?
MicroBlaze程式寫入Flash
1.在 settings bitstream 中選中 bin file 2.在約束檔案中新增 set property bitstream.general.compress true current design set property bitstream.config.configrate 33...
Uart之資料溢位
在專案現場實施專案的過程之中,出現了乙個問題。stm32的控制器,莫名其妙會宕機,不定時會出現這個問題。出現之後系統指示燈不在閃爍,網路宕機,伺服器再也ping不同,下位機的控制器。經過debug發現了抓到了這個宕機的點。我發現並不是硬體錯誤,沒有呼叫hart fault這個中斷服務函式。但是主線程...
6410之uart的配置
主程式start.s define config periport base 0x70000000 define config periport size 0x13 define wtcon 0x7e004000 global start start 告訴cpu 外設的位址 ldr r0,confi...