AT91RMM9200的PIO使用与设置
本文來自:http://www.hyesco.com/forum/dispbbs.asp?boardID=5&ID=460&page=1
AT91RM9200管理PA,PB,PC,PD四個PIO,每個PIO都可以被設置工作在GPIO或者外設I/O狀態下,但是要注意,要使能某個引腳的GPIO功能時,不能和該引腳的外設I/O功能發生沖突,只能使其工作在一個特定的狀態下。
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的設置,否則該引腳無法使用。
總結
以上是生活随笔為你收集整理的AT91RMM9200的PIO使用与设置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常见的三维点云数据下载链接,自己整理+网
- 下一篇: 为什么有s[0]-‘0‘,是什么意思?