第7章 定时器模块
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
定时计数器禁用时:
TSR可以被读/写。写TSR来清 零SR[TOF]或SR[TIF]。
二、RTC模块的编程结构
3、定时预分频寄存器( RTC_TPR)
KL25参考手册: P599
定时计数器使能SR[TCE]时:TPR是只读的并且每个
32.768 kHz的时钟周期增量一次。当TPR的D14位从逻 辑1转换到逻辑0时,TSR[TSR]增量。
实现计数与定时的基本方法
完全硬件方式
完全用硬件电路实现计数/定时功能 改变电路参数,实现不同要求 通过编程,利用计算机执行指令的时间实现定时 执行延时程序期间,CPU一直被占用 利用专门的可编程计数器/定时器实现计数与定时 克服了完全硬件方式与完全软件方式的缺点,综合利用了它 们各自的优点
RTC寄存器(除了SWR位)。SWR位被POR清0
并且软件显式地清0它。
二、RTC模块的编程结构
7、状态寄存器( RTC_SR)
KL25参考手册: P603-604
TCE—定时计数器使能:当定时计数器禁用时:TPR
和TSR是可写的,但不会增量;当定时计数器使能时: TPR和TSR是不可写的,但会增量。0表示定时计数器 禁用,1表示定时计数器使能。
OSCE—振荡器使能:0表示32.768
kHz振荡器禁用,1 表示32.768 kHz振荡器使能。在设置此位之后,在使能 定时计数器来允许32.768 kHz时钟时间达到稳定之前等 待振荡器开始定时。
UM—更新模式:甚至当状态寄存器被锁时,允许
SR[TCE]被写。当置位时, 如果SR[TIF]或SR[TOF]被 置位或者SR[TCE]被清0的话,那么SR[TCE]总可以被 写。0表示当被锁时,寄存器不能被写入。1表示在有限 制条件下被锁时,寄存器可以被写。
7.6 实时时钟模块(RTC)
二、RTC模块的编程结构 1、寄存器映像地址( KL25参考手册: P598)
二、RTC模块的编程结构
2、定时秒寄存器( RTC_TSR)
KL25参考手册: P599
定时计数器使能SR[TCE]时:若SR[TOF]或SR[TIF]
没有置位,则TSR是只读的并且1秒增量一次;若 SR[TOF]或SR[TIF]置位,则定时计数器读取值为0。
写被忽略,1表示定时补偿寄存器不被锁并且写完全正 常。
二、RTC模块的编程结构
9、中断使能寄存器( RTC_IER)
KL25参考手册: P605-606
WPON—唤醒引脚开启:0表示无效;1表示如果唤醒
引脚使能CR[WPE],那么唤醒引脚将被声明。
TSIE—定时秒中断使能:秒中断是一个带有专用中断
RTC模块主要包含:
1)外部晶体振荡器
为RTC内的定时计数器提供32.768
kHz的时钟。
晶体振荡器包括可调电容器,可由软件配置。
一、RTC模块的功能概述
RTC模块主要包含: 2)POR(Power-on reset)电路 产生上电复位信号,初始化所有的RTC寄存器为默 认状态。 3)RTC计时器 由一个具有报警功能的定时秒寄存器(每隔1秒增 量一次)和一个具有补偿功能的定时预分频寄存器 (每隔32.768 kHz的时钟周期增量一次)组成。 写定时秒寄存器之前,一直写定时预分频寄存器。 4)自身的软件复位 控制寄存器的SWR位段,也可以初始化所有的 RTC寄存器。
2、控制及状态寄存器( SYST_CSR)
一、SysTick模块的编程结构
3、重载寄存器( SYST_RVR) SysTick Reload Value Register M0+用户手册: P101
一、SysTick模块的编程结构
4、计数寄存器( SYST_CVR) SysTick Current Value Register M0+用户手册: P102
80h:定时预分频器寄存器每32896个时钟周期溢出一次。 …… FFh:定时预分频器寄存器每32769个时钟周期溢出一次。 00h:定时预分频器寄存器每32768个时钟周期溢出一次。 …… 7Fh:定时预分频器寄存器每32641个时钟周期溢出一次。
二、RTC模块的编程结构
6、控制寄存器( RTC_CR)
《嵌入式系统基础》
第7章 定时器模块
目的要求:
1.了解KL25定时器/PWM模块(TPM)、 周期性中断定时器(PIT)和低功耗定时器 (LPTMR)的基本功能与编程基础; 2.理解ARM Cortex-M0+内核定时器 (SysTick)的基本功能和编程方法; 3.掌握KL25实时时钟(RTC)模块的基本 功能和编程方法。
SUP—主管访问:0表示不支持非主管模式写访问并生
成一个总线错误。1表示支持非主管模式写访问。
6、控制寄存器( RTC_CR)
WPE—唤醒引脚使能:唤醒引脚是可选的且并
不适用于所有设备。0表示唤醒引脚不使能;1表
示唤醒引脚使能,而且如果RTC中断声明或者唤
醒引脚开启时唤醒引脚将声明。
SWR—软件复位:0表示无效。1表示复位所有
TAF—定时报警标志:当TAR[TAR]等于TSR[TSR]且
TSR[TSR]增量时被置位。该位是通过写TAR寄存器来 清0的。0表示没有定时报警发生,1表示定时报警发生。
7、状态寄存器( RTC_SR)
TOF—定时溢出标志:当定时计数器使能和溢出时被
置位。该位置位时,TSR和TPR不会增量并且读取值为
完全软件方式
可编程计数器/定时器
第7章 定时器模块
7.2 ARM Cortex-M0+内核时钟(SysTick)
ARM
Cortex-M内核架构包含了一个简单的定 时器SysTick,又称为“滴答”定时器。
SysTick计数的有效位数是24位,采用减1计数
的方式工作。
SysTick定时器被捆绑在NVIC中,可用于产生
一、SysTick模块的编程结构
5、M0+内核优先级设置寄存器( SHPR3)
M0+用户手册: P99
7.2 ARM Cortex-M0+内核时钟(SysTick)
二、SysTick模块构件的设计
1、SysTick构件头文件(systick.h)
1、 SysTick构件头文件(systick.h)
第7章 定时器模块
7.1 计数器/定时器的工作原理 7.2 ARM Cortex-M0+内核时钟(SysTick)
7.3 定时器/PWM模块(TPM)
7.4 周期性中断定时器(PIT) 7.5 低功耗定时器(LPTMR) 7.6 实时时钟模块(RTC)
第7章 定时器模块
7.1 计数器/定时器的工作原理
5、定时补偿寄存器( RTC_TCR)
KL25参考手册: P600-601
CIC—补偿间隔计数器:指补偿间隔计数器的当前值。
如果CIC等于0,那么它会加载CIR的内容;如果CIC不 等于0,那么它1秒减量一次。
TCV—定时补偿值:当前值用于当前秒间隔的补偿逻
辑。如果CIC等于0,那么其1秒更新一次;如果CIC不 等于0,那么它加载值为0(补偿不使能秒增量)。
志SR[TOF]不产生一个中断,1表示定时溢出标
志产生一个中断。
TIIE—定时无效中断使能:0表示定时无效标
志SR[TIF]不产生一个中断,1 表示定时无效标
志产生一个中断。
7.6 实时时钟模块(RTC)
三、RTC构件的设计 1、RTC构件头文件(rtc.h)
KL25参考手册: P54
三、RTC构件的设计
2、RTC构件说明 1)结构体类型
2、RTC构件说明
KL25参考手册: P601-603
SC2P、SC4P、SC8P、SC16P—2PF、4PF、8PF、
16PF振荡器加载配置:0表示禁用加载,1表示使能额外 的加载。
CLKO—时钟输出:0表示32kHz时钟输出到其他外围
设备,1表示32kHz时钟不输出到其他外围设备。
6、控制寄存器( RTC_CR)
SysTick异常(减1计数到0时)。
可以通过编程,在指定的时间内产生“滴答”
中断信号。
7.2 ARM Cortex-M0+内核时钟(SysTick)
一、SysTick模块的编程结构
1、寄存器映像地址( M0+用户手册: P100、92)
2、控制及状态寄存器( SYST_CSR) SysTick Control and Status Register M0+用户手册: P100-101
自习
第7章 定时器模块
7.4 周期性中断定时器(PIT)
自习
第7章 定时器模块
7.5 低功耗定时器(LPTMR)
自习
第7章 定时器模块
7.6 实时时钟模块(RTC)
KL25参考手册:第34章 一、RTC模块的功能概述
实时时钟(Real
Time Clock, RTC)模块是一个独立 供电的模块,在芯片掉电时由备用电源(VBAT)供电。
0。当定时计数器禁用时,该位是通过写TSR寄存器来
清0的。0表示没有定时溢出发生,1表示定时溢出发生 并且定时计数器读取值为0。
TIF—定时无效标志:当POR或软件复位时被置位。
该位置位时,TSR和TPR不会增量并且读取值为0。当 定时计数器禁用时,该位是通过写TSR寄存器来清0的。 0表示定时有效,1表示定时无效并且定时计数器读取值
5、定时补偿寄存器( RTC_TCR)
CIR—补偿间隔寄存器:配置补偿间隔为1~256秒/次,
用来控制TCR每秒内32.768 kHz的时钟周期数量的调整 频率。该寄存器是双缓冲的并且写无效直到当前补偿间 隔的末尾。
TCR—定时补偿寄存器:配置每秒内32.768
kHz的时 钟周期数量。该寄存器是双缓冲的并且写无效直到当前 补偿间隔的末尾。
定时计数器禁用时:TPR可以被读/写。
二、RTC模块的编程结构
4、定时报警寄存器( RTC_TAR) KL25参考手册: P600
定时计数器使能SR[TCE]时:当TAR[TAR]等
于TSR[TSR]并且TSR[TSR]增量时,SR[TAF]置 位。写TAR来清零SR[TAF]。
二、RTC模块的编程结构
二、SysTick模块构件的设计
2、SysTick构件说明
(1)时钟的定义
2、SysTick构件说明
(2)SCB的结构体类型及相关宏定义
(2)SCB的结构体类型及相关宏定义
2、SysTick构件说明
(3)SysTick的结构体类型及相关宏定义
(3)SysTick的结构体类型及相关宏定义
二、SysTick模块构件的设计
该位仅被POR或
软件复位置位。0表示状态寄存器被锁并且写被忽略,1
表示状态寄存器不被锁并且写完全正常。
CRL—控制寄存器锁:在被清0之后,该位仅被POR
置位。 0表示控制寄存器被锁并且写被忽略,1表示控
制寄存器不被锁并且写完全正常。
TRL—定时补偿寄存器锁:在被清0之后,该位仅被
POR或软件复位置位。0表示定时补偿寄存器被锁并且
向量的边缘敏感中断。其1秒产生一次并且不需要软件 开销(没有相应的状态标志来清0)。0表示秒中断禁用, 1表示秒中断使能。
9、中断使能寄存器( RTC_IER)
TAIE—定时报警中断使能:0表示定时报警标
志SR[TAF]不产生一个中断,1表示定时报警标
志产生一个中断。
TOIE—定时溢出中断使能:0表示定时溢出标
3、SysTick构件源文件(systick.c)
3、 SysTick构件源文件(systick.c)
7.2 ARM Cortex-M0+内核时钟(SysTick)
三、SysTick构件的测试
三、SysTick构件的测试
三、SysTick构件的测试
三、SysTick构件的测试
三、SysTick构件的测试
三、SysTick构件的测试
三、SysTick构件的测试
三、SysTick构件的测试
三、SysTick构件的测试
测试结果
三、SysTick构件的测试
测试结果 蓝灯亮暗变化间隔为1秒
三、SysTick构件的测试
测试结果
三、SysTick构件的测试
测试结果
第7章 定时器模块
7.3 定时器/PWM模块(TPM)
为0。
二、RTC模块的编程结构
8、锁寄存器( RTC_LR)
KL25参考手册: P604-605
LRL—锁寄存器锁:在被清0之后,该位仅被POR或
软件复位置位。0表示锁寄存器被锁并且写被忽略,1表 示锁寄存器不被锁并且写完全正常。
8、锁寄存器( RTC_LR)
SRL—状态寄存器锁:在被清0之后,
TSR可以被读/写。写TSR来清 零SR[TOF]或SR[TIF]。
二、RTC模块的编程结构
3、定时预分频寄存器( RTC_TPR)
KL25参考手册: P599
定时计数器使能SR[TCE]时:TPR是只读的并且每个
32.768 kHz的时钟周期增量一次。当TPR的D14位从逻 辑1转换到逻辑0时,TSR[TSR]增量。
实现计数与定时的基本方法
完全硬件方式
完全用硬件电路实现计数/定时功能 改变电路参数,实现不同要求 通过编程,利用计算机执行指令的时间实现定时 执行延时程序期间,CPU一直被占用 利用专门的可编程计数器/定时器实现计数与定时 克服了完全硬件方式与完全软件方式的缺点,综合利用了它 们各自的优点
RTC寄存器(除了SWR位)。SWR位被POR清0
并且软件显式地清0它。
二、RTC模块的编程结构
7、状态寄存器( RTC_SR)
KL25参考手册: P603-604
TCE—定时计数器使能:当定时计数器禁用时:TPR
和TSR是可写的,但不会增量;当定时计数器使能时: TPR和TSR是不可写的,但会增量。0表示定时计数器 禁用,1表示定时计数器使能。
OSCE—振荡器使能:0表示32.768
kHz振荡器禁用,1 表示32.768 kHz振荡器使能。在设置此位之后,在使能 定时计数器来允许32.768 kHz时钟时间达到稳定之前等 待振荡器开始定时。
UM—更新模式:甚至当状态寄存器被锁时,允许
SR[TCE]被写。当置位时, 如果SR[TIF]或SR[TOF]被 置位或者SR[TCE]被清0的话,那么SR[TCE]总可以被 写。0表示当被锁时,寄存器不能被写入。1表示在有限 制条件下被锁时,寄存器可以被写。
7.6 实时时钟模块(RTC)
二、RTC模块的编程结构 1、寄存器映像地址( KL25参考手册: P598)
二、RTC模块的编程结构
2、定时秒寄存器( RTC_TSR)
KL25参考手册: P599
定时计数器使能SR[TCE]时:若SR[TOF]或SR[TIF]
没有置位,则TSR是只读的并且1秒增量一次;若 SR[TOF]或SR[TIF]置位,则定时计数器读取值为0。
写被忽略,1表示定时补偿寄存器不被锁并且写完全正 常。
二、RTC模块的编程结构
9、中断使能寄存器( RTC_IER)
KL25参考手册: P605-606
WPON—唤醒引脚开启:0表示无效;1表示如果唤醒
引脚使能CR[WPE],那么唤醒引脚将被声明。
TSIE—定时秒中断使能:秒中断是一个带有专用中断
RTC模块主要包含:
1)外部晶体振荡器
为RTC内的定时计数器提供32.768
kHz的时钟。
晶体振荡器包括可调电容器,可由软件配置。
一、RTC模块的功能概述
RTC模块主要包含: 2)POR(Power-on reset)电路 产生上电复位信号,初始化所有的RTC寄存器为默 认状态。 3)RTC计时器 由一个具有报警功能的定时秒寄存器(每隔1秒增 量一次)和一个具有补偿功能的定时预分频寄存器 (每隔32.768 kHz的时钟周期增量一次)组成。 写定时秒寄存器之前,一直写定时预分频寄存器。 4)自身的软件复位 控制寄存器的SWR位段,也可以初始化所有的 RTC寄存器。
2、控制及状态寄存器( SYST_CSR)
一、SysTick模块的编程结构
3、重载寄存器( SYST_RVR) SysTick Reload Value Register M0+用户手册: P101
一、SysTick模块的编程结构
4、计数寄存器( SYST_CVR) SysTick Current Value Register M0+用户手册: P102
80h:定时预分频器寄存器每32896个时钟周期溢出一次。 …… FFh:定时预分频器寄存器每32769个时钟周期溢出一次。 00h:定时预分频器寄存器每32768个时钟周期溢出一次。 …… 7Fh:定时预分频器寄存器每32641个时钟周期溢出一次。
二、RTC模块的编程结构
6、控制寄存器( RTC_CR)
《嵌入式系统基础》
第7章 定时器模块
目的要求:
1.了解KL25定时器/PWM模块(TPM)、 周期性中断定时器(PIT)和低功耗定时器 (LPTMR)的基本功能与编程基础; 2.理解ARM Cortex-M0+内核定时器 (SysTick)的基本功能和编程方法; 3.掌握KL25实时时钟(RTC)模块的基本 功能和编程方法。
SUP—主管访问:0表示不支持非主管模式写访问并生
成一个总线错误。1表示支持非主管模式写访问。
6、控制寄存器( RTC_CR)
WPE—唤醒引脚使能:唤醒引脚是可选的且并
不适用于所有设备。0表示唤醒引脚不使能;1表
示唤醒引脚使能,而且如果RTC中断声明或者唤
醒引脚开启时唤醒引脚将声明。
SWR—软件复位:0表示无效。1表示复位所有
TAF—定时报警标志:当TAR[TAR]等于TSR[TSR]且
TSR[TSR]增量时被置位。该位是通过写TAR寄存器来 清0的。0表示没有定时报警发生,1表示定时报警发生。
7、状态寄存器( RTC_SR)
TOF—定时溢出标志:当定时计数器使能和溢出时被
置位。该位置位时,TSR和TPR不会增量并且读取值为
完全软件方式
可编程计数器/定时器
第7章 定时器模块
7.2 ARM Cortex-M0+内核时钟(SysTick)
ARM
Cortex-M内核架构包含了一个简单的定 时器SysTick,又称为“滴答”定时器。
SysTick计数的有效位数是24位,采用减1计数
的方式工作。
SysTick定时器被捆绑在NVIC中,可用于产生
一、SysTick模块的编程结构
5、M0+内核优先级设置寄存器( SHPR3)
M0+用户手册: P99
7.2 ARM Cortex-M0+内核时钟(SysTick)
二、SysTick模块构件的设计
1、SysTick构件头文件(systick.h)
1、 SysTick构件头文件(systick.h)
第7章 定时器模块
7.1 计数器/定时器的工作原理 7.2 ARM Cortex-M0+内核时钟(SysTick)
7.3 定时器/PWM模块(TPM)
7.4 周期性中断定时器(PIT) 7.5 低功耗定时器(LPTMR) 7.6 实时时钟模块(RTC)
第7章 定时器模块
7.1 计数器/定时器的工作原理
5、定时补偿寄存器( RTC_TCR)
KL25参考手册: P600-601
CIC—补偿间隔计数器:指补偿间隔计数器的当前值。
如果CIC等于0,那么它会加载CIR的内容;如果CIC不 等于0,那么它1秒减量一次。
TCV—定时补偿值:当前值用于当前秒间隔的补偿逻
辑。如果CIC等于0,那么其1秒更新一次;如果CIC不 等于0,那么它加载值为0(补偿不使能秒增量)。
志SR[TOF]不产生一个中断,1表示定时溢出标
志产生一个中断。
TIIE—定时无效中断使能:0表示定时无效标
志SR[TIF]不产生一个中断,1 表示定时无效标
志产生一个中断。
7.6 实时时钟模块(RTC)
三、RTC构件的设计 1、RTC构件头文件(rtc.h)
KL25参考手册: P54
三、RTC构件的设计
2、RTC构件说明 1)结构体类型
2、RTC构件说明
KL25参考手册: P601-603
SC2P、SC4P、SC8P、SC16P—2PF、4PF、8PF、
16PF振荡器加载配置:0表示禁用加载,1表示使能额外 的加载。
CLKO—时钟输出:0表示32kHz时钟输出到其他外围
设备,1表示32kHz时钟不输出到其他外围设备。
6、控制寄存器( RTC_CR)
SysTick异常(减1计数到0时)。
可以通过编程,在指定的时间内产生“滴答”
中断信号。
7.2 ARM Cortex-M0+内核时钟(SysTick)
一、SysTick模块的编程结构
1、寄存器映像地址( M0+用户手册: P100、92)
2、控制及状态寄存器( SYST_CSR) SysTick Control and Status Register M0+用户手册: P100-101
自习
第7章 定时器模块
7.4 周期性中断定时器(PIT)
自习
第7章 定时器模块
7.5 低功耗定时器(LPTMR)
自习
第7章 定时器模块
7.6 实时时钟模块(RTC)
KL25参考手册:第34章 一、RTC模块的功能概述
实时时钟(Real
Time Clock, RTC)模块是一个独立 供电的模块,在芯片掉电时由备用电源(VBAT)供电。
0。当定时计数器禁用时,该位是通过写TSR寄存器来
清0的。0表示没有定时溢出发生,1表示定时溢出发生 并且定时计数器读取值为0。
TIF—定时无效标志:当POR或软件复位时被置位。
该位置位时,TSR和TPR不会增量并且读取值为0。当 定时计数器禁用时,该位是通过写TSR寄存器来清0的。 0表示定时有效,1表示定时无效并且定时计数器读取值
5、定时补偿寄存器( RTC_TCR)
CIR—补偿间隔寄存器:配置补偿间隔为1~256秒/次,
用来控制TCR每秒内32.768 kHz的时钟周期数量的调整 频率。该寄存器是双缓冲的并且写无效直到当前补偿间 隔的末尾。
TCR—定时补偿寄存器:配置每秒内32.768
kHz的时 钟周期数量。该寄存器是双缓冲的并且写无效直到当前 补偿间隔的末尾。
定时计数器禁用时:TPR可以被读/写。
二、RTC模块的编程结构
4、定时报警寄存器( RTC_TAR) KL25参考手册: P600
定时计数器使能SR[TCE]时:当TAR[TAR]等
于TSR[TSR]并且TSR[TSR]增量时,SR[TAF]置 位。写TAR来清零SR[TAF]。
二、RTC模块的编程结构
二、SysTick模块构件的设计
2、SysTick构件说明
(1)时钟的定义
2、SysTick构件说明
(2)SCB的结构体类型及相关宏定义
(2)SCB的结构体类型及相关宏定义
2、SysTick构件说明
(3)SysTick的结构体类型及相关宏定义
(3)SysTick的结构体类型及相关宏定义
二、SysTick模块构件的设计
该位仅被POR或
软件复位置位。0表示状态寄存器被锁并且写被忽略,1
表示状态寄存器不被锁并且写完全正常。
CRL—控制寄存器锁:在被清0之后,该位仅被POR
置位。 0表示控制寄存器被锁并且写被忽略,1表示控
制寄存器不被锁并且写完全正常。
TRL—定时补偿寄存器锁:在被清0之后,该位仅被
POR或软件复位置位。0表示定时补偿寄存器被锁并且
向量的边缘敏感中断。其1秒产生一次并且不需要软件 开销(没有相应的状态标志来清0)。0表示秒中断禁用, 1表示秒中断使能。
9、中断使能寄存器( RTC_IER)
TAIE—定时报警中断使能:0表示定时报警标
志SR[TAF]不产生一个中断,1表示定时报警标
志产生一个中断。
TOIE—定时溢出中断使能:0表示定时溢出标
3、SysTick构件源文件(systick.c)
3、 SysTick构件源文件(systick.c)
7.2 ARM Cortex-M0+内核时钟(SysTick)
三、SysTick构件的测试
三、SysTick构件的测试
三、SysTick构件的测试
三、SysTick构件的测试
三、SysTick构件的测试
三、SysTick构件的测试
三、SysTick构件的测试
三、SysTick构件的测试
三、SysTick构件的测试
测试结果
三、SysTick构件的测试
测试结果 蓝灯亮暗变化间隔为1秒
三、SysTick构件的测试
测试结果
三、SysTick构件的测试
测试结果
第7章 定时器模块
7.3 定时器/PWM模块(TPM)
为0。
二、RTC模块的编程结构
8、锁寄存器( RTC_LR)
KL25参考手册: P604-605
LRL—锁寄存器锁:在被清0之后,该位仅被POR或
软件复位置位。0表示锁寄存器被锁并且写被忽略,1表 示锁寄存器不被锁并且写完全正常。
8、锁寄存器( RTC_LR)
SRL—状态寄存器锁:在被清0之后,