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

查看: 1422|回复: 3

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

[复制链接]

122

主题

129

回帖

0

蝴蝶豆

论坛元老

最后登录
2019-5-28
发表于 2016-8-22 08:50:39 | 显示全部楼层 |阅读模式
【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****/
复制代码



回复

使用道具 举报

100

主题

3617

回帖

1

蝴蝶豆

论坛元老

最后登录
2020-12-8
发表于 2016-8-22 10:42:17 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

2

回帖

0

蝴蝶豆

新手上路

最后登录
2018-7-26
发表于 2018-7-26 09:26:17 | 显示全部楼层
#define ULN2003_GPIO_PORT                GPIOG
回复 支持 反对

使用道具 举报

0

主题

2

回帖

0

蝴蝶豆

新手上路

最后登录
2018-7-26
发表于 2018-7-26 09:26:44 | 显示全部楼层
#define ULN2003_GPIO_PORT                GPIOG
这句定义该怎么理解啊 用什么用啊
回复 支持 反对

使用道具 举报

关于 意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
st-img 微信公众号
st-img 手机版