上海网站建设宣传,移动网站如何做权重,网页制作中级证书,做网站怎么切psd图系列文章目录 文章目录 系列文章目录前言介绍配置过程 前言
前面学的快崩溃了#xff0c;这也太底层了#xff0c;感觉学好至少得坚持一整年#xff0c;我决定这节先把EPIT学了#xff0c;下面把常见三种通信大概学一下#xff0c;直接跳过其他的先学移植了#xff0c;有…系列文章目录 文章目录 系列文章目录前言介绍配置过程 前言
前面学的快崩溃了这也太底层了感觉学好至少得坚持一整年我决定这节先把EPIT学了下面把常见三种通信大概学一下直接跳过其他的先学移植了有些太多了内容。 介绍
EPITEnhanced Periodic Interrupt Timer增强周期中断定时器EPIT是专门完成此功能的PWM、输入捕获那些事其他外设完成的。
EPIT是32位的向下计数的定时器有12位的分频当计数值等于比较值的时候就产生中断 EPIT时钟源可由多路选择器选择ipg_clk、 ipg_clk_32k 和 ipg_clk_highfreq。 分频器是12位的值0-4095对应1-1096终于明白HAL配置32的时候为啥分频时要减1。 计数寄存器(EPIT_CNR)32位向下递减的寄存器保存当前递减到几直到0。 加载寄存器(EPIT_LR)set-and-forget 模式计数器值减少到0将从加载寄存器里面重新加载。 比较寄存器(EPIT_CMPR)和计数寄存器比较如果相等就触发中断。
EPIT两种工作模式 set-and-forget 模式EPITx_CR(x1 2)寄存器的 RLD 置1 计数器从加载寄存器 EPITx_LR 中获取初始值不能直接写。 free-running 模式EPITx_CR 寄存器的 RLD 为零计数器计数到 0以后会重新从 0XFFFFFFFF开始计数不从加载寄存器 EPITx_LR中获取。
EPITx_CR完成各种配置具体参考手册的寄存器 寄存器 EPITx_SR只有一个位有效OCIF(bit0)中断比较标志位为0没有中断为1中断发生比较事件发生后需要手动置0
配置过程
设置时钟源EPIT1_CR 寄存器的 CLKSRC设置分频器EPIT1_CR 寄存器的 PRESCALAR设置工作模式EPIT1_CR 的 RLD设置计数器的初始值来源EPIT1_CR 的 ENMOD0来自上次关闭定时器的计数器值1加载寄存器使能比较中断EPIT1_CR 的 OCIEN设置加载值和比较值EPIT1_LR 中的加载值和 EPIT1_CMPR 中的比较值EPIT1 中断设置和中断服务函数编写使能 GIC 中对应的 EPIT1 中断注册中断服务函数设置中断优先级编写中断服务函数使能 EPIT1 定时器EPIT1_CR 的 EN Tout ((frac 1 )* value) / Tclk;分频值是12位的倒计数值是32位的 时钟源 ipg_clk的Tclk为66MHz。 Tout EPIT1 的溢出时间(单位 S)。 Tclk EPIT1 的输入时钟频率(单位 Hz)。
函数 epit1_irqhandler 是 EPIT1 的中断处理函数此函数先读取 EPIT1_SR 寄存器判断当前的中断是否为比较事件在退出中断处理函数的时候需要清除中断标志位 主函数定义了500ms的中断