[STM32C0] 【STM32C092RC 测评】+08 定时器1输出可变脉宽

[复制链接]
 楼主| 发表于 2025-5-23 16:51 | 显示全部楼层 |阅读模式
本帖最后由 聪聪哥哥 于 2025-5-23 16:54 编辑

今天对脉冲宽度进行测试:一:PWM脉宽知识分享:
PWM(脉冲宽度调制)的脉冲宽度是指在一个周期内信号处于高电平(或有效状态)的时间长度,通常用时间单位(如微秒μs、毫秒ms)或占空比(百分比)表示。以下是关键点解析:
脉冲宽度(Pulse Width):单个PWM周期中高电平的持续时间。
公式:
脉冲宽度=高电平时间周期总时间×100%(占空比形式)
脉冲宽度=周期总时间高电平时间​×100%(占空比形式)或直接以时间表示(例如2ms)。
占空比(Duty Cycle):脉冲宽度与周期的比值,反映高电平所占比例。
示例:
周期=10ms,高电平时间=3ms → 脉冲宽度=3ms,占空比=30%。
通过调整高电平时间(脉冲宽度)改变占空比,从而控制输出能量。
例如:
电机调速:增大脉冲宽度 → 占空比提高 → 电机转速加快。
LED调光:脉冲宽度减小 → LED亮度降低。
二:程序代码如下:
  1. void UpdataDutyData(int value)
  2. {

  3.   TIM_MasterConfigTypeDef sMasterConfig = {0};
  4.   TIM_OC_InitTypeDef sConfigOC = {0};        
  5.         
  6.   htim1.Instance = TIM1;
  7.   htim1.Init.Prescaler = 47;
  8.   htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
  9.   htim1.Init.Period = 999;
  10.   htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  11.   htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
  12.   if (HAL_TIM_OC_Init(&htim1) != HAL_OK)
  13.   {
  14.     Error_Handler();
  15.   }
  16.   sConfigOC.OCMode = TIM_OCMODE_PWM1;
  17.   sConfigOC.Pulse = 999 * value/100 ;
  18.   sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  19.   sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  20.   if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  21.   {
  22.     Error_Handler();
  23.   }

  24.         HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);

  25. }
上述代码在之前的的定时器2中被调用,如下所示:
  1. int tempdata = 0 ;
  2. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
  3. {
  4.   /* USER CODE BEGIN Callback 0 */

  5.   /* USER CODE END Callback 0 */

  6.   /* USER CODE BEGIN Callback 1 */
  7.   if (htim->Instance == TIM2) {
  8.   Time2point++;
  9.   if(Time2point >=1000)
  10.   {
  11.        Time2point = 0 ;
  12.        HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
  13.        //HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_9);
  14.        tempdata =tempdata + 5 ;
  15.        if(tempdata >=100)tempdata = 5 ;
  16.        UpdataDutyData(tempdata);
  17.     }
  18. }
三:实物测试如下:

如上图所示,基本的脉宽测试功能正常,可以制作一些小夜灯什么的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2025-5-26 16:52 来自手机 | 显示全部楼层
接个步进电机啥的,跑起来更有成就感
您需要登录后才可以回帖 登录 | 注册

本版积分规则

83

主题

219

帖子

1

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