K64使用暫存器控制GPIO

2021-07-25 15:21:14 字數 933 閱讀 5479

使用freedom-k64開發板,嘗試使用暫存器絕對位址進行io控制,控制protb21輸出。

暫存器位址的編寫和定義

#define port_b_pdor *(volatile uint32_t*)(0x400ff040u)

#define port_b_psor *(volatile uint32_t*)(0x400ff044u)

#define port_b_pddr *(volatile uint32_t*)(0x400ff054u)

#define port_b_pcr21 *(volatile uint32_t*)(0x4004a054u)

配置gpiob的時鐘,這是與51使用暫存器控制的最大區別之一。

配置gpiob21的引腳功能,也就是復用功能,有的引腳存在好多種功能,所以就需要選擇功能,這裡選擇gpio功能,每個引腳功能都是乙個32位暫存器來控制。

配置gpiob21的資料方向,輸入輸出方向.

#include "include.h"

#define port_b_pdor *(volatile uint32_t*)(0x400ff040u)

#define port_b_psor *(volatile uint32_t*)(0x400ff044u)

#define port_b_pddr *(volatile uint32_t*)(0x400ff054u)

#define port_b_pcr21 *(volatile uint32_t*)(0x4004a054u)

#define port_sim 0x40047000u

#define scgc5_offset 0x1038u

#define scgc5_b_mask (0x400u)

int main(void)

}

GPIO暫存器描述

gpio暫存器描述 stm32參考手冊中文 p75 1 埠配置低暫存器 gpiox crl x a e 2 埠配置高暫存器 gpiox crh x a e 3 埠輸入資料暫存器 gpiox idr x a e 這些位為唯讀並只能以字 16位 的形式讀出。讀出的值為對應i o口的狀態。4 埠輸出資料暫...

控制暫存器

控制暫存器用於控制和確定cpu的操作模式 cr0 cr1 cr2 cr3 cr4 cr1保留,cr3是頁目錄表物理基址或頁目錄指標表物理基址。1 pe cr0的位0是啟用保護 protection enable 標誌。pe 1保護模式 pe 0 實位址模式 這個標誌僅開啟段級保護,而並沒有啟用分頁機...

80386控制暫存器

控制暫存器 80386有4個32位控制暫存器,分別命名為cr0 cr1 cr2 cr3。但cr1被保留,供今後開發的處理器使用,在80386中不能使用cr1,否則將引起無效指令操作異常。cr0包含指示處理器工作方式的控制位,包含啟用和禁用分頁管理機制的控制位,包含控制浮點協處理器操作的控制位。cr2...