EPIT原理图
1.epit是什么呢
EPIT(Enhanced Periodic Interrupt Timer)是 i.MX 系列处理器中的增强型周期中断定时器,本质上是一个向下计数的计数器。当计数减到 0 时,它会触发一次中断,从而实现周期性的定时功能。EPIT 常用于 LED 闪烁、任务调度、延时控制等需要精确时间基准的场景。

load register 这个寄存器会重新加载设定值 所以一般把计数寄存器和下载寄存器设置为一样的
然而计数器有两种计数模式
1.自由运行模式0xfffffff往下重新减
2.遗忘模式,(从加载寄存器中的数值往下减)

并且还有一个计数设计位

我们可以通过这样的设置配置一个一秒一亮的led灯
void epit1_interrupt_handler(void)
{
if(EPIT1->SR&(1<<0)!=0)
{
led_nor();
}
EPIT1->SR |=(1<<0);
}
void epit1_init(void)
{
EPIT1->CR = 0;
EPIT1->CR |=(1<<24)|(1<<27)|(65<<4)|(1<<3)|(1<<2)|(1<<1);
EPIT1->LR = 100000;
EPIT1->CMPR = 0;
//注册epit中断函数
system_interrupt_register(EPIT1_IRQn , epit1_interrupt_handler);
//设置epit1中断优先级
GIC_SetPriority(EPIT1_IRQn, 1);
//gic使能epit1中断
GIC_EnableIRQ(EPIT1_IRQn);
//开启epit定时器
EPIT1->cr |=(1<<0);
}
以上是主要核心代码:我们外加了中断优先级设置,还有gic使能中断函数
gic使能中断函数作用:
GIC(Generic Interrupt Controller,通用中断控制器)是 ARM 处理器中负责管理中断的核心外设。GIC_EnableIRQ(EPIT1_IRQn) 的作用是把 EPIT1 定时器产生的中断信号从 GIC 层面“放行”,使其能够被 CPU 内核接收并触发对应的中断服务程序。
具体来说,EPIT 定时器计数到 0 时会产生一个中断请求,但这个请求必须先经过 GIC 的使能开关。如果不调用 GIC_EnableIRQ,即使 EPIT 本身已经配置好并开启了中断,CPU 也收不到这个中断信号,中断服务函数 epit1_interrupt_handler 就不会被调用,LED 也就无法按预期闪烁。
因此,GIC_EnableIRQ 是整个中断链路中“最后一公里”的开关,只有它被使能后,前面配置的 EPIT 定时器、中断优先级和中断注册才能真正生效。
2.EPIT:消除抖动

并联一个电容的作用
GPT精准的延时
自增计数器-运用数据总线进行读取数据降rov寄存器变为1,在通过与门控制中单发生
UART 串口通信
void uart1_init(void)
{
// 配置串口引脚功能
IOMUXC_SetPinMux(IOMUXC_UART1_TX_DATA_UART1_TX, 0);
IOMUXC_SetPinMux(IOMUXC_UART1_RX_DATA_UART1_RX, 0);
// 配置串口引脚电气属性
IOMUXC_SetPinConfig(IOMUXC_UART1_TX_DATA_UART1_TX, 0x10B0);
IOMUXC_SetPinConfig(IOMUXC_UART1_RX_DATA_UART1_RX, 0x10B0);
// 失能UART
UART1->UCR1 &= ~(1 << 0);
// 复位UART
UART1->UCR2 &= ~(1 << 0);
// 忽略RTS引脚
UART1->UCR2 |= (1 << 14);
// 无校验
UART1->UCR2 &= ~(1 << 8);
// 1位停止位
UART1->UCR2 &= ~(1 << 6);
// 8位数据位
UART1->UCR2 |= (1 << 5);
// 允许串口发送数据
UART1->UCR2 |= (1 << 2);
// 允许串口接收数据
UART1->UCR2 |= (1 << 1);
// 交叉模式
UART1->UCR3 |= (1 << 2);
// 设置1分频
UART1->UFCR = (5 << 7);
// 设置115200波特率
UART1->UBIR = 999;
UART1->UBMR = 43402;
// 使能UART
UART1->UCR1 |= (1 << 0);
}
void putc(unsigned char ch)
{
while ((UART1->USR2 & (1 << 3)) == 0);
UART1->UTXD = ch;
}



问题总结
1. 什么是UART?
UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种串行通信协议,通过 TX(发送)和 RX(接收)两根信号线实现设备间的异步数据传输。它不需要时钟线,通信双方需约定相同的波特率,常用于单片机与电脑、传感器、蓝牙模块等设备之间的通信。
2. 什么是EPIT?
EPIT(Enhanced Periodic Interrupt Timer,增强型周期中断定时器)是 i.MX 系列处理器中的向下计数定时器。当计数值减到 0 时触发一次中断,从而实现周期性定时功能。它常用于 LED 闪烁、任务调度、延时控制等需要精确时间基准的场景。
3. 什么是GPT?
GPT(General Purpose Timer,通用定时器)是一种自增计数器,通过数据总线读取计数值,可用于高精度延时、输入捕获和输出比较等场景。相比 EPIT,GPT 的计数精度更高,适合对时间精度要求更严格的延时控制。
4. 什么是输入捕获和输出比较?
输入捕获(Input Capture)是指定时器在外部信号发生跳变(上升沿或下降沿)时,自动记录当前计数值,用于测量脉冲宽度、频率或周期。输出比较(Output Compare)是指当计数值与预设的比较值相等时,自动翻转或置位某个输出引脚,用于产生精确的方波、PWM 信号或定时触发外部设备。
1370



被折叠的 条评论
为什么被折叠?



