你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【HAL库每天一例】第100例:28BYJ48步进电机旋转实现

[复制链接]
haohao663 提问时间:2016-8-22 08:50 /
【HAL库每天一例】系列例程从今天开始持续更新。。。。。
我们将坚持每天至少发布一个基于YS-F1Pro开发板的HAL库例程,
该系列例程将带领大家从零开始使用HAL库,后面会持续添加模块应用例程。
同样的,我们还程序发布基于HAL库的指导文档和视频教程,欢迎持续关注,并提出改进意见。

参考文档见:

硬石电机控制专题指导手册
例程下载:
资料包括程序、相关说明资料以及软件使用截图

百度云盘:https://pan.baidu.com/s/1slN8rIt 密码:u6m1
360云盘:http://yunpan.cn/OcPiRp3wEcA92u密码 cfb6
(硬石YS-F1Pro开发板HAL库例程持续更新\5. 软件设计之电机控制(HAL库版本)\步进电机.zip
/**
  ******************************************************************************
  *                           硬石YS-F1Pro开发板例程功能说明
  *
  *  例程名称: YSF1_HAL_MOTOR-001. 28BYJ48步进电机旋转实现
  *   
  ******************************************************************************
  * 说明:
  * 本例程配套硬石stm32开发板YS-F1Pro使用。
  *
  * 淘宝:
  * 论坛:硬石电子社区
  * 版权归硬石嵌入式开发团队所有,请勿商用。
  ******************************************************************************
  */

【1】例程简介
  步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机
的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加
一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误
差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。

【2】跳线帽情况
******* 为保证例程正常运行,必须拔掉以下跳线帽 **********
丝印编号     IO端口      目标功能引脚        出厂默认设置
  JP4        PG6           LED2               已接入           本例程需要拔掉
  JP5        PG7           LED3               已接入           本例程需要拔掉
  
【3】操作及现象
  将28BYJ-48步进电机插入到YS-F1Pro开发板上的CN18接口上。使用12V 2A适配器接在开
发板的DC接口为开发板供电。下载程序,待程序正常运行后步进电机不断旋转。

/******************* (C) COPYRIGHT 2015-2020 硬石嵌入式开发团队 *****END OF FILE****/
CubeMX_1.jpg
CubeMX_2.jpg

bsp_28BYJ48.h文件内容
  1. #ifndef __BSP_ULN2003_H__
  2. #define __BSP_ULN2003_H__

  3. /* 包含头文件 ----------------------------------------------------------------*/
  4. #include "stm32f1xx_hal.h"

  5. /* 类型定义 ------------------------------------------------------------------*/
  6. /* 宏定义 --------------------------------------------------------------------*/
  7. #define ULN2003_RCC_CLK_ENABLE()         __HAL_RCC_GPIOG_CLK_ENABLE()
  8. #define ULN2003_GPIO_PIN                 (GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9)
  9. #define ULN2003_GPIO_PORT                GPIOG

  10. #define A_ON                             HAL_GPIO_WritePin(ULN2003_GPIO_PORT,GPIO_PIN_6,GPIO_PIN_SET)
  11. #define A_OFF                            HAL_GPIO_WritePin(ULN2003_GPIO_PORT,GPIO_PIN_6,GPIO_PIN_RESET)
  12. #define B_ON                             HAL_GPIO_WritePin(ULN2003_GPIO_PORT,GPIO_PIN_7,GPIO_PIN_SET)
  13. #define B_OFF                            HAL_GPIO_WritePin(ULN2003_GPIO_PORT,GPIO_PIN_7,GPIO_PIN_RESET)
  14. #define C_ON                             HAL_GPIO_WritePin(ULN2003_GPIO_PORT,GPIO_PIN_8,GPIO_PIN_SET)
  15. #define C_OFF                            HAL_GPIO_WritePin(ULN2003_GPIO_PORT,GPIO_PIN_8,GPIO_PIN_RESET)
  16. #define D_ON                             HAL_GPIO_WritePin(ULN2003_GPIO_PORT,GPIO_PIN_9,GPIO_PIN_SET)
  17. #define D_OFF                            HAL_GPIO_WritePin(ULN2003_GPIO_PORT,GPIO_PIN_9,GPIO_PIN_RESET)

  18. /* 扩展变量 ------------------------------------------------------------------*/
  19. /* 函数声明 ------------------------------------------------------------------*/
  20. void ULN2003_GPIO_Init(void);

  21. #endif  // __BSP_ULN2003_H__

  22. /******************* (C) COPYRIGHT 2015-2020 硬石嵌入式开发团队 *****END OF FILE****/
复制代码

bsp_28BYJ48.c文件内容
  1. /**
  2.   ******************************************************************************
  3.   * 文件名程: bsp_28BYJ48.c
  4.   * 作    者: 硬石嵌入式开发团队
  5.   * 版    本: V1.0
  6.   * 编写日期: 2015-10-04
  7.   * 功    能: 步进电机底层驱动(ULN2003)程序
  8.   ******************************************************************************
  9.   * 说明:
  10.   * 本例程配套硬石stm32开发板YS-F1Pro使用。
  11.   *
  12.   * 淘宝:
  13.   * 论坛:http://www.ing10bbs.com
  14.   * 版权归硬石嵌入式开发团队所有,请勿商用。
  15.   ******************************************************************************
  16.   */

  17. /* 包含头文件 ----------------------------------------------------------------*/
  18. #include "StepMotor/bsp_uln2003.h"

  19. /* 私有类型定义 --------------------------------------------------------------*/
  20. /* 私有宏定义 ----------------------------------------------------------------*/
  21. /* 私有变量 ------------------------------------------------------------------*/
  22. /* 扩展变量 ------------------------------------------------------------------*/
  23. /* 私有函数原形 --------------------------------------------------------------*/
  24. /* 函数体 --------------------------------------------------------------------*/

  25. /**
  26.   * 函数功能: 板载ULN2003 IO引脚初始化.
  27.   * 输入参数: 无
  28.   * 返 回 值: 无
  29.   * 说    明:无
  30.   */
  31. void ULN2003_GPIO_Init(void)
  32. {
  33.    /* 定义IO硬件初始化结构体变量 */
  34.   GPIO_InitTypeDef GPIO_InitStruct;
  35.        
  36.         /* 使能(开启)端口时钟 */  
  37.   ULN2003_RCC_CLK_ENABLE();
  38.   
  39.   HAL_GPIO_WritePin(ULN2003_GPIO_PORT,ULN2003_GPIO_PIN,GPIO_PIN_RESET);
  40.   
  41.   /* 设定引脚IO编号 */
  42.   GPIO_InitStruct.Pin = ULN2003_GPIO_PIN;
  43.   /* 设定引脚IO为输出模式 */
  44.   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  45.   /* 设定引脚IO操作速度 */
  46.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  47.   /* 初始化引脚IO */
  48.   HAL_GPIO_Init(ULN2003_GPIO_PORT, &GPIO_InitStruct);
  49. }


  50. /******************* (C) COPYRIGHT 2015-2020 硬石嵌入式开发团队 *****END OF FILE****/
复制代码



收藏 评论3 发布时间:2016-8-22 08:50

举报

3个回答
stary666 回答时间:2016-8-22 10:42:17
linjianduxing 回答时间:2018-7-26 09:26:17
#define ULN2003_GPIO_PORT                GPIOG
linjianduxing 回答时间:2018-7-26 09:26:44
#define ULN2003_GPIO_PORT                GPIOG
这句定义该怎么理解啊 用什么用啊

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版