嵌入式第五十一篇——IMX6ULL中断和EPIT定时器

一、中断概述

中断(Interrupt) 是处理器在执行程序过程中,响应内部或外部紧急事件的机制。当发生需要处理器立即处理的事件时,处理器会暂时中断当前正在执行的程序,转去执行处理该事件的特殊程序(中断服务程序),执行完毕后再返回原程序继续执行。

二、中断类型与分类

硬件中断 :由外设触发(如GPIO、UART、定时器等),分为共享中断和独占中断。
软件中断 :通过编程触发(如IPI核间中断)。
异常:处理器异常(如缺页、未定义指令)。

IMX6ULL使用GIC-400中断控制器,支持以下优先级:

  • SPI(Shared Peripheral Interrupt):外设共享中断,如GPIO、DMA。
  • PPI(Private Peripheral Interrupt):核私有中断,如定时器。
  • SGI(Software Generated Interrupt):软件生成中断,用于多核通信。

三、中断的处理流程

  1. 中断源发出中断请求

  2. 检查CPU是否允许中断及该中断源是否被屏蔽

  3. 比较中断优先级

  4. 保护现场

  5. 执行中断处理函数(回调函数)

  6. 恢复现场

  7. 返回原程序继续执行。

四、EPIT定时器概述

EPIT(Enhanced Periodic Interrupt Timer)是MX6ULL处理器中的一种高精度定时器模块,主要用于周期性中断生成或计时操作。其特点包括32位计数器、可编程预分频器以及多种工作模式。

五、EPIT定时器主要特性

  • 32位递减计数器:支持从设定值递减至0,触发中断或重新加载。
  • 时钟源选择:可选用IPG时钟或低频时钟(如32kHz)。
  • 预分频器:支持1~4096分频,适应不同精度需求。
  • 工作模式
    • 自由运行模式:计数器递减至0后自动重载。
    • 设置-清除模式:需手动重新使能以触发下一次计数。

六、EPIT寄存器配置关键步骤

时钟使能与基础配置

c 复制代码
// 使能EPIT时钟
CCM->CCGR1 |= CCM_CCGR1_EPIT1(3); // 假设使用EPIT1

// 配置EPIT控制寄存器(EPIT_CR)
EPIT1->CR = EPIT_CR_ENMOD |   // 使能时加载初始值
            EPIT_CR_CLKSRC(1) | // 选择IPG时钟
            EPIT_CR_PRESCALAR(24); // 分频系数25(24+1)

设置计数器初始值与比较值

c 复制代码
EPIT1->LR = 1000000; // 初始计数值
EPIT1->CMPR = 0;     // 比较值设为0(触发中断)

中断配置与使能

c 复制代码
// 使能EPIT中断
EPIT1->CR |= EPIT_CR_OCIEN; 

// 在NVIC中注册中断
NVIC_EnableIRQ(EPIT1_IRQn);

中断服务例程示例

c 复制代码
void EPIT1_IRQHandler(void) {
    if (EPIT1->SR & EPIT_SR_OCIF) { // 检查中断标志
        EPIT1->SR |= EPIT_SR_OCIF;  // 清除标志
        // 用户自定义处理逻辑
    }
}

计算定时周期

定时周期公式: [ T = \frac{(PRESCALAR + 1) \times (LOAD_VALUE + 1)}{CLK_FREQ} ]

假设:

  • IPG时钟频率为66MHz
  • 预分频值设为24(实际分频25)
  • 加载值为1,000,000

计算示例: [ T = \frac{25 \times 1,000,001}{66,000,000} \approx 0.3788 \text{秒} ]

相关推荐
fie88892 天前
基于51单片机的航模遥控器6通道接收机程序
单片机·嵌入式硬件·51单片机
bu_shuo2 天前
嵌入式硬件工程师VS单板硬件工程师
嵌入式硬件·电子工程师·单板硬件
llilian_162 天前
选择北斗导航卫星信号模拟器注意事项总结 北斗导航卫星模拟器 北斗导航信号模拟器
功能测试·单片机·嵌入式硬件·测试工具·51单片机·硬件工程
Yyq130208696822 天前
MH2457,‌国产 32 位屏驱 MCU‌芯片,支持‌1080P 高清显示‌与‌以太网通信‌,广泛应用于两轮车仪表盘及工控屏等领域
单片机·嵌入式硬件
爱吃程序猿的喵2 天前
南邮计科电工电子实验B《RLC串联谐振电路》实验报告
单片机·嵌入式硬件
独小乐2 天前
009.中断实践之实现按键测试|千篇笔记实现嵌入式全栈/裸机篇
linux·c语言·驱动开发·笔记·嵌入式硬件·arm
XINVRY-FPGA2 天前
XC7VX690T-2FFG1157I Xilinx AMD Virtex-7 FPGA
arm开发·人工智能·嵌入式硬件·深度学习·fpga开发·硬件工程·fpga
bubiyoushang8882 天前
利用STM32实现Modbus通信(RTU从机方案)
stm32·单片机·嵌入式硬件
cmpxr_2 天前
【单片机】常用设计模式
单片机·嵌入式硬件·设计模式
杰杰桀桀桀2 天前
4*4无时延矩阵键盘(非阻塞)--附代码链接
stm32·单片机·嵌入式硬件·矩阵·计算机外设·无时延矩阵键盘