资源简介
STM32控制步进电机匀加速匀减速,修改宏定义就可以控制起始频率,目标频率,加速时间和加速次数。
代码片段和文件信息
#include “stepmotor.h“
#if STEP_MOTOR
StepMotorAddSpeed MotorAddSpeed;
/*******************************************************************************
* 定时器4初始化函数
*
*函数名:void TIM5_Int_Init(u16 arru16 psc)
*
*形参: arr 预装载值
psc 分频系数
*
*返回值: 无
*
*
*******************************************************************************/
void TIM4_Int_Init(u16 arru16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimebaseInitTypeDef TIM_TimebaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4 ENABLE); //使能定时器3时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO ENABLE); //使能GPIO外设和AFIO复用功能模块时钟
//设置该引脚为复用输出功能输出TIM4 CH3的PWM脉冲波形 GPIOB.8
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //TIM_CH2
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB &GPIO_InitStructure); //初始化GPIO
//初始化TIM4
TIM_TimebaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
TIM_TimebaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值
TIM_TimebaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
TIM_TimebaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
TIM_TimebaseInit(TIM4 &TIM_TimebaseStructure); //根据TIM_TimebaseInitStruct中指定的参数初始化TIMx的时间基数单位
//初始化TIM3 Channel2 PWM模式
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式2
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高
TIM_OC3Init(TIM4 &TIM_OCInitStructure); //根据T指定的参数初始化外设TIM3 OC2
TIM_OC3PreloadConfig(TIM4 TIM_OCPreload_Enable); //使能TIM3在CCR2上的预装载寄存器
// TIM_Cmd(TIM4 ENABLE); //使能TIM4
}
u32 PluseNum = 0;
/*******************************************************************************
* 步进电机初始化
*
*函数名:void MotorInit(void)
*
*形参: 无
*
*返回值: 无
*
*
*******************************************************************************/
void MotorInit(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOD ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14|GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOE &GPIO_InitStructure);
GPIO_ResetBits(GPIOEGPIO_Pin_14|GPIO_Pin_15);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB &GPIO_InitStructure);
GPIO_SetBits(GPIOBGPIO_Pin_11);
GPIO_ResetBits(GPIOBGPIO_Pin_10);
MF = 0;
DIR = 1;
DE = 0;
TIM3_Int_Init(1000-1); //计算PWM波的脉冲来进入中断
TIM4_Int_Init(100071); //1Mhz.1ms一个10us的脉冲 步进电机的脉冲必须大于2.5us
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-04-15 20:57 步进电机梯形加速算法\MOTOR_B\
文件 11512 2019-04-15 21:03 步进电机梯形加速算法\MOTOR_B\stepmotor.c
文件 2293 2019-04-15 17:47 步进电机梯形加速算法\MOTOR_B\stepmotor.h
文件 786542 2019-04-11 23:25 步进电机梯形加速算法\几种步进电机加减速方法的对比研究及其应用.pdf
文件 1838596 2019-04-11 20:22 步进电机梯形加速算法\基于AT91SAM9261的步进电机S曲线_加减速控制研究与实现.pdf
文件 664839 2019-04-11 23:25 步进电机梯形加速算法\基于S曲线的步进电机加减速的控制.pdf
目录 0 2019-04-15 21:17 步进电机梯形加速算法\
相关资源
- 高级定时器TIM1 四个通道输出不同频率
- LD3320语音模块STM32
- stm32f103 RT_Thread lwip移植步骤说明
- 基于STM32单片机的智能浇水系统.pdf
- 电子-复件实验15RTC模拟指针时钟实验
- STM32L0x1参考手册.pdf
- STM32通过串口HC05蓝牙控制LED的源码
- STM32的SPI通信总结(含DMA).pdf
- STM32 多路超声波程序亲测好用
- 基于STM32的万用表代码
- STM32程序使用VS1053和2401做对讲机
- 基于STM32的远程视频传输实现
- MPU6050姿态解算STM32源码卡尔曼滤波
- mpu6050程序 stm32
- STM32F103+HMC5883L
- STM32DS18B20程序
- 基于STM32光电编码器测速
- freemodbus RTU移植stm32过程代码
- stm32读取ADXL345加速度传感器数据IIC协
- IAP——STM32官网USART例程——编译直接
- STM32F蓝牙超声波避障小车
- F103单定时器4路任意频率PWM输出实验
- STM32F103驱动DHT22温湿度传感器、BH175
- 抢答器.rar
- stm32麦轮小车源码
- STM32F103超精准步进电机定角oled显示角
- TFTLCD实时绘制曲线曲线动态更新
- wenshidushangweiji.rar
- STM32F103ZET6通过max30102模块简单测试心
- 基于STM32单片机的DHT11数字传感器代码
评论
共有 条评论