1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 9 ARM嵌入式系统:周期中断定时器PIT初始化

9 ARM嵌入式系统:周期中断定时器PIT初始化

时间:2023-05-31 23:25:50

相关推荐

9 ARM嵌入式系统:周期中断定时器PIT初始化

一、PIT是什么

PIT即Periodic interrupt timer,周期中断定时器,PIT模块是一组计时器,可用于引发中断和触发DMA信道。PIT主要功能是定时器产生DMA触发脉冲和定时器产生中断,且中断可屏蔽,每个定时器有独立的超时时间。

二、PIT初始化流程

void PIT_init(unsigned int number_ms)

{

/*Trun on PIT clocks*/

SIM_SCGC6|=SIM_SCGC6_PIT_MASK;

/*Enable PIT Module*/

PIT_MCR&=~(PIT_MCR_MDIS_MASK);

/*Setup the channel0 of PIT*/

PIT_LDVAL0=20000*number_ms;

/*Enable the IRQ of channel0,PIT*/

PIT_TCTRL0|=PIT_TCTRL_TIE_MASK;

/*Running channel0,PIT*/

PIT_TCTRL0|=PIT_TCTRL_TEN_MASK;

}

step1:使能PIT模块的时钟

SIM_SCGC6|=SIM_SCGC6_PIT_MASK;

step2:PIT模块使能

PIT_MCR&=~(PIT_MCR_MDIS_MASK);

即设置MDIS为0,且FRZ为1.

启用PIT时钟,且在调试模式下会停止寄存器。

step3:设置定时器超时时间,以ms为单位

PIT_LDVAL0=20000*number_ms;

设置定时器超时时间为number_ms毫秒。

设置计时器启动值后,计时器将倒计时,直到达到0,然后它将生成一个中断并再次加载该寄存器值。向该寄存器写入新值不会重新启动计时器;相反,该值将在计时器过期后加载。要中止当前周期并使用新值启动计时器周期,必须禁用并再次启用计时器。

step4:使能中断请求

PIT_TCTRL0|=PIT_TCTRL_TIE_MASK;

启用定时器中断。当中断处于挂起状态或设置了TFLGn[TIF]时,启用中断将立即导致中断事件。为了避免这种情况,必须首先清除相关的TFLGn[TIF]。

step5:使能定时器

PIT_TCTRL0|=PIT_TCTRL_TEN_MASK;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。