|
问题1:怎样使用ATIM单通道输出PWM(不要互补输出和死区插入这些功能)?参照[GPTIM PWM输出示例工程]来实现ATIM,发现不可行,但是使用GTIM定时器是没有问题的。不知道哪里的问题?代码如下:- /*
- * @brief 高级定时器输出PWM波
- * @param psc-预分频值 ,arr-重装载值,ccr-比较值
- * @note 输出PWM波,此处不会用到中断
- */
- void ATM_PWMSingleInit(uint32_t psc,uint32_t arr,uint32_t ccr)
- {
- //时基单元初始化
- FL_ATIM_InitTypeDef ATIM_InitStruct;
-
- ATIM_InitStruct.clockSource = FL_RCC_ATIM_CLK_SOURCE_APB2CLK;//选择内部APB2时钟
- ATIM_InitStruct.prescaler = psc - 1;
- ATIM_InitStruct.counterMode = FL_ATIM_COUNTER_DIR_UP;
- ATIM_InitStruct.autoReload = arr - 1;
- ATIM_InitStruct.autoReloadState = FL_DISABLE;
- ATIM_InitStruct.clockDivision = FL_ATIM_CLK_DIVISION_DIV1;
- ATIM_InitStruct.repetitionCounter = 0;
-
- FL_ATIM_Init(ATIM,&ATIM_InitStruct);
-
- //引脚初始化
- FL_GPIO_InitTypeDef GPIO_InitStruct;
- GPIO_InitStruct.pin = FL_GPIO_PIN_4;
- GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
- GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
- GPIO_InitStruct.pull = FL_DISABLE;
- GPIO_InitStruct.remapPin = FL_DISABLE;
- FL_GPIO_Init( GPIOB, &GPIO_InitStruct );
-
- //通道初始化
- FL_ATIM_OC_InitTypeDef defaultInitStruct;
-
- defaultInitStruct.OCMode = FL_ATIM_OC_MODE_PWM1;
- defaultInitStruct.OCFastMode = FL_DISABLE;
- defaultInitStruct.OCPreload = FL_DISABLE;
- defaultInitStruct.compareValue = ccr;
- defaultInitStruct.OCPolarity = FL_ATIM_OC_POLARITY_NORMAL;
- defaultInitStruct.OCETRFStatus = FL_DISABLE;
-
- defaultInitStruct.OCIdleState = FL_ATIM_OC_IDLE_STATE_HIGH;
- defaultInitStruct.OCNIdleState = FL_ATIM_OC_IDLE_STATE_HIGH;
- defaultInitStruct.OCNPolarity = FL_ATIM_OCN_POLARITY_NORMAL;
- defaultInitStruct.OCNState = FL_DISABLE;
- defaultInitStruct.OCState = FL_ENABLE;
- FL_ATIM_OC_Init(ATIM,FL_ATIM_CHANNEL_1,&defaultInitStruct );
-
- FL_ATIM_Enable(ATIM);//启动高级定时器
- }
复制代码 问题2:若可以使用ATIM单通道输出PWM(不要互补输出和死区插入这些功能),那么互补输出通道ATIM_CH1N,ATIM_CH2N,ATIM_CH3N是否都可用做PWM输出?
|
|