標(biāo)題: 關(guān)于C語言Struct結(jié)構(gòu)體和指針的問題 [打印本頁(yè)]

作者: 來生只想做頭豬    時(shí)間: 2018-11-21 10:22
標(biāo)題: 關(guān)于C語言Struct結(jié)構(gòu)體和指針的問題
請(qǐng)幫我一下劃線的那句話解釋或者找類似劃線這句話的詳細(xì)解釋

屏幕截圖(74).png (435.81 KB, 下載次數(shù): 80)

屏幕截圖(74).png

屏幕截圖(73)_LI.jpg (1.23 MB, 下載次數(shù): 99)

屏幕截圖(73)_LI.jpg

點(diǎn)亮LED.zip

50.6 KB, 下載次數(shù): 5


作者: 來生只想做頭豬    時(shí)間: 2018-11-21 11:07
標(biāo)題: 一個(gè)GPIO模塊中有很多寄存器,用C語言的Struct來定義它。 每個(gè)寄存器都是32位的,...
本帖最后由 來生只想做頭豬 于 2018-11-21 11:10 編輯

一個(gè)GPIO模塊中有很多寄存器,用C語言的Struct來定義它。
每個(gè)寄存器都是32位的,而且順序剛好分別對(duì)應(yīng),結(jié)構(gòu)體是會(huì)分配內(nèi)存的,這樣
這些c語言中的struct結(jié)構(gòu)體中定義的成員會(huì)對(duì)應(yīng)映射到對(duì)應(yīng)的寄存器上,那么
   我們[img][/img]就可以通過操作程序中的該結(jié)構(gòu)體的成員,就相當(dāng)于操作對(duì)應(yīng)寄存器。

屏幕截圖(75).png (111.39 KB, 下載次數(shù): 95)

屏幕截圖(75).png

作者: xstong    時(shí)間: 2018-11-22 13:18
將一個(gè)地址強(qiáng)制轉(zhuǎn)換為一個(gè)結(jié)構(gòu)體的指針。
作者: Icarusme    時(shí)間: 2018-11-22 14:25
強(qiáng)制類型轉(zhuǎn)換用的,不用的話編譯器報(bào)錯(cuò)。
作者: vvyywy    時(shí)間: 2018-11-22 14:52
GPIO_TypeDef這個(gè)結(jié)構(gòu)體表示它是一個(gè)擁有7個(gè)u32類型的數(shù)據(jù)結(jié)構(gòu),GPIOD_BASE是一個(gè)u32的數(shù)字。
(GPIO_TypeDef*)GPIOD_BASE表示把GPIOD_BASE強(qiáng)制轉(zhuǎn)換成GPIO_TypeDef類型的指針,指針指向的是以GPIOD_BASE為基地址,加上7個(gè)u32類型。

作者: Colinke    時(shí)間: 2018-11-22 17:05
通過宏定義將端口GPIOD定義為指向端口D的基地址指針,該指針指向的是GPIO_TypeDef結(jié)構(gòu)體的指針,該結(jié)構(gòu)體里面是所有與IO控制有關(guān)的寄存器
作者: 357337895    時(shí)間: 2018-11-22 18:42
定義GPIOD的基地址。對(duì)于單片機(jī)或者是一些模塊,都是先找它的地址,然后給出相應(yīng)的設(shè)置
作者: liuyishuai    時(shí)間: 2018-11-22 18:47
神州四號(hào)寄存器工程    這個(gè)工程好高大上啊
作者: smilechaiyuhan    時(shí)間: 2018-11-23 10:25
定義GPIOD在寄存器的基址。
define GPIOx ((GPIO_TypeDef *) GPIOx_BASE)就是GPIOx 在CRL、CRH、IDR、ODR、BSRR、BRR寄存器的基址




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1