K60学习之PIT周期性定时模块

PIT(周期性定时器模块)
原理部分:
相当于Systick的增强版
输入时钟是bus clock
能够产生中断或是触发triggger信号
一些重要的寄存器
PIT_MCR Module Control Register
MDIS 为0时使能PIT ;为1时禁止PIT
FRZ 在debug模式下,为0时使能PIT ;为1时禁止PIT
PIT_LDVALn Timer Load Value Register
存储一个计数值,减法计数,到0时产生一个中断或是触发一个事件
在计数过程中,如果写入新的值,不会打断计数,而只是会在本次计数结束之后再写入
要想废除本次计数,必须先关闭计数器,再打开
PIT_CVALn Current Timer Value Register
用于存储当前正在计数的值
PIT_TCTCLn Timer Control Register
TIE 0表示不产生中断
TEN 0表示计数器禁止,1表示计数器开启
PIT_TFGn Timer Flag Register
TIF 0表示正在计数;1表示计数结束 ;写1的时候清零
应用部分:

//初始化PIT
    PIT_InitTypeDef PIT_InitStruct1;  //申请一个PIT模块
    PIT_InitStruct1.chl = HW_PIT_CH0; /*使用通道0进行定时 */
    PIT_InitStruct1.timeInUs = 1000*1000; /* 定时时间设置 */
    PIT_Init(&PIT_InitStruct1); //初始化
    PIT_CallbackInstall(HW_PIT_CH0, PIT_ISR); //注册中断函数
    PIT_ITDMAConfig(HW_PIT_CH0, kPIT_IT_TOF, true);
    //开启 PIT中断

对函数PIT_Init()的解释:
1.在外部的结构体PIT_InitStruct1已经定义了通道号和定时的时间。
2.在初始化内部,需要完成通道的设置,定时时间的设置,为了后续调用的方便,还加入了一部分代码将计数值换算为us和ms;
3.将定时时间换算成计数值放到PIT_LDVALn 寄存器中;
4.修改PIT_TCTCLn 的TEN 位,设置允许计数;
5.最后设置PIT_MCR 打开PIT模块。
后面的注册回调函数和打开中断与之前的类似。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,084评论 19 139
  • 原文链接http://www.cnblogs.com/kenshincui/p/4186022.html 音频在i...
    Hyman0819阅读 22,044评论 4 74
  • “你看看那里,两具尸体!” 身边有人压低了声音说着什么,见我望了过来立刻露出厌恶的表情小步跑开了。 我低头看着木头...
    花笏阅读 3,034评论 0 0
  • 1、小油菜放入开水煮2分钟,捞出后根部朝下立起来放入盆中,再把煮菜的开水倒进去。为了让根部熟透而不伤害叶部。15分...
    小乞_阅读 3,184评论 0 0

友情链接更多精彩内容