|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
向高手請教幾個基礎(chǔ)問題! |
| 作者:lsh998 欄目:ARM技術(shù) |
/*********************************************************** *文件名:BEEPCON.c *功能:蜂鳴器控制。對蜂鳴器 B1 進行控制,采用軟件延時方法, 使用 I/O 口直接控制,采用灌電流方式 / ************************************************************ /************************************************************** #include "config.h" #define BEEPCON 0x00000080 /*P0.7 引腳控制 B1,底電平蜂鳴*/ //*************************************************************** void delay() //延時 { int i,j; for (i=0;i<10000;i++) { for (j=0;j<25;j++) { } } } int Main(void) //控制蜂鳴器蜂鳴 { PINSEL0= 0x00000000; //設(shè)置引腳連接 GPIO IOODIR = BEEPCON; //設(shè)置 I/O 為輸出 while(1) { IOOSET = BEEPCON; //BEEPCON=1 delay(); IOOCLR = BEEPCON //BEEPCON=0 } return(0); } *********************************************************************************** 上面的一段程序是 周立功 《 ARM 嵌入式系統(tǒng)實驗教程 (一)》抄下來的一段程序 有幾個問題向各位大俠請教: 問題1: #define BEEPCON 0x00000080 /*P0.7 引腳控制 B1,底電平蜂鳴*/ 是不是表示 BEEPCON 的物理地址為0x00000080 ? 它后面的解釋 /*P0.7 引腳控制 B1,底電平蜂鳴*/ 那就是說明 #define BEEPCON 0x00000080 只是給 P0.7 取了個別名 BEEPCON 各位大哥,是不是這樣? 如果真的是這樣的話,為什么不直接 對 P0.7 進行操作呢? 問題2: PINSEL0= 0x00000000; //設(shè)置引腳連接 GPIO PINSEL0 沒有定義為什么這里能用呢?PINSEL0 是不是寄存器啊? 為什么 PINSEL0= 0x00000000 就解釋為:設(shè)置引腳連接 GPIO ? 問題3: 為什么 IOODIR = BEEPCON; 解釋為:設(shè)置 I/O 為輸出 ? 問題4: while(1) { IOOSET = BEEPCON; //BEEPCON=1 delay(); IOOCLR = BEEPCON //BEEPCON=0 } 這段程序是什么意思? IOOSET 和 IOOCLR 分別是什么東西? 謝謝! * - 本貼最后修改時間:2005-9-9 15:45:13 修改者:lsh998 |
| 2樓: | >>參與討論 |
| 作者: lsh998 于 2005/9/10 8:00:00 發(fā)布:
re 那位大哥幫我鼎鼎落! |
|
| 3樓: | >>參與討論 |
| 作者: sd325 于 2005/9/19 14:06:00 發(fā)布:
還是先學51吧,磨刀不付砍柴功 還是先學51吧,磨刀不付砍柴功 |
|
| 4樓: | >>參與討論 |
| 作者: puppyh 于 2005/9/20 9:53:00 發(fā)布:
你要再仔細的閱讀芯片的數(shù)據(jù)手冊 問題1: #define BEEPCON 0x00000080 /*P0.7 引腳控制 B1,底電平蜂鳴*/ 是不是表示 BEEPCON 的物理地址為0x00000080 ? 答: #define BEEPCON 0x00000080 不是給 P0.7取了個別名而是定義了給蜂鳴器鳴響的寄存器的位置,因為是第七腳(10000000B),所以為0x80。 ---------------------------------------------------------------- 問題2: PINSEL0= 0x00000000; //設(shè)置引腳連接 GPIO PINSEL0 沒有定義為什么這里能用呢?PINSEL0 是不是寄存器。 為什么 PINSEL0= 0x00000000 就解釋為:設(shè)置引腳連接 GPIO ? 答: PINSEL0 沒有定義為什么能用,我想是因為有了#include "config.h" ---------------------------------------------------------------- 問題3: 為什么 IOODIR = BEEPCON; 解釋為:設(shè)置 I/O 為輸出 ? 答: 因為IOODIR是方向寄存器,為1表示該I/O口為輸出腳,為0表示為輸出腳。 ------------------------------------------------------------------ 問題4: while(1) { IOOSET = BEEPCON; //BEEPCON=1 delay(); IOOCLR = BEEPCON //BEEPCON=0 } 這段程序是什么意思? IOOSET 和 IOOCLR 分別是什么東西? 答: 這段程序是讓蜂鳴器開啟,延時后,關(guān)閉,但是有錯誤,應(yīng)該再IOOCLR = BEEPCON; 后面再加一行延時。 IOOSET 和 IOOCLR表示什么,你必須仔細閱讀數(shù)據(jù)手冊。! ================================== 我個人覺得你沒有認認真真,仔仔細細閱讀數(shù)據(jù)手冊!!這樣下去你的ARM基礎(chǔ)不扎實。 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |