在我的微控制器課程中,我們正在爲SAMD20J18微控制器編寫嵌入式C語言。將結構定義的地址存儲到指針中時是否創建了一個結構實例?
我們節目的開頭包含下面的代碼兩行:
Port *ports = PORT_INSTS;
PortGroup *porA = &(ports->Group[0]);
第二行意味着對我來說,Port
結構的實例存在,因爲它Group
成員被訪問。但是,課程手冊指出PORT_INSTS
是Port
結構定義的基地址(如下所示),而不是它的一個實例。結構Port
的實例是通過將結構定義的地址存儲在指針ports
中創建的?對我來說更有意義的是,PORT_INSTS
地址指向結構Port
的現有實例。我錯了還是手冊錯了?
這裏是手冊的相關部分:
'Port * ports = PORT_INSTS; '將內存映射到'Port'結構,但它必須被初始化。編譯器不會爲您創建任何內容。 –
您可以看到PORT_INSTS變爲PORTS,而PORTS是硬連線地址。您必須從文檔中知道該地址是否有一個端口或一組端口。使用元素0應該沒問題,但只有學習文檔才能讓人更放心。或直接體驗您使用的硬件,這是我沒有的。 –
是不是在嵌入式世界中這樣的結構指針的原因,指向寄存器集,這是內存映射,並且不需要被創建? –