硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3264|回复: 3
收起左侧

[TIMER] STM32H7的LPTIM学习笔记,关键知识点整理(2019-01-03 V1.0)

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
发表于 2019-1-3 11:57:15 | 显示全部楼层 |阅读模式
说明:
使用LPTIM的好处是系统处于睡眠,停机状态依然可以正常工作(除了待机模式)

停机状态可以正常工作的关键是LSE,LSI时钟不会被关闭,同时也可以选择使用外部时钟源。


几种低功耗模式,比较重要,放在前面说明:

休眠模式
(1)进入方式
HAL_PWR_EnterSLEEPMode(Regulator, SLEEPEntry)

参数Regulator
STM32H7用不到这个参数,是为了跟STM32L系列的API保持兼容。

参数SLEEPEntry
PWR_SLEEPENTRY_WFI:  enter SLEEP mode with WFI instruction
PWR_SLEEPENTRY_WFE:  enter SLEEP mode with WFE instruction

(2)退出方式
任何受NVIC控制的中断都可以唤醒休眠模式。

停机模式
在系统停止模式下,1.2V域中的所有时钟都停止,PLL,HSI和HSE RC振荡器被禁用。 内部SRAM和寄存器内容保留。

电压调节器可配置为正常或低功耗模式。为了进一步降低停机模式下的功耗,可以使用函数HAL_PWREx_EnableFlashPowerDown先关闭FLASH电源,再进入停止模式。退出停止模式后,再使用函数HAL_PWREx_DisableFlashPowerDown()打开。

(1)进入方式
函数HAL_PWR_EnterSTOPMode(Regulator, STOPEntry)

参数 Regulator:
PWR_MAINREGULATOR_ON: Main regulator ON.
PWR_LOWPOWERREGULATOR_ON: Low Power regulator ON.
参数STOPEntry:
PWR_STOPENTRY_WFI: enter STOP mode with WFI instruction
PWR_STOPENTRY_WFE: enter STOP mode with WFE instruction

(2)退出方式
在中断/事件模式下配置的任何EXTI Line(内部或外部)。


待机模式
系统待机模式允许实现最低功耗。它是基于Cortex-M7深度睡眠模式下,禁用电压调节器,因此系统断电。

PLL,HSI振荡器和HSE振荡器也被关闭。

SRAM和寄存器内容丢失,除了RTC寄存器,RTC备份寄存器,备份SRAM和待机电路。

进入方式:
使用HAL_PWR_EnterSTANDBYMode()函数输入待机模式。

退出方式:
WKUP引脚上升沿或下降沿,RTC Alarm(Alarm A和Alarm B),RTC唤醒,入侵事件,时间戳事件,NRST引脚的外部复位,IWDG复位。
1.jpg


1、LPTIM1 - LPTIM5里面,LPTIM1是功能最强的,下面以LPTIM1为例进行说明,框图如下:

QQ截图20190104004421.jpg

框图里面各种接线所代表的含义
77.jpg

LPTIM1支持的外部触发和输入
11.jpg
12.jpg
13.jpg

2、LPTIM的时钟选择

可以是内部时钟,也可以是来自Input1引脚的输入时钟
2.jpg


3、干扰滤波器
下面一张图说明问题,两次采样均有效才有效
555.jpg

4、操作模式
单触发模式:定时器由触发事件启动,当达到 ARR 值时停止
66.jpg

连续模式:定时器自由运行,由触发事件启动并且直到被禁止才会停止
77.jpg

5、溢出模式

检测引脚第1次检查到触发信号,LPTIM就开始工作了,在溢出时间内检测到的触发信号都将复位计数,定时器重新开始工作。如果溢出内没有再接收到触发信号,仅进入溢出中断。

重点:此中断可以唤醒停机模式


6、波形输出

下面这个波形图做的非常好
99.jpg

7、ARR自动重载寄存器和CMP比较寄存器的更新

可以选择立即更新,也可以选择本次周期结束后更新。

另外注意一点,因为APB接口和LPTIM内核用的时钟不同的,所以实际写到ARR和CMP寄存器里面会有几个时钟周期的延迟,针对这个问题,LPTIM专门搞了个是否已经写入成功的寄存器标志。

8、计数模式
可用于测试内部时钟或者LPTIM Input的输入时钟。

CKSEL = 0,COUNTMODE = 0:
LPTIM由内部时钟源提供时钟,LPTIM计数器配置为在每个内部时钟脉冲之后更新。

CKSEL = 0,COUNTMODE = 1:
LPTIM 外部 Input1 通过提供给 LPTIM 的内部时钟采样。因此,为了不丢失任何事件,外部 Input1 信号变化的频率决不应超过提供给 LPTIM 的内部时钟的频率。

CKSEL = 1,COUNTMODE = x:
由外部时钟源提供时钟。
在这种配置下, LPTIM 无需内部时钟源(已使能干扰滤波器时除外)。注入到 LPTIM外部 Input1 的信号用作 LPTIM 的系统时钟。
对于这种配置, LPTIM 计数器可以在 input1 时钟信号的上升沿或下降沿进行更新,但不可在上升沿和下降沿均更新。


9、编码器模式
此模式用于处理来自正交编码器的信号,此正交编码器用于检测旋转元件的角度位置。编码器接口模式就相当于带有方向选择的外部时钟。
1.jpg
2.jpg

10、支持的中断
3.jpg
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2019-1-3 14:16:07 | 显示全部楼层
沙发
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
 楼主| 发表于 2019-1-4 00:54:55 | 显示全部楼层
未完待续。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
 楼主| 发表于 2019-1-5 01:58:28 | 显示全部楼层
已经更新完毕。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-19 13:59 , Processed in 0.262308 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表