- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
功能应用场合
TPM
TPM共有三个模块,TPM0、TPM1、TPM2,TPM0有6个通道,TPM1和TPM2只有2个通道。TPM支持输入捕捉、输出比较,并能产生脉宽调信号(PWM)来控制电机。通过异步时钟源,可以让计数器、输出比较和捕捉寄存器工作在低功耗模式下,所以KL25的TPM模块又可以称为LPTPM。
TPM是递增计数器,通过设定模块的溢出值,当计数器达到该数值时产生中断。输入捕捉功能靠中断来实现。
PIT
周期中断定时器模块PIT是一组可以用于产生中断和触发器DMA通道定时器。该模块的中断都是可屏蔽的,每个定时器都有独立的溢出周期,此外,周期终端定时器模块没有外部引脚。PIT的基本操作有:
1.定时器:当使能时,定时器定期产生触发
2.调试模式:调试模式下,定时器由MCR[FRZ]决定是否冻结
3.中断:所有定时器都支持中断的产生
PIT可实现定时中断功能。
LPTMR
低功耗定时器LPTMR可以被配置成具有可选预分频因子的定时计数器,也可以被配置成带有脉冲干扰滤波器的脉冲计数器。绝大多数的系统复位都不会影响其继续使用,可以用作天数计数器。LPTMR模块共有5种操作模式,即运行模式、等待模式、停止模式、低漏电模式和调试模式。在这五种模式下,LPTMR都可以正常工作。在等待模式、停止模式、低漏电模式下,可以通过配置LPTMR,产生一个中断请求,退出低功耗模式。
LPTMR可应用于脉冲技术和定时中。
RTC
实时时钟RTC模块是一个独立供电的模块,在芯片掉电时由备用电源供电,确保RTC计时器正常运行,保持RTC寄存器运行状态。RTC模块主要包含外部晶体振荡器、POR块、RTC计时器以及自身的软件复位控制位。外部晶体振荡器为RTC计时器或其他外设提供32.768kHz的时钟;POR块在RTC模块上电时产生一个上电复位信号,将所有的RTC寄存器初始化为默认状态;RTC计时器由一个具有报警功能的32位秒寄存器和一个具有补偿功能的16位预分频寄存器组成;RTC自身的软件复位控制位,也会初始化所有的RTC寄存器。在VBAT掉电或POR中断时,不允许访问RTC任何寄存器(除控制寄存器),否则将产生总线错误。
RTC可应用在日历和闹钟历。分析归纳TPM、PIT、LPTMR、RTC各定时器模块的功能及应用场合,列表说明。
编写DAC模块程序,分别配置缓冲区操作模式为缓冲区正常模式和缓冲区单次扫描模 式,完成三角波发生器功能。
// DAC驱动程序
typedef struct
{
DACx dacx; // 配置DAC模块号
DAC_MemMapPtr DACx_Base_Ptr; // 选择DAC通道号
unit8_t Water_Mark_Mode; // 选择水印模式的数字
unit8_t Buffer_Enable; // 配置buffer缓冲区使能
unit8_t Buffer_Mode; // 配置buffer缓冲区的模式
unit8_t Triger_Mode; // 配置触发器模式
unit8_t Buffer_Init_Pos; // 配置buffer缓存区的起始位置
unit8_t Buffer_Up_Limit; // 配置buffer缓冲区的最大长度
unit8_t DAC_irqc; // 选择DAC中断模块
DAC_ISR_CALLBACK isr_func; // 设置回掉函数
}LPLD_DAC_Cfg_t;
// 对DAC_Config进行默认配置
unit8_t LPLD_DAC_Init(LPLD_DAC_Cfg_t *DAC_Config)
{
// 水印模式的字数默认为一个字节
if(DAC_Config - Water_Mark_Mode == NULL)
DAC_Config - Water_Mark_Mode = WATER_MODE_1WORD;
// 缓冲区使能默认为禁用缓冲区
在单次扫描模式下,这里改为BUFFER_MODE_ONETIMESCAN;
if(DAC_Config - Buffer_Enable == NULL)
DAC_Config - Buffer_Enable = BUFFER_DISABLE;
// 缓冲区模式默认为正常模式
if(DAC_Config - Buffer_Mode == NULL)
DAC_Config - Buffer_Mode = BUFFER_MODE_NORMAL;
// 触发模式默认为无触发模式
if(DAC_Config
文档评论(0)