打印
[单片机芯片]

CH32L103 LPTIM应用

[复制链接]
3983|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
L-MCU|  楼主 | 2024-7-16 15:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 L-MCU 于 2024-7-16 15:57 编辑

1、关于LPTIM介绍
低功耗定时器(LPTIM)是一个16位上行计数的定时器。LPTIM 具有多种可选的时钟源,使得 LPTIM 能在除待机模式外的所有电源模式下运行。LPTIM 在没有内部时钟源的情况下也能运行,依此可以将 LPTIM 当作“脉冲计数器”使用。除此之外,LPTIM 还能将系统从低功耗模式唤醒,所以 LPTIM 很适合以极低的功耗实现“超时功能”。

2、关于LPTIM计数频率与PWM输出相关参数的计算
关于LPTIM的时钟源,可选时钟源如下:
内部时钟源:LSE、LSI、HSI 或 PB1 时钟
外部时钟源:LPTIM 输入上的外部时钟
关于LPTIM计数器计数一次时间的计算:
LPTIM可配置分频系数如下图
当LPTIM选择PB1时钟作为时钟源时,若系统主频为96MHz,则2分频后PB1时钟为48MHz,如下图,主要在配置系统主频时进行分频配置。
当用作LPTIM时钟源时,因为分频系数为2,因此LPTIM的时钟等于96MHz/2=48MHz,因此其
计数一次的时间
t=1/48MHz,约等于0.0208us.
当用作PWM输出时,若此时重装载值设置为100-1(从0开始计数,计数到99则为100次),则
PWM的周期
T=(arr+1)*psc/PB1=100*1/48MHz=t*100=2.08us,
PWM的频率
f=1/T=PB1/(arr+1)*psc=48MHz/100=480KHz

3、关于LPTIM应用
LPTIM可以生成以下波形:PWM模式、单脉冲模式、一次设置模式。关于这三种模式的具体应用如下:
PWM模式,具体代码如下:
/********************************** (C) COPYRIGHT *******************************
* File Name          : main.c
* Author             : WCH
* Version            : V1.0.0
* Date               : 2023/12/26
* Description        : Main program body.
*********************************************************************************
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
* Attention: This software (modified or not) and binary are used for
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
*******************************************************************************/

/*
*@Note
*USART Print debugging routine:
*USART1_Tx(PA9).
*This example demonstrates using USART1(PA9) as a print debug port output.
*
*/

#include "debug.h"

/* Global typedef */

/* Global define */

/* Global Variable */

/*********************************************************************
* @fn      LPTIM_Init
*
* [url=home.php?mod=space&uid=247401]@brief[/url]   LPTIM_Init.
*
* [url=home.php?mod=space&uid=266161]@return[/url]  none
*/
void LPTIM_PWM_Init(u16 cmp,u16 arr)
{
    GPIO_InitTypeDef            GPIO_InitStructure = {0};
    LPTIM_TimeBaseInitTypeDef   LPTIM_TimeBaseInitStruct = {0};

    RCC_PB2PeriphClockCmd(RCC_PB2Periph_GPIOB, ENABLE);
    RCC_PB1PeriphClockCmd(RCC_PB1Periph_LPTIM, ENABLE);
//    RCC_PB1PeriphClockCmd(RCC_PB1Periph_PWR | RCC_PB1Periph_BKP, ENABLE);
//    PWR_BackupAccessCmd(ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

//    RCC_LSICmd(ENABLE);
//    while (RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET)
//    {
//    }

//    RCC_LSEConfig(RCC_LSE_ON);
//    while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
//    {
//    }

    LPTIM_Cmd(ENABLE);

    LPTIM_TimeBaseInitStruct.LPTIM_ClockSource = LPTIM_ClockSource_In;                //LPTIM使用内部时钟
    LPTIM_TimeBaseInitStruct.LPTIM_ClockPolarity = LPTIM_ClockPolarity_Rising;        //上升沿用于计数
    LPTIM_TimeBaseInitStruct.LPTIM_ClockSampleTime = LPTIM_ClockSampleTime_0T;        //外部时钟的可配置数字滤波器,任何外部时钟信号电平变化都被视为有效转换
    LPTIM_TimeBaseInitStruct.LPTIM_TriggerSampleTime = LPTIM_TriggerSampleTime_0T;    //用于触发器的可配置数字滤波器,任何触发器的更改都被视为有效触发器
    LPTIM_TimeBaseInitStruct.LPTIM_ClockPrescaler = LPTIM_TClockPrescaler_DIV1;       //配置时钟预分频系数,1分频

    LPTIM_TimeBaseInitStruct.LPTIM_ExTriggerPolarity = LPTIM_ExTriggerPolarity_Disable;  //软件触发,计数器启动由软件启动
    LPTIM_TimeBaseInitStruct.LPTIM_TimeOut = DISABLE;                                    //超时启用,控制超时功能,计时器已启动时到达的触发事件被忽略
    LPTIM_TimeBaseInitStruct.LPYIM_OutputPolarity = LPYIM_OutputPolarity_Low;
    LPTIM_TimeBaseInitStruct.LPYIM_UpdateMode = LPYIM_UpdateMode0;                       //寄存器更新模式,控制 LPTIM_ARR 和 LPTIM_CMP 寄存器更新模式
    LPTIM_TimeBaseInitStruct.LPTIM_CountSource = LPTIM_CountSource_Internal;             //计数器模式,选择 LPTIM 使用哪个时钟源为计数器计时,此处选择计数器在每个内部时钟脉冲后递增
    LPTIM_TimeBaseInitStruct.LPTIM_Encoder = DISABLE;                                    //关闭编码器模式
    LPTIM_TimeBaseInitStruct.LPTIM_InClockSource = LPTIM_InClockSource_PCLK1;            //LPTIM内部时钟源选择,选择来源于PB1_CLK
    LPTIM_TimeBaseInitStruct.LPTIM_ForceOutHigh = DISABLE;                               //强制PWM输出无效

    LPTIM_TimeBaseInitStruct.LPTIM_PWMOut = ENABLE;                       //使能开启PWM波形输出
    LPTIM_TimeBaseInitStruct.LPTIM_ContinuousMode = ENABLE;               //连续模式下启动

    LPTIM_TimeBaseInitStruct.LPTIM_CounterDirIndicat = DISABLE;           //关闭外部触发计数方向使能
    LPTIM_TimeBaseInitStruct.LPTIM_Pulse = cmp;                           //比较寄存器配置
    LPTIM_TimeBaseInitStruct.LPTIM_Period = arr;                          //自动重装载寄存器配置

    LPTIM_TimeBaseInit( & LPTIM_TimeBaseInitStruct);



}
/*********************************************************************
* @fn      main
*
* [url=home.php?mod=space&uid=247401]@brief[/url]   Main program.
*
* [url=home.php?mod=space&uid=266161]@return[/url]  none
*/
int main(void)
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
    SystemCoreClockUpdate();
    Delay_Init();
    USART_Printf_Init(115200);
    printf("SystemClk:%d\r\n", SystemCoreClock);
    printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() );
    printf("This is printf example\r\n");

//    LPTIM_PWM_Init(500,1000-1);
    LPTIM_PWM_Init(300,1000-1);

    while(1)
    {
    }
}
程序中,首先对LPTIM所用时钟进行选择,可选择使用内部时钟或外部时钟,此处选择使用内部时钟,代码如下:
LPTIM_TimeBaseInitStruct.LPTIM_ClockSource = LPTIM_ClockSource_In;                //LPTIM使用内部时钟
若使用外部时钟,还需要对LPTIM计数有效边沿进行配置,可选上升沿、下降沿或双边沿;此外还需要对数字滤波器进行配置,代码如下:
LPTIM_TimeBaseInitStruct.LPTIM_ClockPolarity = LPTIM_ClockPolarity_Rising;        //上升沿用于计数
LPTIM_TimeBaseInitStruct.LPTIM_ClockSampleTime = LPTIM_ClockSampleTime_0T;        //外部时钟的可配置数字滤波器,任何外部时钟信号电平变化都被视为有效转换
LPTIM_TimeBaseInitStruct.LPTIM_TriggerSampleTime = LPTIM_TriggerSampleTime_0T;    //用于触发器的可配置数字滤波器,任何触发器的更改都被视为有效触发器
使用内部时钟时,可不对以上参数进行配置。
时钟分频系数的配置,可配置1、2、4、8、16、32、64、128分频,此处配置1分频,代码如下:
LPTIM_TimeBaseInitStruct.LPTIM_ClockPrescaler = LPTIM_TClockPrescaler_DIV1;       //配置时钟预分频系数,1分频
触发方式的配置,可选软件触发、上升沿触发、下降沿触发或双边沿触发,此处选择软件触发,代码如下:
LPTIM_TimeBaseInitStruct.LPTIM_ExTriggerPolarity = LPTIM_ExTriggerPolarity_Disable;  //软件触发,计数器启动由软件启动
超时功能配置,主要配置当计数器已启动时到达的触发事件被忽略还是重新启动计数器,此处配置忽略,代码如下:
LPTIM_TimeBaseInitStruct.LPTIM_TimeOut = DISABLE;                                    //超时启用,控制超时功能,计时器已启动时到达的触发事件被忽略
PWM输出波形极性配置,当配置为0,则如果计数器值大于比较器值比较结果为1,否则为0。 当配置为1,则如果计数器值大于比较器值比较结果为0,否则为1。 此处配置为0,代码如下:
LPTIM_TimeBaseInitStruct.LPYIM_OutputPolarity = LPYIM_OutputPolarity_High;  
寄存器更新模式配置,控制LPTIM_ARR和LPTIM_CMP寄存器更新是在每次PB总线写入访问后更新还是在当前LPTIM周期结束时更新,例程配置每次PB总线写入访问后更新寄存器,代码如下:
LPTIM_TimeBaseInitStruct.LPYIM_UpdateMode = LPYIM_UpdateMode0;                       //寄存器更新模式,控制 LPTIM_ARR 和 LPTIM_CMP 寄存器更新模式
计数器模式配置,选择LPTIM使用哪个时钟源为计数器计时,前面配置选择使用内部时钟,因此此处选择在每个内部时钟脉冲后递增。若是选择使用外部时钟,则配置当LPTIM外部输入每个有效脉冲后,计数器递增,代码如下:
LPTIM_TimeBaseInitStruct.LPTIM_CountSource = LPTIM_CountSource_Internal;             //计数器模式,选择 LPTIM 使用哪个时钟源为计数器计时,此处选择计数器在每个内部时钟脉冲后递增
编码器模式配置,此处关闭编码器模式,代码如下:
LPTIM_TimeBaseInitStruct.LPTIM_Encoder = DISABLE;                                    //关闭编码器模式
LPTIM计数器内部时钟源选择配置,此处选择PB1_CLK,代码如下:
LPTIM_TimeBaseInitStruct.LPTIM_InClockSource = LPTIM_InClockSource_PCLK1;            //LPTIM内部时钟源选择,选择来源于PB1_CLK
当选择外部时钟时,该位可不用配置。
强制PWM输出配置,可配置强制PWM输出高电平,此处配置强制PWM输出无效,代码如下:
LPTIM_TimeBaseInitStruct.LPTIM_ForceOutHigh = DISABLE;                               //强制PWM输出无效
使能开启PWM输出,配置在连续模式下启动,关闭外部触发计数使能,配置比较寄存器和自动重装载寄存器的值,代码如下:
LPTIM_TimeBaseInitStruct.LPTIM_PWMOut = ENABLE;                       //使能开启PWM波形输出
LPTIM_TimeBaseInitStruct.LPTIM_ContinuousMode = ENABLE;               //连续模式下启动

LPTIM_TimeBaseInitStruct.LPTIM_CounterDirIndicat = DISABLE;           //关闭外部触发计数方向使能
LPTIM_TimeBaseInitStruct.LPTIM_Pulse = cmp;                           //比较寄存器配置
LPTIM_TimeBaseInitStruct.LPTIM_Period = arr;                          //自动重装载寄存器配置
PWM输出波形如下:
程序中,选择内部时钟源PCLK1,重装载值为1000-1,比较寄存器值为500,则PWM输出的频率f=1/T=48MHz/1000=48KHz,与截图波形频率大小相符;占空比为50%,相符;脉宽与周期也相符;
选择内部时钟源HSI,波形如下:
重装载值为1000-1,比较寄存器值为500,则PWM输出的频率f=1/T=8MHz/1000=8KHz,与截图波形频率大小相符;占空比为50%,相符;脉宽与周期也相符;
选择内部时钟源LSE,波形如下:
重装载值为1000-1,比较寄存器值为500,则PWM输出的频率f=1/T=32.768KHz/1000=32.768Hz,与截图波形频率大小相符;占空比为50%,相符;脉宽与周期也相符;
选择内部时钟源LSI,波形如下:
重装载值为1000-1,比较寄存器值为500,则PWM输出的频率f=1/T=37KHz/1000=37Hz,与截图波形频率大小相符;占空比为50%,相符;脉宽与周期也相符。内部LSI的典型值为37KHz。
注意使用LSE和LSI作为内部时钟源时,要注意开启对应的时钟,且注意开启LSE时,要开启PWR和BKP时钟,要注意使能对后备寄存器的访问,配置如下图:
关于PWM输出极性的配置:
当重装载值设置为1000-1,比较寄存器值为300,PWM输出极性设置为高,即输出反映 LPTIM_ARR和LPTIM_CMP寄存器之间比较结果,波形如下:
即当计数器值小于比较寄存器值时,PWM输出波形为低电平,当计数器值大于比较寄存器值时,输出高电平;
当重装载值设置为1000-1,比较寄存器值为300,PWM输出极性设置为低,即输出反映 LPTIM_ARR和LPTIM_CMP寄存器之间比较结果的取反,波形如下:
即当计数器值小于比较寄存器值时,PWM输出波形为高电平,当计数器值大于比较寄存器值时,输出低电平;

单脉冲模式,代码如下:
/********************************** (C) COPYRIGHT *******************************
* File Name          : main.c
* Author             : WCH
* Version            : V1.0.0
* Date               : 2023/12/26
* Description        : Main program body.
*********************************************************************************
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
* Attention: This software (modified or not) and binary are used for
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
*******************************************************************************/

/*
*@Note
*USART Print debugging routine:
*USART1_Tx(PA9).
*This example demonstrates using USART1(PA9) as a print debug port output.
*
*/

#include "debug.h"

/* Global typedef */

/* Global define */

/* Global Variable */

/*********************************************************************
* @fn      LPTIM_Init
*
* [url=home.php?mod=space&uid=247401]@brief[/url]   LPTIM_Init.
*
* [url=home.php?mod=space&uid=266161]@return[/url]  none
*/
void LPTIM_Init(u16 cmp,u16 arr)
{
    GPIO_InitTypeDef            GPIO_InitStructure = {0};
    LPTIM_TimeBaseInitTypeDef   LPTIM_TimeBaseInitStruct = {0};

    RCC_PB1PeriphClockCmd(RCC_PB1Periph_LPTIM, ENABLE);
    RCC_PB2PeriphClockCmd(RCC_PB2Periph_GPIOB, ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

    LPTIM_Cmd(ENABLE);

    LPTIM_TimeBaseInitStruct.LPTIM_ClockSource = LPTIM_ClockSource_In;
    LPTIM_TimeBaseInitStruct.LPTIM_ClockPolarity = LPTIM_ClockPolarity_Rising;
    LPTIM_TimeBaseInitStruct.LPTIM_ClockSampleTime = LPTIM_ClockSampleTime_0T;
    LPTIM_TimeBaseInitStruct.LPTIM_TriggerSampleTime = LPTIM_TriggerSampleTime_0T;
    LPTIM_TimeBaseInitStruct.LPTIM_ClockPrescaler = LPTIM_TClockPrescaler_DIV1;

    LPTIM_TimeBaseInitStruct.LPTIM_ExTriggerPolarity = LPTIM_ExTriggerPolarity_Disable;
    LPTIM_TimeBaseInitStruct.LPTIM_TimeOut = DISABLE;
    LPTIM_TimeBaseInitStruct.LPYIM_OutputPolarity = LPYIM_OutputPolarity_High;
    LPTIM_TimeBaseInitStruct.LPYIM_UpdateMode = LPYIM_UpdateMode0;
    LPTIM_TimeBaseInitStruct.LPTIM_CountSource = LPTIM_CountSource_Internal;
    LPTIM_TimeBaseInitStruct.LPTIM_Encoder = DISABLE;
    LPTIM_TimeBaseInitStruct.LPTIM_InClockSource = LPTIM_InClockSource_PCLK1;
    LPTIM_TimeBaseInitStruct.LPTIM_ForceOutHigh = DISABLE;

    LPTIM_TimeBaseInitStruct.LPTIM_SingleMode = ENABLE;
    LPTIM_TimeBaseInitStruct.LPTIM_PWMOut = ENABLE;
    LPTIM_TimeBaseInitStruct.LPTIM_ContinuousMode = DISABLE;


    LPTIM_TimeBaseInitStruct.LPTIM_CounterDirIndicat = DISABLE;
    LPTIM_TimeBaseInitStruct.LPTIM_Pulse = cmp;
    LPTIM_TimeBaseInitStruct.LPTIM_Period = arr;

    LPTIM_TimeBaseInit( & LPTIM_TimeBaseInitStruct);
}


/*********************************************************************
* @fn      main
*
* @brief   Main program.
*
* @return  none
*/
int main(void)
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
    SystemCoreClockUpdate();
    Delay_Init();
    USART_Printf_Init(115200);
    printf("SystemClk:%d\r\n", SystemCoreClock);
    printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() );
    printf("This is printf example\r\n");

    LPTIM_Init(50,100);

    while(1)
    {
    }
}
程序中,相较于PWM输出模式,单脉冲模式程序中需要使能开启单脉冲模式,关闭连续模式,代码如下:
LPTIM_TimeBaseInitStruct.LPTIM_SingleMode = ENABLE;
输出波形如下:
单脉冲模式下,输出波形与第一个脉冲的 PWM 模式相似,然后永久复位。

一次设置模式,代码如下:
/********************************** (C) COPYRIGHT *******************************
* File Name          : main.c
* Author             : WCH
* Version            : V1.0.0
* Date               : 2023/12/26
* Description        : Main program body.
*********************************************************************************
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
* Attention: This software (modified or not) and binary are used for
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
*******************************************************************************/

/*
*@Note
*USART Print debugging routine:
*USART1_Tx(PA9).
*This example demonstrates using USART1(PA9) as a print debug port output.
*
*/

#include "debug.h"

/* Global typedef */

/* Global define */

/* Global Variable */

/*********************************************************************
* @fn      LPTIM_Init
*
* @brief   LPTIM_Init.
*
* @return  none
*/
void LPTIM_Init(u16 cmp,u16 arr)
{
    GPIO_InitTypeDef            GPIO_InitStructure = {0};
    LPTIM_TimeBaseInitTypeDef   LPTIM_TimeBaseInitStruct = {0};


    RCC_PB1PeriphClockCmd(RCC_PB1Periph_LPTIM, ENABLE);
    RCC_PB2PeriphClockCmd(RCC_PB2Periph_GPIOB, ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

    LPTIM_Cmd(ENABLE);

    LPTIM_TimeBaseInitStruct.LPTIM_ClockSource = LPTIM_ClockSource_In;
    LPTIM_TimeBaseInitStruct.LPTIM_ClockPolarity = LPTIM_ClockPolarity_Rising;
    LPTIM_TimeBaseInitStruct.LPTIM_ClockSampleTime = LPTIM_ClockSampleTime_0T;
    LPTIM_TimeBaseInitStruct.LPTIM_TriggerSampleTime = LPTIM_TriggerSampleTime_0T;
    LPTIM_TimeBaseInitStruct.LPTIM_ClockPrescaler = LPTIM_TClockPrescaler_DIV1;

    LPTIM_TimeBaseInitStruct.LPTIM_ExTriggerPolarity = LPTIM_ExTriggerPolarity_Disable;
    LPTIM_TimeBaseInitStruct.LPTIM_TimeOut = DISABLE;
    LPTIM_TimeBaseInitStruct.LPYIM_OutputPolarity = LPYIM_OutputPolarity_Low;
    LPTIM_TimeBaseInitStruct.LPYIM_UpdateMode = LPYIM_UpdateMode0;
    LPTIM_TimeBaseInitStruct.LPTIM_CountSource = LPTIM_CountSource_Internal;
    LPTIM_TimeBaseInitStruct.LPTIM_Encoder = DISABLE;
    LPTIM_TimeBaseInitStruct.LPTIM_InClockSource = LPTIM_InClockSource_PCLK1;
    LPTIM_TimeBaseInitStruct.LPTIM_ForceOutHigh = DISABLE;

    LPTIM_TimeBaseInitStruct.LPTIM_OnePulseMode = ENABLE;
    LPTIM_TimeBaseInitStruct.LPTIM_SingleMode = ENABLE;
    LPTIM_TimeBaseInitStruct.LPTIM_PWMOut = ENABLE;


    LPTIM_TimeBaseInitStruct.LPTIM_CounterDirIndicat = DISABLE;
    LPTIM_TimeBaseInitStruct.LPTIM_Pulse = cmp;
    LPTIM_TimeBaseInitStruct.LPTIM_Period = arr;

    LPTIM_TimeBaseInit( & LPTIM_TimeBaseInitStruct);
}
/*********************************************************************
* @fn      main
*
* @brief   Main program.
*
* @return  none
*/
int main(void)
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
    SystemCoreClockUpdate();
    Delay_Init();
    USART_Printf_Init(115200);
    printf("SystemClk:%d\r\n", SystemCoreClock);
    printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() );
    printf("This is printf example\r\n");

    LPTIM_Init(50,100);

    while(1)
    {
    }
}
程序中,需要使能开启一次设置模式和单脉冲模式,代码如下:
LPTIM_TimeBaseInitStruct.LPTIM_OnePulseMode = ENABLE;
LPTIM_TimeBaseInitStruct.LPTIM_SingleMode = ENABLE;
LPTIM_TimeBaseInitStruct.LPTIM_PWMOut = ENABLE;
输出波形如下:
一次设置模式下,输出波形与单脉冲模式相似,只是输出保持在最后一个信号电平(取决于输出配置的极性),程序配置输出极性为高,当配置输出极性为低时,波形如下:
CH32L103支持外部触发启动,可通过以下3种进行外部触发启动,在EVT提供了对应的例程,可以参考一下。
附件为例程所用例程,可以下载参考。


  

CH32L103 LPTIM.zip

2.55 MB

使用特权

评论回复
沙发
micoccd| | 2024-8-14 14:42 | 只看该作者
LPTIM的消耗电流是多少

3795666bc51b6d9ac7.png (2.28 KB )

3795666bc51b6d9ac7.png

使用特权

评论回复
板凳
tpgf| | 2024-10-8 13:39 | 只看该作者
在STOP模式下,由RTC唤醒MCU,LPTIM对外部脉冲进行计数

使用特权

评论回复
地板
磨砂| | 2024-10-8 16:48 | 只看该作者
stop方式适用于需要统计一段时间内外部脉冲数量的场景

使用特权

评论回复
5
晓伍| | 2024-10-8 17:52 | 只看该作者
可以选择触发模式,通过记录进入触发中断的次数来计算外部脉冲数

使用特权

评论回复
6
八层楼| | 2024-10-8 18:59 | 只看该作者
触发模式适用于需要实时响应外部脉冲的场景,但对功耗要求不高的情况

使用特权

评论回复
7
观海| | 2024-10-8 20:08 | 只看该作者
将外部脉冲作为LPTIM的时钟源,进行1分频,计数值可作为脉冲个数

使用特权

评论回复
8
guanjiaer| | 2024-10-8 21:09 | 只看该作者
在实际应用中,工程师需要综合考虑系统的性能、功耗和成本等因素,选择最适合的方案来实现LPTIM功能。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

26

帖子

0

粉丝