用stm32产生pwm信号控制步进电机,频率和占空比怎么弄啊,下面是我写的程序,怎么才能输出波形

#include "timer.h"

//PWM输出初始化
//arr:自动重装值
//psc:时钟预分频数
void PWM_Init(u16 arr,u16 psc)
{
//此部分需手动修改IO口设置
RCC->APB2ENR|=1<<11; //TIM1时钟使能

////////////////////////////////////////
GPIOA->CRH&=0XFFFF0FF0;//PA8 11 输出
GPIOA->CRH|=0X0000B00B;//复用功能输出

////////////////////////////////////////
TIM1->BDTR |=0xC0; //ARPE使能
TIM1->ARR=arr;//设定计数器自动重装值
TIM1->PSC=psc;//预分频器不分频

TIM1->CCMR1|=6<<4; //CH2 PWM2模式 CH1/2
TIM1->CCMR1|=1<<3; //CH2预装载使能

TIM1->CCMR2|=6<<12; //CH2 PWM2模式 CH3/4
TIM1->CCMR2|=1<<11; //CH2预装载使能

TIM1->CCER|=1<<0; //OC2 输出使能
TIM1->CCER|=1<<12; //OC2 输出使能

TIM1->CR1 |=0x80; //ARPE使能
TIM1->CR1|=0x01; //使能定时器1

TIM1->BDTR|=0x8000; //使能定时器1输出
}
主程序该怎么写啊

你这个是初始化程序,子程序可用定时器中断子程序细分SPWM,也可以PWM中断计数细分,定时器细分占用MCU资源少,PWM中断的话占用资源比较大但精度高。SPWM可以用查存放正弦波数组取得,也可以用内部数学函数产生,或者将正弦函数初始化调到数组再查表
温馨提示:答案为网友推荐,仅供参考
相似回答