在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

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

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

大大通——大聯大線上技術支持平臺&方案知識庫

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

v2-f82cdabfbd5ad2acca9b471c1576a161_1440w.webp

ARM Cortex-M4F 內核模塊框圖

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

v2-246b9690c327fd43eceb9ab32ba8112e_1440w.webp


ARM Cortex-M4F 中斷結構原理圖

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

v2-6ec390ea06bce70c5eb77a470b11e36b_1440w.webp


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

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

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


二、 S32DS Interrupt例程簡介與應用
下面我們以 S32DS 開發環境中自帶的例程 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,將定時器實現的LED燈閃爍的程序放在中斷程序中實現LED燈的藍燈1s閃爍。

  • Hello Interrupt框圖
v2-1597677f2fb28d533b1967d0c69ae57f_1440w.webp


3. 例程設計思路

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

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

  • 初始化系統鎖相環(SPLL)為160MHz
    • 確保 SPLL 禁止配置
    • 初始化 SPLL 分頻器
    • 初始化 PLL 分頻和倍頻系數

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

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

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

  • 禁止看門狗
  • 主函數:永遠等待
  • LPIT_0 0 通道中斷處理程序:
    • 清除通道溢出位
      • 裝載計數器
      • 翻轉 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 寄存器清除推遲狀態的中斷,并顯示推遲中的中斷。操作方法如下:

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 寄存器使能中斷,并顯示已經使能的中斷。

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 中斷優先級寄存器

v2-7f8926e39cd520fba08769231e1d1c72_1440w.webp


NVIC IPR寄存器映射地址

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

v2-74e966af64f0c6cdf10ca4019d006182_1440w.webp


NVIC IPR 寄存器分配

v2-8b9f42905046ff7f64b705d163605302_1440w.webp


NVIC IPR 寄存器與優先級域對照

通過位運算直接給 PORTD 對應的IPR寄存器賦值優先級,優先級為 8 bit 數值。

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

3. 主程序
等待中斷狀態。

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

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

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

    關注

    146

    文章

    17642

    瀏覽量

    357136
  • NXP
    NXP
    +關注

    關注

    61

    文章

    1318

    瀏覽量

    186599
  • NVIC
    +關注

    關注

    0

    文章

    35

    瀏覽量

    11857
  • S32k144
    +關注

    關注

    1

    文章

    9

    瀏覽量

    2005
收藏 人收藏

    評論

    相關推薦

    使用RTD5.0.0的s32k312,C40_Ip擦除pflash存在一些問題求解決

    /t5/s32k/s32k344-c40-ip-hardware-fault-problem/td-p/1697432 但在 RTD 5.0.0 C40_ip.h 中,“Fls_MemMap.h” 不存在 那么,如何將C40_Ip API 放入 RAM 中呢?可以給
    發表于 04-11 06:53

    求助,關于S32K342 IAR啟動代碼問題求解

    與鏈接類似的問題S32K344 IAR 啟動代碼問題 (SW32K3_S32M27x_RTD_R21-11_5.0.0_D2410) export the project from SDK
    發表于 04-10 07:12

    求助,使用EB配置S32K310 MCAL CAN模塊時遇到的疑問求解

    我在使用EB配置S32K310的MCAL的CAN模塊時產生一些疑問: 1.我在手冊中看到S32K310的MessageBuffer大小是64,那么HwObjectCount的最大配置數是否
    發表于 04-02 06:10

    T-300S+DDC1230+LCR模塊介紹

    電子發燒友網站提供《T-300S+DDC1230+LCR模塊介紹.pptx》資料免費下載
    發表于 03-31 17:34 ?0次下載

    S32K在AUTOSAR中使用CAT1 ISR,是否需要執行上下文切換?

    如果我們在 AUTOSAR 中使用 CAT1 ISR,是否需要執行上下文切換?另外,是否需要返回指令才能跳回到作系統?您有沒有帶有 CAT1 ISR 的 S32K3x4 微控制器的示例?
    發表于 03-27 07:34

    S32k系列微型機,特別是S32K388具有并行處理功能嗎?

    S32k系列微型機,特別是S32K388具有并行處理功能嗎?
    發表于 03-26 08:27

    WD50-110S24K1 WD50-110S24K1

    電子發燒友網為你提供AIPULNION(AIPULNION)WD50-110S24K1相關產品參數、數據手冊,更有WD50-110S24K1的引腳圖、接線圖、封裝手冊、中文資料、英文資料,WD50-110S24K1真值表,WD5
    發表于 03-20 18:59
    WD50-110<b class='flag-5'>S24K</b>1 WD50-110<b class='flag-5'>S24K</b>1

    鴻蒙原生繪圖API:從基礎到高階的繪制之旅進階版)

    theme: hydrogen 家人們,還記得上次一起探索的鴻蒙繪圖API基礎用法嗎?上手是不是特別容易!今天,咱們就接著深入,開啟進階版的學習,解鎖更多復雜又炫酷的繪圖技能,讓你的鴻蒙應用界面直接
    的頭像 發表于 03-16 15:57 ?296次閱讀

    S32K 進階之旅】如何使用 S32K3 PIT 定時器實現精準延時?

    周期中斷定時器(PeriodicInterruptTimer,PIT)模塊顧名思義,就是通過計時行為引發周期性中斷事件的觸發器。本文基于S32K312開發板實現延時功能,在此之前先簡單介紹下PIT
    的頭像 發表于 03-10 16:33 ?350次閱讀
    【<b class='flag-5'>S32K</b> <b class='flag-5'>進階</b><b class='flag-5'>之旅</b>】如何使用 <b class='flag-5'>S32K</b>3 PIT 定時器實現精準延時?

    S32K3xx參考手冊

    NXP單片機 S32K3xx系列完整版技術手冊,手冊PDF文檔包含IO MUX等附件
    發表于 12-30 16:12 ?1次下載

    S32K3xxICU應用筆記

    S32K3xxICU應用筆記
    發表于 12-30 15:38 ?2次下載

    如何如何集成MCAL到S32DS_S32K344

    集成MCAL到S32DS_S32K344
    發表于 12-30 15:35 ?1次下載

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

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

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

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

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

    S32K396/376 BMS-EVB板現已供貨,同時S32K39 / 37 / 36系列芯片將于今年6月正式上市。相關的集中式電芯監控參考設計板也已上市。
    發表于 04-26 10:59 ?664次閱讀
    主站蜘蛛池模板: 一级特黄视频 | 黄色激情小说视频 | 乱高h辣黄文np公交车 | 国产免费糟蹋美女视频 | 色综合 成人 | 轻点灬大ji巴太粗太长了爽文 | 日本精品三级 | 午夜在线观看免费视频 | 伊人网综合在线 | 国内一级特黄女人精品片 | 萌白酱一线天粉嫩喷水在线观看 | 精品欧美一区二区三区 | 男人的天堂视频网站清风阁 | 日本三级a | 亚洲午夜大片 | 天堂社区在线观看 | 国产一级做a爰片久久毛片 国产一级做a爰片久久毛片男 | 性欧美一级 | 性色在线播放 | 嫩草影院国产 | 天天做天天爱天天爽天天综合 | 国产福利午夜自产拍视频在线 | a级黄色毛片三个搞一 | 亚洲一区二区三区四 | 干夜夜| 婷婷综合七月激情啪啪 | 免费的毛片网站 | 乡村乱人伦短小说 | 欧美feer| 乱操视频 | 狠狠做深爱婷婷综合一区 | 九色在线播放 | 二十年等一人小说在线观看 | 欧美激情综合色综合啪啪五月 | 末满18以下勿进色禁网站 | 亚洲国产成人久久一区久久 | 久久性| 国产理论在线观看 | 草色网| 中文字幕在线看视频一区二区三区 | www.色播.com |