1。配置pio工作在gpio模式
以pb0為例,如果要使其工作在gpio模式,則首先要使能pio控制器,設定:
*(at91c_piob_per)=0x1;
然後或者把pb0作為輸出,或者作為輸入。如果作為輸出口,設定:
*(at91c_piob_oer)=0x1;
向使能為輸出口的pb0寫入乙個數,設定:
*(at91c_piob_sodr)=0x1;//寫入1
*(at91c_piob_codr)=0x1;//寫入 0
如果要把pb0作為輸入口,則配置:
*(at91c_pmc_pcer)|=0x1 << at91c_id_piob;//enable piob mck
*(at91c_piob_odr)=0x1; //enable pb0 input
很多使用者忽略了上面的設定,結果讀不到口的狀態,如果使能了外設時鐘,則讀埠
狀態設定:
int status;
status=*(at91c_piob_pdsr)&0x01;
status反映了當前pb0口的電平,即status=0或1;
以上的過程就是如何配置乙個i/o口作為通用i/o來使用。
2。配置pio工作在外設i/o模式
仍以pb0為例,如果要使pb0工作在外設a模式或者b模式下,首先要禁止pio控制器,設定:
*(at91c_piob_pdr)=0x1;
如果要設定pb0為a功能,即tf0,則設定:
*(at91c_piob_asr)=0x1;
如果要設定pb0為b功能,即rts3,則設定:
*(at91c_piob_bsr)=0x1;
這時,pb0就不再受pio控制器的管理而工作在外設引腳模式下了。
必須指出:at91rm9200的所有外設引腳在使用之前必須進行步驟2的設定,否則該引腳無法使用。
AT91RM9200新增串列埠驅動
uart串列埠驅動程式移植 uart串列埠驅動程式移植 仇潔婷,陳儒軍 在嵌入式控制系統採集站的設計方案中,需要用到 at91rm9200的5 個uart 串列埠,就會涉及到多個中斷的優先順序分配問題,而且也可能造成序列通訊的中斷不能及時響應,從而造成資料丟失。在 linux2.6.21 核心中,u...
AT91RM9200 啟動過程詳解
最近,一直在做ramdisk,把arm linux的啟動過程完整的看了一遍,收穫不少,心想可以寫點原創了。考慮到網上的文件雖然有介紹arm linux的啟動過程的,但是一般沒有給出流程圖,也講的十分零星,沒有乙個全貌,我就主要以流程圖的方式給出,再一點一點的詳解每個過程,剛剛接觸嵌入式arm lin...
AT91RM9200的啟動過程
系統上電,檢測bms,選擇系統的啟動方式,如果bms為高電平,則系統從片內rom啟動。at91rm9200的rom上電後被對映到了0x0和0x100000處,在這兩個位址處都可以訪問到rom。由於9200的rom中固化了乙個bootloaer程式。所以pc從0x0處開始執行這個bootloaer 準...