RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

【S32K 進階之旅】Interrupt 模塊介紹與應用

大大通 ? 2023-05-04 15:29 ? 次閱讀

大大通——大聯(lián)大線上技術支持平臺&方案知識庫

一、 S32K144 Interrupt介紹
1. Arm Cortex-M4F 中斷結構及中斷過程

v2-f82cdabfbd5ad2acca9b471c1576a161_1440w.webp

ARM Cortex-M4F 內(nèi)核模塊框圖

S32K144 內(nèi)核ARM Cortex-M4F 把中斷分為內(nèi)核中斷與非內(nèi)核模塊中斷,并對內(nèi)核中斷和非內(nèi)核中斷進行了統(tǒng)一編號(0~254),非內(nèi)核中斷的中斷請求號(IRQ)為 0~238,對應于中斷向量號的 15~254。中斷結構原理圖如下:

v2-246b9690c327fd43eceb9ab32ba8112e_1440w.webp


ARM Cortex-M4F 中斷結構原理圖

M4F 的中斷由 M4F 內(nèi)核、嵌套向量中斷控制器(Nested Vectored Interrupt Controller,NVIC)及模塊中斷源組成。中斷過程分為兩步:第一,模塊中斷源向 NVIC 發(fā)出中斷請求信號;第二步,NVIC 對發(fā)來的中斷信號進行處理,判斷該模塊中斷源是否被使能,若使能,則通過專用外設總線(Private Peripheral Bus,PPB)發(fā)送給 M4F 內(nèi)核,由內(nèi)核進行中斷處理。如果同時有多個中斷信號到來,NVIC 則根據(jù)設定好的中斷優(yōu)先級進行判斷,優(yōu)先級高的中斷被響應,優(yōu)先級低的中斷被掛起,壓入堆棧保存;如果優(yōu)先級完全相同的多個中斷源同時請求,則先響應 IRQ 號較小的,其他被掛起。
2. NVIC 寄存器映射

v2-6ec390ea06bce70c5eb77a470b11e36b_1440w.webp


NVIC 寄存器映射地址(Cortex-M4 User Guide)

  • 中斷使能寄存器(NVIC_ISER)
  • 中斷禁止寄存器(NVIC_ICER)
  • 中斷掛起寄存器(NVIC_ISPR)
  • 清除掛起寄存器(NVIC_ICPR)
  • 中斷活動位寄存器(NVIC_IABR)
  • 優(yōu)先級寄存器(NVIC_IPR)

上表列出了 NVIC 的寄存器映射,由于 NVIC 屬于內(nèi)核外設,具體的寄存器用法可以參考手冊《Cortex?-M4 Devices Generic User Guide》。


二、 S32DS Interrupt例程簡介與應用
下面我們以 S32DS 開發(fā)環(huán)境中自帶的例程 hello_Interrupts_s32k144為例。
1. 例程導入

  • 打開S32 Design Studio,點擊:“File”->“New”->“S32DS Project from Example”。
v2-04601baf7f3acb3987b4c6cb01653065_1440w.webp



  • 在彈出的窗口選取 S32K144 目錄下的 hello_interrupts 例程,點擊“Finish”。
v2-1e55dbe07acda85f56638a20f43a857d_1440w.webp



  • 點擊左上角“Build”按鈕,編譯例程。
v2-01fabafcdcb7900e4ff0017213ae187f_1440w.webp



  • 點擊“Debug”按鈕。進入例程Debug頁面。
v2-9abd959b226557b2f1356618bbba0560_1440w.webp



  • 點擊運行程序 按鈕,D11 LED blue 燈 1s閃爍。
v2-8f2e62d08dd14a333ff47782cf80f3d4_1440w.webp


D11 1s閃爍藍燈

2. 例程簡介

  • Hello Interrupt介紹

此例程通過配置時鐘、GPIO、LPIT0和NVIC,將定時器實現(xiàn)的LED燈閃爍的程序放在中斷程序中實現(xiàn)LED燈的藍燈1s閃爍。

  • Hello Interrupt框圖
v2-1597677f2fb28d533b1967d0c69ae57f_1440w.webp


3. 例程設計思路

  • 初始化中斷需要在 NVIC中 寫入 3 句代碼來實現(xiàn):
  • 清除先前未完成的中斷(假如有中斷未完成)
  • -在清除掛起寄存器(ICPR)中的對應位寫1
  • 啟用所需中斷
  • -在中斷使能寄存器(ISER)中的對應位寫1
  • 設置中斷優(yōu)先級
  • -在對應的中斷優(yōu)先級寄存器(IP)中寫入一個在0~15之間的優(yōu)先級

  • 程序設計思路:
  • 初始化端口 D module
  • 使能端口 D 時鐘
  • 配置 PTD0 為輸出模式(藍燈)
  • 初始化系統(tǒng)時鐘(SOSC)為8MHz
    • 初始化 SOSC 分頻器
    • 配置范圍,高增益,參考系數(shù)
    • 確保 SOSC 控制狀態(tài)寄存器是可寫的
    • 使能 SOSC 控制狀態(tài)寄存器中的 SOSC
    • 等待 SOSC 生效

  • 初始化系統(tǒng)鎖相環(huán)(SPLL)為160MHz
    • 確保 SPLL 禁止配置
    • 初始化 SPLL 分頻器
    • 初始化 PLL 分頻和倍頻系數(shù)

  • Fpll = Fosc / PLL Ref Clk Divider x Sys PLL Multiplier / 2 = 8 MHz / 1 x 20 / 2= 160 MHz
    • 確保 SPLL 控制狀態(tài)寄存器可寫
    • 使能 SPLL 控制狀態(tài)寄存器中的 SPLL
    • 等待 SPLL 生效

  • 初始化 LPIT 0 通道
    • 使能時鐘源為 SPLL_DIV2_CLK
    • 使能 LPITO 寄存器時鐘
    • 使能 LPIT0 模塊
    • 初始化 0 通道:
    • 使能該通道中斷
      • 超時時間=1s
      • 設置計數(shù)器模式并使能 0 通道

  • 改變 SPLL 工作模式為 Normal RUN Mode
    • 初始化 CORE、BUS、FLASH 的分頻系數(shù)
    • 切換系統(tǒng)時鐘為 SPLL(160MHz)

  • 禁止看門狗
  • 主函數(shù):永遠等待
  • LPIT_0 0 通道中斷處理程序:
    • 清除通道溢出位
      • 裝載計數(shù)器
      • 翻轉 PTD0 GPIO 輸出



三、 例程代碼解釋以及寄存器介紹
1. void NVIC_init_IRQs (void)

  • S32_NVIC->ICPR[1] = 1 << (48 % 32); /* IRQ48-LPIT0 ch0: clr any pending IRQ*/

ICPR: Interrupt Clear-pending Registers 中斷清除掛起寄存器

v2-7c3b896d87c0cb3221cc701f62c15de5_1440w.webp


NVIC ICPR 寄存器映射地址

NVIC_ICPR0-NVIC_ICPR7 寄存器清除推遲狀態(tài)的中斷,并顯示推遲中的中斷。操作方法如下:

v2-496868b34dde2d246808e690fcd6805d_1440w.webp


S32K144 向量表

查詢 S32K144.h 可得 PORTD 的向量值為 64,對應 IRQ 為 48。查詢 S32K144 NVIC 寄存器地址可以看到 256 個中斷向量被分為 8 個寄存器,每個寄存器共 32 位。通過移位運算給 PORTD 對應的 ICPR 寄存器賦值 1,清除 PORTD 中斷。

  • S32_NVIC->ISER[1] = 1 << (48 % 32); /* IRQ48-LPIT0 ch0: enable IRQ */

ISER:Interrupt Set-enable Registers 中斷使能寄存器

v2-3872bd2b3f6f1926407bc434a272cb4f_1440w.webp


NVIC ISER 寄存器映射地址

NVIC_ISER0-NVIC_ISER7 寄存器使能中斷,并顯示已經(jīng)使能的中斷。

v2-6b52816591b9c9717842e14f16b2015e_1440w.webp


通過移位運算給 PORTD 對應的的 ISER 寄存器賦值 1,使能 PORTD 中斷。

  • S32_NVIC->IP[48] = 0x0A; /* IRQ48-LPIT0 ch0: priority 10 of 0-15*/

IP:Interrupt Priority Registers 中斷優(yōu)先級寄存器

v2-7f8926e39cd520fba08769231e1d1c72_1440w.webp


NVIC IPR寄存器映射地址

NVIC_IPR0-NVIC_IPR59 寄存器為每一個中斷提供8 bit的優(yōu)先級域,每個寄存器(32bit)包含4個優(yōu)先級域。這些寄存器都是可以設置的。

v2-74e966af64f0c6cdf10ca4019d006182_1440w.webp


NVIC IPR 寄存器分配

v2-8b9f42905046ff7f64b705d163605302_1440w.webp


NVIC IPR 寄存器與優(yōu)先級域對照

通過位運算直接給 PORTD 對應的IPR寄存器賦值優(yōu)先級,優(yōu)先級為 8 bit 數(shù)值。

2. void LPIT0_Ch0_IRQHandler (void) {}
中斷函數(shù),在需要中斷的模塊名后添加IRQHandler。

3. 主程序
等待中斷狀態(tài)。

四、 參考文獻
[1] Cortex?-M4 Devices Generic User Guide.pdf,ARM
[2] S32K1xx Series Cookbook.pdf,NXP
[3] S32K144 Reference Manual.pdf,NXP

登陸大大通,了解更多詳情,解鎖1000+系統(tǒng)級應用方案,更有大聯(lián)大700+FAE在線為您答疑解惑!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17123

    瀏覽量

    350983
  • NXP
    NXP
    +關注

    關注

    60

    文章

    1278

    瀏覽量

    184039
  • NVIC
    +關注

    關注

    0

    文章

    35

    瀏覽量

    11695
  • S32k144
    +關注

    關注

    1

    文章

    9

    瀏覽量

    1894
收藏 人收藏

    評論

    相關推薦

    k8s和docker區(qū)別對比,哪個更強?

    Docker和Kubernetes(K8s)是容器化技術的兩大流行工具。Docker關注構建和打包容器,適用于本地開發(fā)和單主機管理;而K8s則提供容器編排和管理平臺,適用于多主機或云環(huán)境,具備自動化
    的頭像 發(fā)表于 12-11 13:55 ?71次閱讀

    西門子S7-300 PLC的詳細介紹

    S7-300是德國西門子公司生產(chǎn)的PLC系列產(chǎn)品之一,以下是關于S7-300 PLC的詳細介紹: 一、產(chǎn)品特性 模塊化結構:西門子S7-30
    的頭像 發(fā)表于 12-10 18:18 ?181次閱讀
    西門子<b class='flag-5'>S</b>7-300 PLC的詳細<b class='flag-5'>介紹</b>

    TAx5x12EVM-K評估模塊

    電子發(fā)燒友網(wǎng)站提供《TAx5x12EVM-K評估模塊.pdf》資料免費下載
    發(fā)表于 12-06 16:06 ?0次下載
    TAx5x12EVM-<b class='flag-5'>K</b>評估<b class='flag-5'>模塊</b>

    BOOSTXL-K350QVG-S1 QVGA顯示BoosterPack?插件模塊用戶指南

    電子發(fā)燒友網(wǎng)站提供《BOOSTXL-K350QVG-S1 QVGA顯示BoosterPack?插件模塊用戶指南.pdf》資料免費下載
    發(fā)表于 12-05 14:45 ?0次下載
    BOOSTXL-<b class='flag-5'>K350QVG-S</b>1 QVGA顯示BoosterPack?插件<b class='flag-5'>模塊</b>用戶指南

    智能家居之旅(15):HA傳感器采集主板低功耗設計的遭遇

    智能家居之旅(1):了解HomeAssistant 智能家居之旅(2):設備接入HomeAssistant的方法 智能家居之旅(3):Ai-M61/M62 接入HomeAssistant 實現(xiàn)點燈
    的頭像 發(fā)表于 09-05 10:27 ?378次閱讀
    智能家居<b class='flag-5'>之旅</b>(15):HA傳感器采集主板低功耗設計的遭遇

    STM8S105K4T6使用ADC轉換結果異常的原因?如何解決?

    /*----------------------------------------------------------------------------*/ /* @Name: stm8_interrupt_vector.c*/ /* @Brief :*/ /* @Include: stm8
    發(fā)表于 05-13 08:52

    亮鉆科技推出重磅新品:基于RK3588S平臺的K-3588S

    近日,基于RK3588S平臺,亮鉆科技推出重磅新品:K-3588S,其性能與RK3588相媲美,擁有高性能、高算力和8K視頻編解碼等優(yōu)勢,且性價比更高,滿足用戶降本需求。
    的頭像 發(fā)表于 05-09 14:11 ?2385次閱讀
    亮鉆科技推出重磅新品:基于RK3588<b class='flag-5'>S</b>平臺的<b class='flag-5'>K-3588S</b>

    基于S32K3的ECU參考設計集成電池管理方案

    S32K396/376 BMS-EVB板現(xiàn)已供貨,同時S32K39 / 37 / 36系列芯片將于今年6月正式上市。相關的集中式電芯監(jiān)控參考設計板也已上市。
    發(fā)表于 04-26 10:59 ?508次閱讀

    RK3568驅動指南|驅動基礎進階篇-進階5 自定義實現(xiàn)insmod命令實驗

    RK3568驅動指南|驅動基礎進階篇-進階5 自定義實現(xiàn)insmod命令實驗
    的頭像 發(fā)表于 02-20 14:10 ?676次閱讀
    RK3568驅動指南|驅動基礎<b class='flag-5'>進階</b>篇-<b class='flag-5'>進階</b>5 自定義實現(xiàn)insmod命令實驗

    基于 NXP S32K311 評估板的方案

    該方案是以 NXP S32K311 芯片為主控制器的評估板方案,S32K311 是基于 ARM Cortex-M7 的嵌入式應用微控制器,有 64 KB 的 Dflash、1 MB 的 Pflash
    的頭像 發(fā)表于 02-18 11:22 ?814次閱讀
    基于 NXP <b class='flag-5'>S32K</b>311 評估板的方案

    RK3568驅動指南|驅動基礎進階篇-進階8 內(nèi)核運行ko文件總結

    RK3568驅動指南|驅動基礎進階篇-進階8 內(nèi)核運行ko文件總結
    的頭像 發(fā)表于 01-31 14:58 ?1141次閱讀
    RK3568驅動指南|驅動基礎<b class='flag-5'>進階</b>篇-<b class='flag-5'>進階</b>8 內(nèi)核運行ko文件總結

    S32K 進階之旅】 NXP S32K3 以太網(wǎng) RMII 接口調(diào)試(1)

    大聯(lián)大世平集團推出了一款基于NXP車規(guī)級MCUS32K344的開發(fā)板——花名“Cavalry”,它使用BGA257封裝的32位ArmCortex-M7S32K344作為主控芯片,在69.6
    的頭像 發(fā)表于 01-18 08:26 ?2371次閱讀
    【<b class='flag-5'>S32K</b> <b class='flag-5'>進階</b><b class='flag-5'>之旅</b>】 NXP <b class='flag-5'>S32K</b>3 以太網(wǎng) RMII 接口調(diào)試(1)

    一塊板即輕松搞定!| TH244A001 - 32位Arduino開發(fā)資源進階介紹(2)

    一塊板即輕松搞定! TH244A001 - 32位Arduino開發(fā)資源進階介紹(2) 在前一篇文章中\(zhòng)"TH244A001 - 32位Arduino開發(fā)資源進階介紹(1
    發(fā)表于 01-12 11:54

    芯圣SDK工具 讓開發(fā)更方便——HC89S103K6

    SDK-HC89S103K6是基于HC89S103K6設計的快速開發(fā)工具。SDK-HC89S103K6由HC89S103K6微控制器的主控板和HC-LINKV4.0仿真燒錄器兩部分組成
    的頭像 發(fā)表于 01-10 10:33 ?500次閱讀
    芯圣SDK工具 讓開發(fā)更方便——HC89<b class='flag-5'>S103K</b>6

    PS-1220S插拔力試驗機:力學世界的探秘之旅

    PS-1220S插拔力試驗機:力學世界的探秘之旅
    的頭像 發(fā)表于 01-05 09:08 ?502次閱讀
    PS-1220<b class='flag-5'>S</b>插拔力試驗機:力學世界的探秘<b class='flag-5'>之旅</b>
    RM新时代网站-首页