ARM 控制暫存器的幾種方式

2021-08-04 12:45:12 字數 778 閱讀 9669

unsigned

int * gpx2con = (unsigned

int *)0x11000c40;

* gpx2con = 0x10000000;

#define gpx2con (*(unsigned int *)

0x11000c40)

gpx2con = 0x10000000;

也可以再增加一層巨集定義,在定義大量暫存器時可以簡化**。

#define __reg(x) (*(volatile unsigned int *)(x))

#define gpx2con __reg(0x11000c40)

gpx2con = 0x10000000;

原理:因為當結構體中所有的成員變數的資料型別都相同的時候,結構體是緊密排列的,即在位址上是連續的。利用這個特性,當我們使用結構體指標操作其中的成員時,編譯器會自動計算每個成員的位址。因此,如果讓這個指標指向某個暫存器的首位址,就可以對之後的連續幾個暫存器進行操作。

這種方式有一定的侷限性,只有一些特定的場合,比如我們要操作的某個模組的相關暫存器在記憶體上連續分布。幸運的是,廠商早已幫我們想好了,因此大多數情況下這些暫存器的位址都是連續的。

typedef

struct

gpx2;

#define gpx2 (*(gpx2 *)0x11000c40)

gpx2.con = 0x10000000;

ARM暫存器整理

arm有37個暫存器,31個通用暫存器 r0 r15 32位 和6個狀態暫存器 1.通用暫存器 使用者模式 系統模式 特權模式 中止模式 未定義指令模式 外部中斷模式 快速中斷模式。可分為 未備份暫存器r0 r7 備份暫存器 r8 r14 程式計數器 pc r15 注 r0 r7在所有模式下指的同一...

ARM暫存器介紹

arm微處理器支援7種執行模式,分別為 1.使用者模式 usr arm處理器正常的程式執行狀態 2.快速中斷模式 fiq 用於高速資料傳輸或通道管理 3.外部中斷模式 irq 用於通用的中斷處理 4.管理模式 svc 作業系統使用的保護模式 5.資料訪問終止模式 abt 當資料或指令預取終止時進入該...

arm暫存器別名

apcs,arm 過程呼叫標準 arm procedure call standard 提供了緊湊的編寫例程的一種機制,定義的例程可以與其他例程交織在一起。最顯著的一點是對這些例程來自 沒有明確的限制。它們可以編譯自 c pascal 也可以是用組合語言寫成的。apcs 對我們通常稱為 r0 到 r...