OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10382|回复: 8

有没有用STM32 MINI开发板做步时电机控制的啊! 利用那些端口!

[复制链接]

13

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2011-7-2
在线时间
3 小时
发表于 2011-7-2 16:21:09 | 显示全部楼层 |阅读模式
版主,刚买了个STM32 MINI开发板想学习下步进电机的控制,要如何实现!! 有没有相关资料啊!!! 4相5线的28BYJ-48-5V带U2003驱动板
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-7-2 19:55:00 | 显示全部楼层
回复【楼主位】hpy6666:
---------------------------------
步进电机驱动资料,暂时没有哦.这个你可以找找其他人的资料参考下.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2011-7-2
在线时间
3 小时
 楼主| 发表于 2011-7-2 23:04:22 | 显示全部楼层
回复【2楼】正点原子:

---------------------------------
在网上找到一个刚好是这种步进电机的控制程序:但里面的商品与STM32103说的不一样!是否通用?请高手解读一下程序并对应开发板的端口号对应上,谢谢!!
   ? E0接IN1
    ? E1接IN2 
    ? E2接IN3
    ? E3接IN4 

*STM32 控制步进电机 28BYJ-48
*已有 91 次阅读  2011-05-09 15:23 
*选用的步进电机的型号为28BYJ-48(或MP28GA,5V,转速比1/64),驱动电路选用uln2003芯片的驱动板,其控制时序图如下:

*四相八拍:A->AB->B ->BC ->C ->CD ->D ->DA

*其A、B、C、D指的是uln2003芯片驱动板的1N1、1N2、1N3、1N4,波形在上表示有输入信号。

*此外至少需要4根杜邦线,还需提供一个5V的直流电源,接线方式如下:

*PE0接IN1
*  E1接IN2 
 * E2接IN3
 *  E3接IN4 
  * 5V电源(一个是地,一个是正)。


/***************************************************************************//**

 * @file: stm32_pio.h

 * @brief: STM32F1xx CoX IO eripheral Interface

 * @version: V1.0

 * @date: 28 Feb. 2011

 * @author: CooCox

*******************************************************************************/

#ifndef __STM_PIO_H

#define __STM_PIO_H



#include "cox_pio.h"



/***************************************************************************//**

 * Define STM32F1xx CoX IO Peripheral Interface

*******************************************************************************/

extern COX_PIO_PI pi_pio;



#endif
/***************************************************************************//**

 * @file: stm32_pio.c

 * @brief: STM32F1xx CoX PIO Peripheral Interface

 * @version: V1.0

 * @date: 28 Feb. 2011

 * @author: CooCox

 ******************************************************************************/

#include "stm32_pio.h"

#include "stm32f10x.h"





/***************************************************************************//**

 * @brief Get pointer to GPIO peripheral due to GPIO port

 * @param[in] portNum: Port Number value, should be in range from 0 to 6.

 * @return Pointer to GPIO peripheral
  * @brief得到指向GPIO周边由于GPIO端口
  
  *[]portNum * @param:港口数值,应在范围从0到6点。
  
  * @return指向GPIO周边

*******************************************************************************/

static GPIO_TypeDef* STM32_GetGPIO(uint8_t port)

{

    GPIO_TypeDef *pGPIO = COX_NULL;



    switch(port)

    {

        case 0: pGPIO = GPIOA; break;

        case 1: pGPIO = GPIOB; break;

        case 2: pGPIO = GPIOC; break;

        case 3: pGPIO = GPIOD; break;

        case 4: pGPIO = GPIOE; break;

        case 5: pGPIO = GPIOF; break;

        case 6: pGPIO = GPIOG; break;

        default: break;

    }



    return pGPIO;

}





/***************************************************************************//**

 * @brief Initializes the PIO peripheral

 * @param[in] pio: The specified peripheral

 * @return Result, may be:

 * -COX_ERROR: Error occurred, parameter is not supported

 * -COX_SUCCESS: Previous argument of the specified option
       * @brief初始化PIO周边
  
  *@param
  • pio:指定的周边
      
      * @return结果,可能是:
      
      * -COX_ERROR:错误发生、参数不支持
      
      * -COX_SUCCESS:先前参数的指定选项

    *******************************************************************************/

    static COX_Status STM32_PIO_Init (COX_PIO_Dev pio)

    {



        GPIO_TypeDef* pGPIO = COX_NULL;

        uint8_t port, pin;



        port = (pio >> 8) & 0xFF;

        pin = (pio >> 0) & 0xFF;



        pGPIO = STM32_GetGPIO(port);



        if(port >6 || port<0 || pin<0 || pin > 15)

            return COX_ERROR;



        /* Enable GPIO and AFIO clocks */

        switch(port)

        {

            case 0: RCC->APB2ENR |= (RCC_APB2ENR_IOPAEN | RCC_APB2ENR_AFIOEN); break;

            case 1: RCC->APB2ENR |= (RCC_APB2ENR_IOPBEN | RCC_APB2ENR_AFIOEN); break;

            case 2: RCC->APB2ENR |= (RCC_APB2ENR_IOPCEN | RCC_APB2ENR_AFIOEN); break;

            case 3: RCC->APB2ENR |= (RCC_APB2ENR_IOPDEN | RCC_APB2ENR_AFIOEN); break;

            case 4: RCC->APB2ENR |= (RCC_APB2ENR_IOPEEN | RCC_APB2ENR_AFIOEN); break;

            default: break;

        }

      return COX_SUCCESS;

    }





    /***************************************************************************//**

     * @brief Set direction (Input or Output)

     * @param[in] pio: The specified PIO peripheral

     * @param[in] dir: Direction, should be

     * -0: Input

     * -1: Output

     * @return Result, may be:

     * -COX_ERROR: Error occurred, parameter is not supported

     * -COX_SUCCESS: Previous argument of the specified option

    *******************************************************************************/

    static COX_Status STM32_PIO_SetDir(COX_PIO_Dev pio, uint8_t dir)

    {



        GPIO_TypeDef* pGPIO = COX_NULL;

        uint8_t port, pin;



        port = (pio >> 8) & 0xFF;

        pin = (pio >> 0) & 0xFF;



        pGPIO = STM32_GetGPIO(port);



        /* Direction is input:GPIO_Mode_IN_FLOATING */

        if(dir == 0){

            if(pin>7)

            {

                /* Configure the eight high port pins */

                pin = pin-8;

                /* MODE[1:0]=00 */

                pGPIO -> CRH &= ~(0x3 << (pin*4));

                /* CNF[1:0] =01 */

                pGPIO -> CRH &= ~(0x8 << (pin*4));

                pGPIO -> CRH |= (0x4 <<(pin*4));

            }



            else

            {

                /* Configure the eight low port pins */

                pGPIO -> CRL &= ~(0x3 << (pin*4));

                pGPIO -> CRL &= ~(0x8 << (pin*4));

                pGPIO -> CRL |= (0x4 << (pin*4));

            }

        }



        /* Direction is output:GPIO_Mode_Out_PP */

        else {

            if(pin>7)

            {

                pin = pin-8;

                /* MODE[1:0]=11 */

                pGPIO -> CRH |= (0x3 <<(pin*4));

                /* CNF[1:0] =00 */

                 pGPIO -> CRH &= ~(0xc <<(pin*4));

            }

            else

            {

                pGPIO -> CRL |= (0x3 << (pin*4));

                pGPIO -> CRL &= ~(0xc<<(pin*4));

            }

        }

        return COX_SUCCESS;

    }





    /******************************<span s 
    >
  • 回复 支持 反对

    使用道具 举报

    530

    主题

    11万

    帖子

    34

    精华

    管理员

    Rank: 12Rank: 12Rank: 12

    积分
    165540
    金钱
    165540
    注册时间
    2010-12-1
    在线时间
    2117 小时
    发表于 2011-7-2 23:30:30 | 显示全部楼层
    这个我就不太清楚了.你慢慢摸索吧.ouravr貌似有人对这个比较熟.你可以过去看看.
    我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
    正点原子STM32开发板购买店铺http://openedv.taobao.com
    正点原子官方微信公众平台,点击这里关注“正点原子”
    回复 支持 反对

    使用道具 举报

    530

    主题

    11万

    帖子

    34

    精华

    管理员

    Rank: 12Rank: 12Rank: 12

    积分
    165540
    金钱
    165540
    注册时间
    2010-12-1
    在线时间
    2117 小时
    发表于 2011-7-3 08:22:51 | 显示全部楼层
    我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
    正点原子STM32开发板购买店铺http://openedv.taobao.com
    正点原子官方微信公众平台,点击这里关注“正点原子”
    回复 支持 反对

    使用道具 举报

    33

    主题

    94

    帖子

    0

    精华

    中级会员

    Rank: 3Rank: 3

    积分
    246
    金钱
    246
    注册时间
    2011-5-18
    在线时间
    0 小时
    发表于 2011-7-13 15:50:39 | 显示全部楼层
    谁用步进电机的,和我联系QQ:402271219
    回复 支持 反对

    使用道具 举报

    14

    主题

    225

    帖子

    3

    精华

    高级会员

    Rank: 4

    积分
    623
    金钱
    623
    注册时间
    2014-7-8
    在线时间
    26 小时
    发表于 2014-9-13 23:27:11 | 显示全部楼层
    省赛的一个程序,同时驱动的两路步进电机,中断写的,excel里面有引脚分配,因为是大一第一次省赛,写的不好多包涵。

    金属探测.rar

    6.3 MB, 下载次数: 403

    回复 支持 反对

    使用道具 举报

    14

    主题

    225

    帖子

    3

    精华

    高级会员

    Rank: 4

    积分
    623
    金钱
    623
    注册时间
    2014-7-8
    在线时间
    26 小时
    发表于 2014-9-13 23:40:21 | 显示全部楼层
    对了,不是用带细分的,就是298
    回复 支持 反对

    使用道具 举报

    4

    主题

    10

    帖子

    0

    精华

    新手上路

    积分
    46
    金钱
    46
    注册时间
    2014-12-22
    在线时间
    0 小时
    发表于 2014-12-23 11:11:22 | 显示全部楼层
    回复【3楼】hpy6666:
    ---------------------------------
    哥们可不可以传个你写好的驱动啊,只要驱动28BYJ-48  +  uln2003的工程就可以了
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则



    关闭

    原子哥极力推荐上一条 /2 下一条

    正点原子公众号

    QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

    GMT+8, 2025-6-27 14:15

    Powered by OpenEdv-开源电子网

    © 2001-2030 OpenEdv-开源电子网

    快速回复 返回顶部 返回列表