嵌入式 - ARM6

一、按鍵

1. 初始化

key.c

手冊C32 - IOMUXC

1. 復用功能配置

IOMUXC_SW_MUX_CTL_PAD_UART1_CTS_B:?低四位(0101)
IOMUXC_SetPinMux(IOMUXC_UART1_CTS_B_GPIO1_IO18,?0);


SION(信號監控)1:? 0 //0?DISABLED?—?Input?Path?is?determined?by?functionality
MUX_MODE(復用功能)4:0101 // ALT5 -- Select mux mode: ALT5 mux port:
GPIO1_IO03 of instance:gpio1

2. 電器特性配置

IOMUXC_SW_PAD_CTL_PAD_UART1_CTS_B
IOMUXC_SetPinConfig(IOMUXC_UART1_CTS_B_GPIO1_IO18,?0xF080);


HYS(壓擺率)1:????????????????? 0? ????????//0?HYS_0_Hysteresis_Disabled;?輸入?不開啟?
PUS(上拉或者下拉)2:? ? ? 11???????? //?PUS_3_22K_Ohm_Pull_Up?—?22K?Ohm?Pull?Up
PUE(拉與保持選擇)1:? ? ? 1? ? ? ? ? //選擇拉
PKE(拉或保持使能)1:? ? ? 1? ? ? ? ? ?//使能
ODE(漏極開漏)1: ????????????0? ? ? ? ? //使能
SPEED(速度)2:?????????????10? ? ? ? //SPEED_2_medium_100MHz_?—?medium(100MHz)
DSE(驅動能力)3:?????????????000 ?????//DSE_0_output_driver_disabled_?—?output?driver?disabled;?輸出是才有用,所以關閉
SRE()0: ??????????????????????????0????????? //SRE_0_Slow_Slew_Rate?—?Slow?Slew?Rate

3. 引腳方向

Chapter?28:General?Purpose?Input/Output?(GPIO)
GPIOx_GDIR
GPIO1->GDIR?&=?~(1?<<?18);


0?????????INPUT? ? ?—?????GPIO?is?configured?as?input.
1?????????OUTPUT?—? ? ?GPIO?is?configured?as?output.

2. 開關檢測

Chapter?28:General?Purpose?Input/Output?(GPIO)
GPIOx_DR:開關斷開高電平,開關按下低電平

二、中斷

1. GIC介紹

1. 概念

通用目的的中斷控制器(Generic Inierrupt Controller)

硬件 -> GIC -> 處理器

中斷源 -> 中斷控制器GIC -> 中斷處理器 內核kernal

手冊:裸機 - 中斷 - GIC

VFIQ:V:虛擬的

2. GIC內核

GIC手冊 - GIC Partitioning

中斷源:0-15 ????????SGI????????軟件中斷

? ? ? ? ? ? ? 16-31????????PPI? ? ? ? 私有的外設中斷

? ? ? ? ? ? ? 32-1019? ? SPI????????可設置的外設中斷

2. 中斷配置

1. 外設終端

頭文件core_ca7.h中

IRQn_Typr:0- 159 外設終端中

C_CTLR

C_IAR????????????????中斷通知寄存器

C_EOIR? ? ? ? ? ? ?中斷結束寄存器

2.協處理器

cp0 - cp15? ? ? ?主要使用cp10.11.15 coprocessor

手冊A7架構參考手冊 - 4.System Control

1. c0 - MIDR

2. c1 - SCTLR4

mrc?p15,0,r0,c1,c0,0
bic?r0,?r0,?#(1?<<?13)
orr?r0,?r0,?#(1?<<?12)
mcr?p15,0,r0,c1,c0,0

3. c12 - VBAR

配置成0后可以修改該寄存器重新映射到其他地址

頭文件MCIMX6Y2.h中

GPIO1_Combined_16_31_IRQn? ? ? ? =99

__get_VBAR(0x87800000);

4. c15 - CBAR

mrc?p15,?4,?r0,?c15,?c0,?0

3. 獲取GIC基地址

1. MRC / MCR? ? ? ?
MRC<c> <coproc>, <opc1>, <Rt>, <CRn>, <CRm>{, <opc2>}
mrc p15, 4, r0, c15, c0, 0????????????????參數對應cp15內容

異常向量表基地址映射 iche打開

mrc p15, 0, r0, c1, c0, 0????????????????參數對應cp1內容,修改異常向量表映射方式
bic r0, r0, #(1 << 13)? ? ? ? ? ? ? ? ? ? ? ?bit13位為V清零,VBAR配置中斷向量基地址
orr r0, r0, #(1 << 12)? ? ? ? ? ? ? ? ? ? ? ?bit12位為I 置一,iche使能位打開
mcr?p15, 0, r0, c1, c0, 0

2. 步驟

中斷源 -> 中斷控制器GIC -> 中斷處理器 內核kernal

手冊C28(外設) - GPIOx - ICR1 / ICR2 / IMR

1. 中斷源

1. 中斷觸發方式? ? ? ?

? ? ? ? GPIO->ICR2 |= (3 << 4)

2. 中斷屏蔽解除

????????GPIO->IMR?|= (1 << 18)

3. 中斷狀態寄存器

????????if(GPIO1->ISR &= (1 << 18)) != 0)
GPIO1->ISR |= (1 << 18)

2. GIC

1.GIC初始化
GIC_Init();

2.中斷使能
GIC_EnablelRQ(GPI01_Combined_16_31_IRQn);

3.GIC基地址獲取
mrc p15, 4, r1, c15, c0, 0

4.獲取中斷號
// C_IAR:Base+0x200C
add r1,r1,#0×2000
[dr r0, [r1, #0x0C]

5.中斷標志清理
// C_EOIR:Base+0x2010
str r0, [r1, #0x10]3.?

3. 內核處理器

1.異常向量表基地址和開啟ICache
mrc p15, 0, r0, c1, c0, 0
bic r0, r0,#(1 <<13)
orr r0, r0, #(1 <<12)
mcr p15, 0, r0, c1, c0,0
_set_VBAR(0x87800000);

2.中斷向量
sub lr, lr,#4
stmfd sp!, {r0-r12, lr)

mrc p15, 4, r1, c15, c0, 0
add r1, r1, #0x2000
ldr r0,[r1, #0x0C]

stmfd sp!, {r0, r1}
cps #0x1F//中斷嵌套

stmfd sp!,{lr}
bl system_interrupt_hander
ldmfd sp!, {lr}

cps #0x12
ldmfd sp!, {r0, r1}

str r0,[r1, #0x10]
ldmfd sp!, {r0-r12, pc}^

3.中斷總服務函數
void system_interrupt_hander(unsigned int irq)
{
if (irq == GPI01_Combined_16_31_IRQn)
{
if ((GPI01->ISR &= (1 <<18)) != 0)
{
led_flicker();
GPI01->ISR = (1 <<18);
}
}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/922162.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/922162.shtml
英文地址,請注明出處:http://en.pswp.cn/news/922162.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

菊水PBZ電源在蓄電池充放電測試中的應用探討

通過高速雙極性電源PBZ系列進行蓄電池恒流&#xff0c;恒壓充電的方法 對于儀器廠商來說&#xff0c;要求“請按照使用說明書使用”是產品的使用方針&#xff0c;或者說是正確用法。但是&#xff0c;作為具有代表性的通用產品&#xff0c;直流電源的實際使用方法可謂五花八門&…

Zephyr嵌入式實時操作系統安裝配置

Zephyr簡介 Zephyr 是一款由 Linux 基金會 托管的開源實時操作系統(RTOS),專為資源受限的嵌入式設備(從微控制器到小型邊緣計算節點)設計,廣泛應用于物聯網(IoT)、工業自動化、消費電子、醫療設備、汽車電子等領域。其核心優勢在于輕量級、高可配置性和對多架構硬件的廣…

Linux系統 SELinux 安全管理與故障排查

一、SELinux 安全上下文管理1. SELinux 簡介SELinux&#xff08;Security-Enhanced Linux&#xff09;是 Linux 內核的強制訪問控制&#xff08;MAC&#xff09;安全子系統&#xff0c;通過基于標簽的訪問控制實現細粒度權限管理&#xff0c;遵循最小權限原則。SELinux 有三種工…

解密完全二叉樹順序存儲之堆結構

前言:各位老鐵好&#xff0c;在前面博客中&#xff0c;筆者分享了有關二叉樹的博客&#xff0c;在那篇博客中&#xff0c;筆者講到了完全二叉樹的存儲結構中有兩種存儲方式&#xff0c;一種是順序存儲&#xff0c;一種是鏈式存儲&#xff0c;鏈式存儲筆者已經帶各位老鐵實現過了…

通過針刺!鵬輝能源移動電源電池革新之作 Secu 系列:不燃電解液加持,充電寶安全新選擇

9月11日&#xff0c;鵬輝能源對外發布新一代移動電源高安全電池Secu系列。該產品通過采用不燃的電解液破解移動電源產品安全難題&#xff0c;直擊當下移動電源安全事故頻發的行業痛點&#xff0c;為移動電源行業帶來更安全、更可靠的半固態電池解決方案。數字化時代&#xff0c…

軟件定義汽車(SDV)與區域電子電氣架構(Zonal EEA)的技術革新

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

在 Docker Compose 中解決文件權限不足的問題

在使用 Docker 和 Docker Compose 構建應用時&#xff0c;由于容器中的文件權限不足而導致某些容器可能無法訪問宿主機上的文件&#xff0c;或者容器內的文件系統無法正確讀取或寫入文件。問題描述在我的項目中&#xff0c;我使用 Docker Compose 來啟動多個服務&#xff0c;并…

認知語義學對人工智能自然語言處理的深層語義分析:理論啟示與實踐路徑

摘要隨著人工智能&#xff08;AI&#xff09;技術的飛速發展&#xff0c;自然語言處理&#xff08;NLP&#xff09;已成為其核心驅動力之一。然而&#xff0c;盡管以大型語言模型&#xff08;LLMs&#xff09;為代表的現代NLP系統在處理語言任務上取得了前所未有的成功&#xf…

React19 中的交互操作

需要安裝的庫 antd-mobile、use-immer在App.jsx 中引入組件 Actionimport "./App.css" import Action from "./pages/action" function App() {return (<><Action></Action></>) }export default Appaction.jsx 組件import LearnI…

倉頡編程語言青少年基礎教程:數組類型

倉頡編程語言青少年基礎教程&#xff1a;數組類型 數組本質上是有序、同類型數據的集合容器&#xff0c;其核心作用是高效組織、訪問和處理批量數據&#xff0c;同時結合語言特性&#xff0c;為開發者提供簡潔、高性能的數據管理方式。例如&#xff1a; main() { let v1: …

C++微基礎藍橋杯之旅9.9-9.12

這里主要還是強制類型轉換的使用//打印字符ASCII碼值 //輸入一個除空格以外的可見字符 //輸出其ASCII值--十進制整數 #include <iostream> using namespace std;int main() {char ch;cin >> ch;//字符cout << (int)ch << endl; return 0; }//打印字符…

邏輯漏洞(上)- 突破功能限制漏洞、用戶信息泄露(邏輯漏洞入門)

漏洞介紹&#xff1a; 在網絡攻防實戰中&#xff0c;常會遇到各種前端限制&#xff0c;繞過限制的方法大多是改包或者修改前端代碼來實現的。 漏洞環境&#xff1a;docker docker-compose up -d 啟動環境后&#xff1a;訪問 http://127.0.0.1:8983/web/# 發現查詢按鈕是無法使用…

tsv文件簡介

初步了解tsv文件在很多 OCR&#xff08;光學字符識別&#xff09;項目中&#xff0c;.tsv文件是標準的訓練數據標注文件&#xff0c;主要用于存儲 “圖像路徑 - 對應文本標簽” 的映射關系&#xff0c;同時可能包含圖像尺寸、文本長度等輔助信息&#xff0c;方便模型讀取訓練數…

apache poi 導出復雜的excel表格

如何導出復雜的excel 表格 如圖表格&#xff0c;存在行和列的合并&#xff0c;邊框&#xff0c;樣式&#xff0c;顏色等。依賴<!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency><groupId>org.apache.poi</groupId><arti…

下載 Eclipse Temurin 的 OpenJDK 提示 “無法訪問此網站 github.com 的響應時間過長”

打開 Eclipse Temurin 的 OpenJDK 的官網下載地址&#xff1a; https://adoptium.net/zh-CN/temurin/releases 問 deepseek&#xff1a; 國內網絡&#xff0c;打不開github.com網頁&#xff0c;提示github.com 的響應時間過長。 國內無法訪問 GitHub 或訪問緩慢&#xff0c;通…

C/C++類型轉換

C/C類型轉換 1. C類型轉換 C 語言中的類型轉換主要分為兩種&#xff1a;隱式類型轉換 (Implicit Conversion) - 由編譯器自動完成。顯式類型轉換 (Explicit Conversion) - 由程序員強制指定&#xff0c;也稱為強制類型轉換。1.2 隱式類型轉換 編譯器在編譯時自動進行的轉換&…

【Java】Windows切換Java8和Java11

現在有些項目要升級到Java17, 所以需要切換不同的java版本。 如何安裝Java8 由于已經安裝了jJava8, 之前的安裝文章&#xff1a;【Java】jdk8安裝——英文版 如何安裝Java17 Java17下載地址 https://www.oracle.com/java/technologies/downloads/#java17-windows 下載到電…

SQLite 數據庫核心知識與 C 語言編程

一、數據庫基礎概念1.1 數據庫分類根據規模和應用場景&#xff0c;數據庫可分為以下幾類&#xff1a;大型數據庫&#xff1a;Oracle&#xff08;適用于企業級高并發、大容量場景&#xff09;中型數據庫&#xff1a;MySQL、MSSQL&#xff08;適用于中小型系統、Web 應用&#xf…

Netty 調優篇:實戰配置、性能監控與常見坑

&#x1f680; Netty 調優篇&#xff1a;實戰配置、性能監控與常見坑前面我們已經深入了 Netty 的 線程模型、Pipeline、EventLoop、內存池、零拷貝和背壓機制。 但在實際工作中&#xff0c;很多人踩坑的地方不是“源碼沒看懂”&#xff0c;而是 調優沒做好。 今天我們就從三個…

Linux Node.js 安裝及環境配置詳細教程

如果您喜歡此文章&#xff0c;請收藏、點贊、評論&#xff0c;謝謝&#xff0c;祝您快樂每一天。 一、Node.js是什么 Node.js是一個基于Chrome V8引擎的[JavaScript運行環境]。 Node.js使用了一個事件驅動、非阻塞式I/O 的模型。 Node.js是一個讓JavaScript運行在服務端的開…