原创 STM32L低功耗定时器应用注意

2020-6-23 14:04 3445 23 2 分类: MCU/ 嵌入式 文集: STM32应用
LPTIM操作模式:
1. 连续运行模式:
可以由软件或触发事件启动,一旦运行后则不会主动停止,必须由软件关闭,新的触发事件会被忽略
2. 一次触发模式:
定时器由触发事件启动,当计数值到达ARR值(自动重装载值)时停止,新的触发事件将重启定时器
(例外情况:CFGR:WAVE标志置位后,定时器只能被触发启动一次,后续的触发事件会被忽略)
定时器启动后,但计数值未达到ARR值时,此期间的触发事件会被忽略

LPTIM计数模式:
CKSEL=0,COUNTMODE=0:内部时钟计数,每个内部时钟脉冲更新一次计数值
CKSEL=0,COUNTMODE=1:外部信号计数(内部时钟同步),每个内部时钟脉冲对外部信号进行采样并更新计数值,因此外部信号的频率应该低于内部时钟频率,同时内部时钟不应该被分频(即PRESC[2:0]=000)
CKSEL=1,COUNTMODE=X:外部时钟计数,此时定时器不需要内部时钟(也不需要毛刺过滤时)

LPTIM编码器模式:
LPTIM操作注意点:
1. SNGSTRT/CNTSTRT位必须在定时器使能时写入(即CR:ENABLE位为1时可以写入)
2. 连续运行模式和一次触发模式可以在运行过程中转换,如果当前模式为连续运行模式,置位SNGSTRT将切换至一次触发模式,计数值到达ARR值时,定时器自动停止;如果当前模式为单次触发模式,置位CNTSTRT将切换至连续运行模式,计数值到达ARR值时,定时器自动重启
3. TIMEOUT功能:第一个触发事件启动定时器,接下来的触发事件则复位计数值,重新开始计数
4. 波形发生功能:PWM模式(WAVE=0,CNTSTRT=1)->计数值(CNT寄存器)等于比较值(CMP寄存器)时,输出为高,计数值(CNT寄存器)等于重装载值(ARR寄存器)时,输出为低;单脉冲模式(WAVE=0,SNGSTRT=1)->同PWM模式,但只输出一个脉冲,然后输出持续为低;单次置位模式(WAVE=1)->同单脉冲模式,只是最后的保持电平取决于输出极性配置(又WAVPOL位控制)
5. ARR寄存器的值必须大于CMP寄存器的值
6. PRELOAD位控制ARR和CMP寄存器的数据加载时刻,PRELOAD=0时,写操作会被立即执行;PRELOAD=1时,写操作的值在定时器超时时加载(如果定时器已经启动的话);ARROK和CMPOK状态位分别用于确认ARR和CMP寄存器写操作是否执行完成(未做ARROK和CMPOK判定时的连续写入会导致不可预料的结果
7. CR:ENABLE位置位后,定时器需要2个计数时钟才会被真正启动。CFGR(配置寄存器)和IER(中断使能寄存器)必须在该位为0时才能被修改

作者: RLink, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3918760.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
23
关闭 站长推荐上一条 /3 下一条