1. 程式人生 > >關於指針和結構體的一點教訓

關於指針和結構體的一點教訓

地址 usart 但是 image 分代 數據 圖片 數值 inf

在DMA控制中,我使用了這樣的一部分代碼,想實現從內存到外設 的數據搬運。

技術分享圖片

後來經過仔細查證,發現了指針的一些基礎不牢。現總結如下:

圖中的外設地址寫的為USART1,其地址為0x40011000,而變量USART1_BASE也為0x40011000。但是USART1為將USART1_BASE強制轉換的結構體指針。下圖中有相應的定義。

技術分享圖片

雖然USART1是指向和USART1_BASE相同的位置。但性質不同,更重要是後面加的數值不同。

有如下代碼解釋。

技術分享圖片

技術分享圖片

後來分析一下,原因不言而遇,很明顯了。

關於指針和結構體的一點教訓