51微控制器stm32中sfr和define的定義問題求解

時間 2021-10-14 22:54:30

1樓:匿名使用者

在stm32中有個韌體庫,已經把那些埠的位址全部儲存在乙個向量表中,你用的那個define就是內部已經定義好的。你本來就是使用的韌體庫就可以對埠的位址進行正確的埠操作,然而在51中,這些埠是不能這樣操作的,只能把它都當做特殊的暫存器給他附位址。

2樓:匿名使用者

因為平台不同,c語言大的框架是相通的,但細節上有所區別

3樓:匿名使用者

51特殊功能寄存只能直接定址,不能間接定址

4樓:匿名使用者

在51微控制器中,如果你這麼定義:

#define p0 (*(volatile unsigned char*)0x80)

那麼執行p0=0x25的時候,彙編就變成

mov dptr,#0080h

mov a,#25h

movx @dptr,a

很明顯,你就不是往埠p0賦值0x25,而是像外部匯流排上的位址0x0080寫資料0x25了,了解?

51微控制器的暫存器存在於內部空間0x80-0xff,這空間屬於直接定址,不是訪問外部匯流排。所以只能用 sfr p0=0x80來定義。

stm32微控制器就不一樣,所有的外設暫存器都處於統一定址的外部空間中,所以只能用這種方法定義其位址,訪問時也類似movx指令的執行。

在51微控制器中,為什麼#define _scl_out 是什麼意思,為什麼用這種方式設定開漏模式

5樓:匿名使用者

所謂開來漏模式,是stc微控制器的自l/o腳可以設定成四種工作模bai式,開

du漏模式是其中一zhi

種。設定引腳模式是要設定兩個

dao暫存器的,至少需要兩行語句。

而這行巨集定義並沒有寫完整,後面還應該有_scl_out所帶替換的內容,而你沒寫出來,那是什麼就不得而知了。

但是,看_scl_out的意義,應該是定義乙個時鐘輸出引腳,並沒有開漏的意思。

6樓:匿名使用者

這只是乙個巨集定義,開漏模式的設定應該與暫存器有關

stm32復位問題,STM32微控制器的復位問題

stm32復位腳有內部上拉電阻,執行是沒什麼問題,只是沒辦法手動復位而且上電覆位不可靠,最好接個104左右的電容到復位腳,確保上電時可靠復位。 這個疏忽不應該,但也可以理解。軟體復位是指程式執行過程中,通過向控制暫存器寫入特定資料,實現復位。現在你沒有硬體復位電路,程式啟動都成問題,怎麼實行軟體復位...

stm32微控制器怎麼跟altium designer聯絡起來

你的意思是用altium來 通過iar或mdk之類的,甚至altium自身功能來跑 再在altium裡面看效果?我只能說,你想多了。他們之間唯一的聯絡就是altium把stm32當成一個器件來使用,畫出一個pcb板子。 廖骯繕亂 新建原理相簿。選擇選單欄上的 檔案 即可看到,具體操作如下圖所示 2做...

微控制器 sfr定義,微控制器sfr和sbit有什麼區別

老友記愛學習 我是一名微控制器工程師,很多人都有類似的問題發生,其實弄懂一個sfr,其它的也就懂了,我已經用通俗易懂的方法把它寫在了一個貼子上,感興趣的可以瀏覽一下。sfr到底是什麼 http tieba.baidu.com p 5004194830 p0 p3 psw acc等這些暫存器在sfr中...