STM32怎么输出六路频率和个数可控的PWM波形不要频繁中断的设置,因为还有其他程序要处理

STM32怎么输出六路频率和个数可控的PWM波形不要频繁中断的设置,因为还有其他程序要处理,第1张

STM32的定时器(基本定时器除外)自带编码器功能和PWM输出功能,一个定时器最多输出4路PWM,你用2个定时器就可以了。一般的电机控制多采用ADC采样摇杆电位器值为输入,用PWM做输出,不需要中断 *** 作。当然方法有很多种,要做的话需要你具体的情况去分析学习。

这个是那么的来的

正弦值是0~1,你把这个值乘以255,就是0~255

你的上面的值应该是0~180°分成了40分。所以第一个是sin0° 255,中间那个应该是sin 90° 255

void TIM_Configuration(void)//TIM 初始化函数

{

TIM_OCInitTypeDef TIM_OCInitStructure;//通道输出初始化结构

//TIM3初始化

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

//RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

TIM_TimeBaseStructureTIM_Period = 0xaaac; //周期0~FFFF

TIM_TimeBaseStructureTIM_Prescaler = 3; //时钟分频

TIM_TimeBaseStructureTIM_ClockDivision = 0; //时钟分割

TIM_TimeBaseStructureTIM_CounterMode = TIM_CounterMode_Up;//模式

TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //基本初始化

//TIM_ITConfig(TIM2, TIM_IT_CC4, ENABLE);//打开中断,中断需要这行代码

//TIM3通道初始化

TIM_OCStructInit(& TIM_OCInitStructure); //默认参数

TIM_OCInitStructureTIM_OCMode = TIM_OCMode_PWM1; //工作状态

TIM_OCInitStructureTIM_OutputState = TIM_OutputState_Enable; //设定为输出,需要PWM 输出才需要这

TIM_OCInitStructureTIM_Pulse = 0x2000; //占空长度

TIM_OCInitStructureTIM_OCPolarity = TIM_OCPolarity_High; //高电平

TIM_OC3Init(TIM2, &TIM_OCInitStructure); //通道初始化

TIM_Cmd(TIM2, ENABLE); //启动TIM3

}

TIM_TimeBaseStructureTIM_Period 这个周期,改变周期则改变频率,与时钟设置有关,

TIM_OCInitStructureTIM_Pulse 这个是占空比,

(以上需要包含合适的固件函数)

你只要做两个数组或一个静态变量,通过按键或其他触发方式,查数组或增减变量的方式改变F和D

你这个是初始化程序,子程序可用定时器中断子程序细分SPWM,也可以PWM中断计数细分,定时器细分占用MCU资源少,PWM中断的话占用资源比较大但精度高。SPWM可以用查存放正弦波数组取得,也可以用内部数学函数产生,或者将正弦函数初始化调到数组再查表

以上就是关于STM32怎么输出六路频率和个数可控的PWM波形不要频繁中断的设置,因为还有其他程序要处理全部的内容,包括:STM32怎么输出六路频率和个数可控的PWM波形不要频繁中断的设置,因为还有其他程序要处理、在用stm32做PWM输出时,经常可以看到如下所示的表,我想知道这个表里面的值怎么得到的、stm32怎样实现不同定时器产生不同频率的PWM波等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9872249.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存