使用stm32cubemx生成:一、外设设置
1、设置时钟,设置需要pwm输出的引脚
2、设置pwm的模式
3、设置DMA模式
二、程序编写注意点
1、sin表与上面三设置一直,halfword=uint16_t
/* USER CODE BEGIN PV */
uint16_t spwm_table[20]={0x7,0x9,0xb,0xd,0xe,0xe,0xe,0xd,0xb,0x9,0x7,0x5,0x3,0x1,0x0,0x0,0x0,0x1,0x3,0x5};
/* USER CODE END PV */
2、使能pwm
HAL_TIM_PWM_Start_DMA(&htim1, TIM_CHANNEL_3,(uint32_t*)spwm_table,20);
3、pwm完成中断,可在中断中设置标志位,完成同步,例如不断累加,让程序知道目前再哪个相位上。
/* USER CODE BEGIN PFP */
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
{
//HAL_TIM_PWM_Stop_DMA(&htim1, TIM_CHANNEL_3);
}
/* USER CODE END PFP */
三、示波器效果
1、波形
2、频谱
|