资源简介
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 步进电机梯形加速算法\
相关资源
- stm32f407上的两个can发送和接收例程
- STM32 led 时钟
- STM32 2.4G通信例程
- 直流无刷电机方波驱动 stm32 例程代码
- STM32中文资料
- STM32蓝牙和串口程序
- STM32f103超声波模块例程
- stm32f103c8t6 4 oled.rar
- stm32f030 IAP Demo(原创)
- STM32基于rt_thread操作系统的SDHC卡文件
- 步进电机课程设计(个人设计)
- NRF24L01实现51与STM32双向通讯
- STM32F103 串口程序(完整版)
- stm32 ds18b20 温度传感器 测试通过
- stm32官方例程
- STM32F103定时器中断程序
- FPGA在步进电机驱动上的应用实例及代
- 步进电机protues仿真
- [免费]基于stm32f103ze 的OLED驱动代码
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- STM32定时器使用入门。看了这个程序会
- SIM908 SDIO FSMC STM32 FIFO
- STM32F103 CC2500完整驱动(模拟SPI)
- AD7606采集程序
- 单片机控制的步进电机正反转和加速
- stm32 用SPI 方式读写 SDHC
- stm32通过DMA方式采集ADC数据
- 意法半导体STM全系列微控制器STM32ST
- 6相12拍步进电机控制器
评论
共有 条评论