393|2

12

帖子

0

TA的资源

一粒金砂(中级)

【NUCLEO-WB09KE评测】3、PWM控制LD3亮度 [复制链接]

目标

        STM3WB09xE有3个通用定时器(TIM2,TIM16,TIM17)

        Each general-purpose timer can be used to generate PWM outputs

        本次测试,利用TIM2实现PWM输出到通道3(PB2),控制LD3亮度。

一、配置

1、时钟配置

2.png

 

2、TIM2

3.png

 

选择CHANNEL3:PWM Generation CH3

Prescaler:63

Period:499

主频:64MHZ

64000000/(64*500)=2000hz

占空比:300/500=60%

3、GPIO

4.png

PB2的修改

二、程序

1、TIM2初始化

static void MX_TIM2_Init(void)
{

  /* USER CODE BEGIN TIM2_Init 0 */

  /* USER CODE END TIM2_Init 0 */

  TIM_ClockConfigTypeDef sClockSourceConfig = {0};
  TIM_OC_InitTypeDef sConfigOC = {0};

  /* USER CODE BEGIN TIM2_Init 1 */

  /* USER CODE END TIM2_Init 1 */
  htim2.Instance = TIM2;
  htim2.Init.Prescaler = 63;
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim2.Init.Period = 499;
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
  {
    Error_Handler();
  }
  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
  {
    Error_Handler();
  }
  if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
  {
    Error_Handler();
  }
  sConfigOC.OCMode = TIM_OCMODE_PWM1;
  sConfigOC.Pulse = 300;
  sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW;
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN TIM2_Init 2 */

  /* USER CODE END TIM2_Init 2 */
  HAL_TIM_MspPostInit(&htim2);

}
void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};
  if(htim->Instance==TIM2)
  {
  /* USER CODE BEGIN TIM2_MspPostInit 0 */

  /* USER CODE END TIM2_MspPostInit 0 */

    __HAL_RCC_GPIOB_CLK_ENABLE();
    /**TIM2 GPIO Configuration
    PB2     ------> TIM2_CH3
    */
    GPIO_InitStruct.Pin = GPIO_PIN_2;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_PULLUP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF3_TIM2;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

  /* USER CODE BEGIN TIM2_MspPostInit 1 */

  /* USER CODE END TIM2_MspPostInit 1 */
  }

}

2、修改TIM2 CH3占空比

//设置 TIM 通道 3 的占空比
//compare:比较值
void TIM_SetTIM2Compare3(uint32_t compare)
{
	//TIM2->CCR3=compare;
	__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_3, compare); // compare为新的占空比值

}

3、main中增加HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_3);//开启 PWM 通道 3

  MX_TIM2_Init();
  HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_3);//开启 PWM 通道 3

4、main while(1)中增加

调整占空比参数,改变占空比调节LD3亮度

  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		HAL_Delay(10);
		if(dir)led3pwmval++; //dir==1 led0pwmval 递增
		else led3pwmval--; //dir==0 led0pwmval 递减
		if(led3pwmval>300)dir=0; //led0pwmval 到达 300 后,方向为递减
		if(led3pwmval==0)dir=1; //led0pwmval 递减到 0 后,方向改为递增
		printf("led3pwmval:%d\r\n",led3pwmval);
		TIM_SetTIM2Compare3(led3pwmval);
		
  }

三、运行效果

WeChat_20240925104528

 

 

 

此帖出自RF/无线论坛

最新回复

赞!   详情 回复 发表于 2024-9-25 19:01

回复
举报

5773

帖子

6

TA的资源

版主

STM3WB09xE有3个通用定时器(TIM2,TIM16,TIM17)这个应该和普通芯片的控制模式是一样的,不过相对来说还是定时器比较少

此帖出自RF/无线论坛
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引


回复

113

帖子

1

TA的资源

一粒金砂(高级)

赞!

此帖出自RF/无线论坛

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
[下载]美国MSP430电子书(英文)

希望大家喜欢哈! 这本书的作者是个公共遥测工程师 大学用51,工作了用PIC,之后一个项目要求低功耗,所以又用了430。 29 ...

嵌入式工业以太网控制器的设计和应用

随着工业以太网的大规模应用,嵌入式的工业以太网系统也越来越多地渗入到了工控领域,以ColdFire微处理器和ARM处理器为硬件平台 ...

光谱仪器测量电路简介

这里介绍下光谱类仪器的测量电路 光谱类仪器包括多种化验常用的测量仪器,如等离子体发射光谱仪,分光光度计等。其中的原理大 ...

FPGA起步_硬件电路设计之可测试性设计

昨天看了eeworld的fpga调试小结,写得很好,但是他是从调试的角度来谈,我今天就从如何设计FPGA硬件电路板来谈谈自己的一些体会 ...

添加并美化SEED-EXP430F5529 LCD背光(TPS75105DSKR正常工作!)

在Ti申请的TPS75105DSKR器件今天到了! 花了点时间其焊接上了! 112980 为了测试TPS75105DSKR器件是否正常工作! 我自己添 ...

关于ADS1247温度转换与实际相差3-4℃

最近在测试TI的ADS1247芯片,以下是我的硬件原理图以及软件温度转换函数,寄存器相关函数都已验证并且读取没有问题: 520 ...

Printed Circuits Handbook 英文第七版分享

本帖最后由 jojoee 于 2021-1-25 21:50 编辑 523024 貌似这里没有,这是第七版英文版,azw3格式 也可自行下个NeatConve ...

高云FPGA开发板开箱

本帖最后由 littleshrimp 于 2021-12-8 18:13 编辑 之前买过2个高云的FPGA小板,对他家的FPGA印象深刻,之前的板子因为集成度 ...

拆了个国产医疗的B超机器,让我们来一探究竟

路过废品站看到一台屏幕坏的B超机器,目测了下这个屏幕坏是人为锤子故意损坏的,原因行内人士你懂的,搞坏了强制报废然后买新的 ...

开关频率怎么决定输出电压高低?

在我见到的某个除尘电源中,对开关管的开关频率决定输出电压,请问这个原理是什么?后来我用示波器看了一下波形,当开关频率比较 ...

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