找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 1547|回復(fù): 5
收起左側(cè)

單片機寄存器的問題求助

[復(fù)制鏈接]
ID:480137 發(fā)表于 2020-2-16 13:57 | 顯示全部樓層 |閱讀模式

一個寄存器有32位 , 相當(dāng)于有4個字節(jié) , 而一個地址能夠存放八位 ,相當(dāng)于一個寄存器占用了四個地址

但是我發(fā)現(xiàn) 程序都是對寄存器首地址進行操作的的  , 那另外的三個地址存放的數(shù)據(jù)能改變嗎 ?

這是不是因為stm32 的 CPU的總線一次可以操作32位嗎 ?
回復(fù)

使用道具 舉報

ID:235200 發(fā)表于 2020-2-16 19:46 | 顯示全部樓層
而一個地址能夠存放八位 ,這個前提就不對,32位單片機一個地址能存放32位二進制,內(nèi)存使用可以定義存放8位為一個地址,即使用char定義存放數(shù)據(jù)的類型
回復(fù)

使用道具 舉報

ID:480137 發(fā)表于 2020-2-17 11:14 | 顯示全部樓層
csmyldl 發(fā)表于 2020-2-16 19:46
而一個地址能夠存放八位 ,這個前提就不對,32位單片機一個地址能存放32位二進制,內(nèi)存使用可以定義存放8位 ...

但是拿單片機兩個相鄰的寄存器來看的話 :
GPIOx_CRL 偏移地址位 0x00
而GPIOx_CRLH 的偏移量位 0x04;
這不能說明 GPIOx_CRL 占了 4 個 地址嗎    然后這個寄存器有 32位的    ,那么一個地址存放 8位數(shù)據(jù)
回復(fù)

使用道具 舉報

ID:168996 發(fā)表于 2020-2-17 12:34 | 顯示全部樓層
254zhang 發(fā)表于 2020-2-17 11:14
但是拿單片機兩個相鄰的寄存器來看的話 :
GPIOx_CRL 偏移地址位 0x00
而GPIOx_CRLH 的偏移量位 0x04 ...

字節(jié)的定義就是8位,起始地址用字節(jié)表示,所以只能說GPIOx_CRL、GPIOx_CRH的起始地址相差4個字節(jié),物理上,32位機本身總線寬度是32位,以字節(jié)算,一個寄存器確實占用4個字節(jié)。對32位寄存器操作時,只要編譯器支持32位操作,操作對象當(dāng)然是起始地址(你認為的首字節(jié))
回復(fù)

使用道具 舉報

ID:480137 發(fā)表于 2020-2-18 10:07 | 顯示全部樓層
banalsheep 發(fā)表于 2020-2-17 12:34
字節(jié)的定義就是8位,起始地址用字節(jié)表示,所以只能說GPIOx_CRL、GPIOx_CRH的起始地址相差4個字節(jié),物理上 ...

那么32位單片機一個地址存放八位對不對呢 ?
操作寄存器的起始地址就相當(dāng)于操作整個寄存器是因為編譯器是32位操作
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表