一、中断

CPU打断当前正在运行的程序,保存现场去处理紧急事件,处理结束后,回到保存的现场继续向下执行

中断流程

中断源发出中断请求。
CPU检查是否响应中断以及该中断是否被屏蔽。
检查当前产生的中断的中断优先级。
保护现场
执行中断服务函数
恢复现场

中断源:

1.配置中断触发方式:GPIOx_ICR2

        GPIO1->ICR2 |= (3 << 4);

2.解除中断屏蔽:GPIOx_IMR

        GPIO1->IMR |= (1 << 18);
 

3.判断中断状态

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

        {

                led_on();

                GPIO1_ISR |= (1 << 18);

        }

中断标记寄存器,写1清零(高电平,充电清零)

GIC

中断控制器GIC
GIC(Generic Interrupt Controller):通用的中断控制器

1.GIC初始化

        GIC_Init();

2.设置GIC中断优先级

        GIC_SetPriority(GIO_Combined_)

3.设置GIC中断使能

       调用库中的函数

        GIC_EnableIRQ

4.获取GIC寄存器组的基地址

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

5.获取中断通知寄存器的值

        C_IAR: base + ffset 0x200C

        add r0, r0, 0x2000

        ldr r1, [r0, 0x0C]

6.清除中断结束寄存器的标志

        C_EOIR:bass + offset 0x2010

        str r1, [r0, #0x10]

协处理器(coprocrssor\cp)

二、PLL、Prescaler、PFD

24MHz:1秒内有24*1000*1000个周期方波

1.PLL:锁相环电路(phare locked loop)

        只能升频

        倍频因子最小为1

2.Prescaler:预分频器

        只能降频

3.PFD:相位分数分频器(Phase Fractional Divices)

        可以升频、降频

配置

ARM PLL配置流程

  • 切换临时时钟源
  • 将PLL1短路,进入旁路模式
  • 让ARM暂时工作在24MHz
  • 设置PLL参数
    • ·据公式配置倍频因子
  • 退出旁路然后锁定
  • 切换到PLL 输出

IMX6ULL中有7个PLL、8个PFD

三、EPIT、GPT

EPIT(Enhanced Periodic Interrupt Timer)增强型周期中断定时器

GPT(General Purpose Timer):通用目的定时器
输入捕获和比较输出

特性 EPIT(增强型周期中断定时器) GPT(通用目的定时器)
计数方向 向下计数 向上计数
时钟源 IPG、IPG_32K、IPG_HIGHfreq(3 选) IPG、IPG_32K、IPG_HIGHfreq、外部时钟(4 选)
分频器 12 位(1~4096 分频) 12 位(1~4096 分频)
工作模式 Set-and-forget(自动重载)、Free-running Restart(重启)、Free-running(自由运行)
中断类型 比较中断、计数到 0 中断 溢出中断、2 路输入捕获、3 路输出比较
典型应用 精准周期中断、定时任务调度 延时函数、信号脉宽 / 频率测量、PWM 输出
Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐