芯查查logo
  • 物料选型
  • 数据服务
    1. 新产品
    2. 查替代
    3. 丝印反查
    4. 查品牌
    5. PCN/PDN
    6. 查方案
    7. 查代理
    8. 数据合作
  • 应用方案
  • SaaS产品
      SaaS产品
    1. 供应链波动监测预警
    2. 半导体产业链地图
    3. 智能BOM管家
    4. 解决方案
    5. 汽车电子
    6. 政府机构
    7. 数据API
  • 商城
  • 行业资讯
    1. 资讯
    2. 直播
  • 论坛社区
    1. 论坛
    2. 学习
    3. 测评中心
    4. 活动中心
    5. 积分商城
  • 查一下
正在使用账号登录iCEasy商城
聪聪哥哥
NUCLEO-U083RC学习历程8-低功耗定时器产生PWM

前言:最近对STM32U083的进行一个系统的学习,今天和大家分享一下低功耗定时器1的学习;

STM32U083存在基本定时器:定时器6,定时器7,高级定时器:定时器1和低功耗的定时器:UPLTime1等等,今天就和大家分享一下低功耗定时器的学习;

image.png

首先简单介绍一下低功耗的定时器:

STM32U083共计提供三个低功耗定时器,LPTIM1、LPTIM2和LPTIM3。这些定时器具有独立的时钟源,并可以在系统处于低功耗模式(如Stop模式)时保持运行状态,从而能够将系统从低功耗状态唤醒。

低功耗定时器的主要特性:

1、超低功耗:LPTIM因其设计上的优化,在低电压、低频率条件下运行时能够消耗极小的电流,这对于电池供电的设备尤为重要。

2、独立时钟源:LPTIM支持多种时钟源,包括内部LSE、LSI、HSI16或APB时钟,以及外部通过LPTIM输入的时钟。这种灵活性使得LPTIM能够适应不同的应用场景和需求。

3、丰富的配置选项:LPTIM提供了多种配置选项,如连续/一次性模式、软件/硬件输入触发器、可选的时钟源等。这些配置选项使得LPTIM能够生成满足各种需求的PWM波形。

4、PWM生成能力:通过配置LPTIM的相关寄存器,可以生成具有特定周期和占空比的PWM波形。这对于需要精确控制输出功率的应用场景非常有用。

低功耗定时器产成PWM的基本步骤:

1、选择ULP定时器:确定系统中支持ULP模式的定时器资源,并设置定时器为PWM工作模式。

2、配置定时器参数:配置定时器的计数器、比较寄存器以及相关的控制位,以使其能够按照预定的时钟源频率进行递增计数,并在特定计数值处触发状态切换。

3、确定PWM周期和占空比:通过设置定时器的预分频系数和计数上限(周期寄存器值)来确定PWM波形的周期。通过配置比较寄存器的值来确定占空比。

4、映射PWM输出通道:将ULP定时器的PWM输出通道映射到相应的GPIO引脚,并确保这些引脚被配置为复用功能模式。

5、启动定时器:启动ULP定时器并使能PWM输出。此时,定时器开始按照设定的参数进行计数,并在达到比较值时切换PWM输出状态,形成所需占空比的PWM波形。

三、STM32cube软件配置截图如下:

image.png

 

使用PB3引脚,作为PWM输出的引脚

image.png

四:软件最主要代码如下:

/**
  * @brief LPTIM1 Initialization Function
  * @param None
  * @retval None
  */
static void MX_LPTIM1_Init(void)
{

  /* USER CODE BEGIN LPTIM1_Init 0 */
	LPTIM_OC_ConfigTypeDef sConfig1 = {0};
  /* USER CODE END LPTIM1_Init 0 */

  /* USER CODE BEGIN LPTIM1_Init 1 */

  /* USER CODE END LPTIM1_Init 1 */
  hlptim1.Instance = LPTIM1;
  hlptim1.Init.Clock.Source = LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC;
  hlptim1.Init.Clock.Prescaler = LPTIM_PRESCALER_DIV1;
  hlptim1.Init.Trigger.Source = LPTIM_TRIGSOURCE_SOFTWARE;
  hlptim1.Init.Period = 10000;
  hlptim1.Init.UpdateMode = LPTIM_UPDATE_IMMEDIATE;
  hlptim1.Init.CounterSource = LPTIM_COUNTERSOURCE_INTERNAL;
  hlptim1.Init.Input1Source = LPTIM_INPUT1SOURCE_GPIO;
  hlptim1.Init.Input2Source = LPTIM_INPUT2SOURCE_GPIO;
  hlptim1.Init.RepetitionCounter = 0;
  if (HAL_LPTIM_Init(&hlptim1) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN LPTIM1_Init 2 */
  sConfig1.Pulse = 5000;
  sConfig1.OCPolarity = LPTIM_OCPOLARITY_HIGH;
  if (HAL_LPTIM_OC_ConfigChannel(&hlptim1, &sConfig1, LPTIM_CHANNEL_3) != HAL_OK)
  {
    Error_Handler();
  }

  if (HAL_LPTIM_PWM_Start(&hlptim1, LPTIM_CHANNEL_3) != HAL_OK)
  { 
    Error_Handler();
  }
  /* USER CODE END LPTIM1_Init 2 */

PWM测试效果如图所示:

image.png

每日打卡 开源社区
版块: 开发板测评与实战
2024/12/28 15:20
  • 举报
😁😂😃😄😅😆😉😊😋😌😍😏😒😓😔😖😘😚😜😝😞😠😡😢😣😤😥😨😩😪😫😭😰😱😲😳😵😷😸😹😺😻😼😽😾😿🙀🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎🙏✂✅✈✉✊✋✌✏✒✔✖✨✳✴❄❇❌❎❓❔❕❗❤➕➖➗➡➰🚀🚃🚄🚅🚇🚉🚌🚏🚑🚒🚓🚕🚗🚙🚚🚢🚤🚥🚧🚨🚩🚪🚫🚬🚭🚲🚶🚹🚺🚻🚼🚽🚾🛀Ⓜ🅰🅱🅾🅿🆎🆑🆒🆓🆔🆕
@好友

全部评论

加载中
游客登录通知
已选择 0 人
自定义圈子
移动
发布帖子
发布动态
发布问答
最新帖子
出于成本考量,怎样设计一块高效的PCB电路板?个人电子元器件管理系统USB-226-BRW大功率USB扩展器RA4M2-SENSOR+ADC采集工业位移传感器RA4M2-SENSOR+SCI(IIC)触屏测试
热门版块
查看更多
萤火工场
每日打卡
问型号
问技术
问行情
电子元器件
飞腾
开源硬件项目
机器人开源工坊
电子DIY

12

收藏

分享

微信扫码
分享给好友

评论