STM32开源闭环步进电机源程序

2020-07-29来源: 51hei关键字:STM32  开源  闭环步进电机

单片机源程序如下:

/* Define to prevent recursive inclusion -------------------------------------*/

#ifndef __STM32F0xx_HAL_CONF_H

#define __STM32F0xx_HAL_CONF_H


#ifdef __cplusplus

extern "C" {

#endif


#include "main.h"

/* Exported types ------------------------------------------------------------*/

/* Exported constants --------------------------------------------------------*/


/* ########################## Module Selection ############################## */

/**

  * @brief This is the list of modules to be used in the HAL driver

  */

#define HAL_MODULE_ENABLED  

/*#define HAL_ADC_MODULE_ENABLED   */

/*#define HAL_CRYP_MODULE_ENABLED   */

/*#define HAL_CAN_MODULE_ENABLED   */

/*#define HAL_CEC_MODULE_ENABLED   */

/*#define HAL_COMP_MODULE_ENABLED   */

/*#define HAL_CRC_MODULE_ENABLED   */

/*#define HAL_CRYP_MODULE_ENABLED   */

/*#define HAL_TSC_MODULE_ENABLED   */

/*#define HAL_DAC_MODULE_ENABLED   */

/*#define HAL_I2S_MODULE_ENABLED   */

/*#define HAL_IWDG_MODULE_ENABLED   */

/*#define HAL_LCD_MODULE_ENABLED   */

/*#define HAL_LPTIM_MODULE_ENABLED   */

/*#define HAL_RNG_MODULE_ENABLED   */

/*#define HAL_RTC_MODULE_ENABLED   */

/*#define HAL_SPI_MODULE_ENABLED   */

/*#define HAL_TIM_MODULE_ENABLED   */

/*#define HAL_UART_MODULE_ENABLED   */

/*#define HAL_USART_MODULE_ENABLED   */

/*#define HAL_IRDA_MODULE_ENABLED   */

/*#define HAL_SMARTCARD_MODULE_ENABLED   */

/*#define HAL_SMBUS_MODULE_ENABLED   */

/*#define HAL_WWDG_MODULE_ENABLED   */

/*#define HAL_PCD_MODULE_ENABLED   */

#define HAL_CORTEX_MODULE_ENABLED

#define HAL_DMA_MODULE_ENABLED

#define HAL_FLASH_MODULE_ENABLED

#define HAL_GPIO_MODULE_ENABLED

#define HAL_PWR_MODULE_ENABLED

#define HAL_RCC_MODULE_ENABLED

#define HAL_I2C_MODULE_ENABLED


/* ########################## HSE/HSI Values adaptation ##################### */

/**

  * @brief Adjust the value of External High Speed oscillator (HSE) used in your application.

  *        This value is used by the RCC HAL module to compute the system frequency

  *        (when HSE is used as system clock source, directly or through the PLL).  

  */

#if !defined  (HSE_VALUE)

  #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */

#endif /* HSE_VALUE */


/**

  * @brief In the following line adjust the External High Speed oscillator (HSE) Startup

  *        Timeout value

  */

#if !defined  (HSE_STARTUP_TIMEOUT)

  #define HSE_STARTUP_TIMEOUT    ((uint32_t)100)   /*!< Time out for HSE start up, in ms */

#endif /* HSE_STARTUP_TIMEOUT */


/**

  * @brief Internal High Speed oscillator (HSI) value.

  *        This value is used by the RCC HAL module to compute the system frequency

  *        (when HSI is used as system clock source, directly or through the PLL).

  */

#if !defined  (HSI_VALUE)

  #define HSI_VALUE    ((uint32_t)8000000) /*!< Value of the Internal oscillator in Hz*/

#endif /* HSI_VALUE */


/**

  * @brief In the following line adjust the Internal High Speed oscillator (HSI) Startup

  *        Timeout value

  */

#if !defined  (HSI_STARTUP_TIMEOUT)

#define HSI_STARTUP_TIMEOUT   ((uint32_t)5000) /*!< Time out for HSI start up */

#endif /* HSI_STARTUP_TIMEOUT */  


/**

  * @brief Internal High Speed oscillator for ADC (HSI14) value.

  */

#if !defined  (HSI14_VALUE)

#define HSI14_VALUE ((uint32_t)14000000) /*!< Value of the Internal High Speed oscillator for ADC in Hz.

                                             The real value may vary depending on the variations

                                             in voltage and temperature.  */

#endif /* HSI14_VALUE */


/**

  * @brief Internal High Speed oscillator for USB (HSI48) value.

  */

#if !defined  (HSI48_VALUE)

#define HSI48_VALUE ((uint32_t)48000000) /*!< Value of the Internal High Speed oscillator for USB in Hz.

                                             The real value may vary depending on the variations

                                             in voltage and temperature.  */

#endif /* HSI48_VALUE */


/**

  * @brief Internal Low Speed oscillator (LSI) value.

  */

#if !defined  (LSI_VALUE)

#define LSI_VALUE  ((uint32_t)40000)   

#endif /* LSI_VALUE */                      /*!< Value of the Internal Low Speed oscillator in Hz

                                             The real value may vary depending on the variations

                                             in voltage and temperature.  */

/**

  * @brief External Low Speed oscillator (LSI) value.

  */

#if !defined  (LSE_VALUE)

#define LSE_VALUE  ((uint32_t)32768)    /*!< Value of the External Low Speed oscillator in Hz */

#endif /* LSE_VALUE */     


#if !defined  (LSE_STARTUP_TIMEOUT)

  #define LSE_STARTUP_TIMEOUT    ((uint32_t)5000)   /*!< Time out for LSE start up, in ms */

#endif /* LSE_STARTUP_TIMEOUT */


/* Tip: To avoid modifying this file each time you need to use different HSE,

   ===  you can define the HSE value in your toolchain compiler preprocessor. */


/* ########################### System Configuration ######################### */

/**

  * @brief This is the HAL system configuration section

  */     

#define  VDD_VALUE                    ((uint32_t)3300) /*!< Value of VDD in mv */           

#define  TICK_INT_PRIORITY            ((uint32_t)0)    /*!< tick interrupt priority (lowest by default)  */            

                                                                              /*  Warning: Must be set to higher priority for HAL_Delay()  */

                                                                              /*  and HAL_GetTick() usage under interrupt context          */

#define  USE_RTOS                     0     

#define  PREFETCH_ENABLE              1              

#define  INSTRUCTION_CACHE_ENABLE     0

#define  DATA_CACHE_ENABLE            0

/* ########################## Assert Selection ############################## */

/**

  * @brief Uncomment the line below to expanse the "assert_param" macro in the

  *        HAL drivers code

  */

/* #define USE_FULL_ASSERT   1U */


/* ################## SPI peripheral configuration ########################## */


/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver

* Activated: CRC code is present inside driver

* Deactivated: CRC code cleaned from driver

*/


#define USE_SPI_CRC                     0U


/* Includes ------------------------------------------------------------------*/

/**

  * @brief Include module's header file

  */


#ifdef HAL_RCC_MODULE_ENABLED

#include "stm32f0xx_hal_rcc.h"

#endif /* HAL_RCC_MODULE_ENABLED */


#ifdef HAL_GPIO_MODULE_ENABLED

#include "stm32f0xx_hal_gpio.h"

#endif /* HAL_GPIO_MODULE_ENABLED */


#ifdef HAL_DMA_MODULE_ENABLED

  #include "stm32f0xx_hal_dma.h"

#endif /* HAL_DMA_MODULE_ENABLED */


#ifdef HAL_CORTEX_MODULE_ENABLED

#include "stm32f0xx_hal_cortex.h"

#endif /* HAL_CORTEX_MODULE_ENABLED */


#ifdef HAL_ADC_MODULE_ENABLED

#include "stm32f0xx_hal_adc.h"

#endif /* HAL_ADC_MODULE_ENABLED */


#ifdef HAL_CAN_MODULE_ENABLED

#include "stm32f0xx_hal_can.h"

#endif /* HAL_CAN_MODULE_ENABLED */


#ifdef HAL_CEC_MODULE_ENABLED

#include "stm32f0xx_hal_cec.h"

#endif /* HAL_CEC_MODULE_ENABLED */


#ifdef HAL_COMP_MODULE_ENABLED

#include "stm32f0xx_hal_comp.h"

#endif /* HAL_COMP_MODULE_ENABLED */


#ifdef HAL_CRC_MODULE_ENABLED

#include "stm32f0xx_hal_crc.h"

#endif /* HAL_CRC_MODULE_ENABLED */


#ifdef HAL_DAC_MODULE_ENABLED

#include "stm32f0xx_hal_dac.h"

#endif /* HAL_DAC_MODULE_ENABLED */


#ifdef HAL_FLASH_MODULE_ENABLED

#include "stm32f0xx_hal_flash.h"

#endif /* HAL_FLASH_MODULE_ENABLED */


#ifdef HAL_I2C_MODULE_ENABLED

#include "stm32f0xx_hal_i2c.h"

#endif /* HAL_I2C_MODULE_ENABLED */


#ifdef HAL

[1] [2]
关键字:STM32  开源  闭环步进电机 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic504700.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:stm32f103战舰v3OLED显示时间源程序
下一篇:Proteus仿真stm32f103实现SPI

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32F10X ADC原理详解(STM32F103ZET6)
STM32ADC的工作原理模/数转换器STM32F10x  ADC特点12位逐次逼近型的模拟数字转换器。最多带3个ADC控制器最多支持18个通道,可最多测量16个外部和2个内部信号源。支持单次和连续转换模式转换结束,注入转换结束,和发生模拟看门狗事件时产生中断。通道0到通道n的自动扫描模式自动校准采样间隔可以按通道编程规则通道和注入通道均有外部触发选项转换结果支持左对齐或右对齐方式存储在16位数据寄存器ADC转换时间:最大转换速率 1us。(最大转换速度为1MHz,在ADCCLK=14M,采样周期为1.5个ADC时钟下得到。)ADC供电要求:2.4V-3.6VADC输入范围:VREF- ≤  VIN 
发表于 2020-07-25
<font color='red'>STM32</font>F10X ADC原理详解(<font color='red'>STM32</font>F103ZET6)
STM32控制步进电机程序
、IN3:PC0、IN4:PC13、//步进电机初始化函数void Motor_Init(void){        GPIO_InitTypeDef GPIO_InitStructure;                RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//开启时钟                GPIO_InitStructure.GPIO
发表于 2020-07-25
<font color='red'>STM32</font>控制步进电机程序
基于IAR环境下STM32F103单片机读取BME280程序
自己编写的基于IAR环境下STM32F103单片机读取BME280程序,没有太多的寄存器操作,简单易懂,可以直接调用,上电后只要对IO口初始化,调用函数Bme_ReadDigValue()读取校准寄存器参数并保存,再调用函数Bme_Init()初始化之后就可以用函数Bme_ReadStatus()读取传感器状态判断是否读取数据了,也可不判断传感器状态直接读取数据,读取数据直接调用函数ReadBme280()。单片机源程序:void ReadBme280(){        u32 value_ad;        double var1; 
发表于 2020-07-25
STM32步进伺服电机梯形加速源程序 单轴简易运动控制器
步进电机梯形加速程序单片机源程序如下:/*基于STM32的单轴简易运动控制器/脉冲发生器*//*脉冲+方向控制步进伺服电机*//*优化记录:增加急停GPIOC.0、正向极限GPIOC.1、负向极限GPIOC.2等输入IO接点中断修改TIMx_PSC一个寄存器的值,而不是修改TIMx_ARR预加载寄存器+TIMx_CCRx比较值寄存器两个值,缩短中断处理时间定位指令DRVI/DRVA中,目标频率设定过高、而实际输出脉冲数过少时,则不必加速到目标频率即进入减速区*//*DRVI(A);相对定位,输出A(A取绝对值)个脉冲A不能为0若A为正数,则方向为正、GPIOB.0为高电平若A为负数,则方向为负、GPIOB.0为低电平DRVA
发表于 2020-07-25
STM32实现ADS1256进行数据电压采集程序
通过cubeMX配置STM32RCT6的IO口与ads1256ADC模块的连接IO口工作模式SPI,还有接受中断接受状态引脚,最终ADC采集数据经过卡尔曼滤波器滤波输出单片机源程序如下:#include "ads1256.h"int32_t adcVaule = 0x00;float voltage = 0x00;float filterVoltage = 0.0;float filterVoltage2 = 0.0;void delayXus(uint16_t us) {    uint16_t diff = 0xffff - 5 - us;    //设置定时器的计数
发表于 2020-07-25
基于WiFi的网络授时时钟(带实时天气更新)STM32程序设计
本方案采用的是MCU+AT指令的形式开发,MCU是大家比较熟悉的意法半导体公司STM32F103C8T6,WiFi模块使用的是安信可ESP-12F,本方案是一个Demo设计,比较简单,仅实现了功能,算是一个抛砖引玉吧!先上视频演示:https://v.youku.com/v_show/id_XN ... m=a2hzp.8244740.0.0WiFi模块资料链接:wiki点ai-thinker点com/esp8266STM32F103C8芯片资料链接:https://www.stmicroelectronics.c ... 103c8.html#overview硬件部分,由时钟电路+WiFi模块+MCU最小系统+OLED
发表于 2020-07-25
基于WiFi的网络授时时钟(带实时天气更新)<font color='red'>STM32</font>程序设计
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved