查看: 3508|回复: 3

【ATIM】PWM输出问题

[复制链接]

7

主题

20

帖子

267

积分

高级工程师

Rank: 3Rank: 3

积分
267
发表于 2022-12-6 14:21:29 | 显示全部楼层 |阅读模式
问题1:怎样使用ATIM单通道输出PWM(不要互补输出和死区插入这些功能)?参照[GPTIM PWM输出示例工程]来实现ATIM,发现不可行,但是使用GTIM定时器是没有问题的。不知道哪里的问题?代码如下:
  1. /*
  2. *   @brief  高级定时器输出PWM波
  3. *   @param  psc-预分频值 ,arr-重装载值,ccr-比较值
  4. *   @note   输出PWM波,此处不会用到中断
  5. */
  6. void ATM_PWMSingleInit(uint32_t psc,uint32_t arr,uint32_t ccr)
  7. {
  8.     //时基单元初始化
  9.     FL_ATIM_InitTypeDef ATIM_InitStruct;
  10.    
  11.     ATIM_InitStruct.clockSource = FL_RCC_ATIM_CLK_SOURCE_APB2CLK;//选择内部APB2时钟
  12.     ATIM_InitStruct.prescaler = psc - 1;
  13.     ATIM_InitStruct.counterMode = FL_ATIM_COUNTER_DIR_UP;
  14.     ATIM_InitStruct.autoReload = arr - 1;
  15.     ATIM_InitStruct.autoReloadState = FL_DISABLE;
  16.     ATIM_InitStruct.clockDivision = FL_ATIM_CLK_DIVISION_DIV1;
  17.     ATIM_InitStruct.repetitionCounter = 0;
  18.    
  19.     FL_ATIM_Init(ATIM,&ATIM_InitStruct);
  20.    
  21.     //引脚初始化
  22.     FL_GPIO_InitTypeDef    GPIO_InitStruct;
  23.     GPIO_InitStruct.pin = FL_GPIO_PIN_4;
  24.     GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
  25.     GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
  26.     GPIO_InitStruct.pull = FL_DISABLE;
  27.     GPIO_InitStruct.remapPin = FL_DISABLE;

  28.     FL_GPIO_Init( GPIOB, &GPIO_InitStruct );
  29.    
  30.     //通道初始化
  31.     FL_ATIM_OC_InitTypeDef    defaultInitStruct;
  32.    
  33.     defaultInitStruct.OCMode = FL_ATIM_OC_MODE_PWM1;
  34.     defaultInitStruct.OCFastMode = FL_DISABLE;
  35.     defaultInitStruct.OCPreload = FL_DISABLE;
  36.     defaultInitStruct.compareValue = ccr;
  37.     defaultInitStruct.OCPolarity = FL_ATIM_OC_POLARITY_NORMAL;
  38.     defaultInitStruct.OCETRFStatus = FL_DISABLE;
  39.    
  40.     defaultInitStruct.OCIdleState = FL_ATIM_OC_IDLE_STATE_HIGH;
  41.     defaultInitStruct.OCNIdleState = FL_ATIM_OC_IDLE_STATE_HIGH;
  42.     defaultInitStruct.OCNPolarity = FL_ATIM_OCN_POLARITY_NORMAL;
  43.     defaultInitStruct.OCNState = FL_DISABLE;
  44.     defaultInitStruct.OCState = FL_ENABLE;

  45.     FL_ATIM_OC_Init(ATIM,FL_ATIM_CHANNEL_1,&defaultInitStruct );
  46.    
  47.     FL_ATIM_Enable(ATIM);//启动高级定时器
  48. }
复制代码
问题2:若可以使用ATIM单通道输出PWM(不要互补输出和死区插入这些功能),那么互补输出通道ATIM_CH1N,ATIM_CH2N,ATIM_CH3N是否都可用做PWM输出?


回复

使用道具 举报

7

主题

20

帖子

267

积分

高级工程师

Rank: 3Rank: 3

积分
267
 楼主| 发表于 2022-12-9 09:59:46 | 显示全部楼层
FL_ATIM_EnableALLOutput(ATIM);

已解决
回复

使用道具 举报

6

主题

25

帖子

210

积分

高级工程师

Rank: 3Rank: 3

积分
210
发表于 2023-1-16 13:38:31 | 显示全部楼层
interFF 发表于 2022-12-9 09:59
FL_ATIM_EnableALLOutput(ATIM);

已解决

你好,请问不设置刹车和死区时间是如何使PWM输出的,我尝试给这些代码注释掉,发现PWM就无法输出了
回复

使用道具 举报

154

主题

846

帖子

4624

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4624
发表于 2023-1-17 13:56:03 | 显示全部楼层
sigerio 发表于 2023-1-16 13:38
你好,请问不设置刹车和死区时间是如何使PWM输出的,我尝试给这些代码注释掉,发现PWM就无法输出了 ...

简单的pwm输出,看例程demo就可以了。
回复

使用道具 举报

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

本版积分规则

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