分享

如何书写STM32的一个直流电机驱动?

 孔实 2017-08-02


同时要获取到如下一些东西:

1.1 电路板

1.2 芯片说明手册 ( 芯片寄存器手册  + 电路原理图)

2 如何我们要做的是直流电机的驱动

2.1 开直流电机的驱动原理 – 》 马达驱动  

2.2 探究一下驱动电路与主芯片的关系

实际观察发现,马达的控制端口接在了电路板的P4器件 

根据实际电路发现P4是我们点击的控制管脚

经过查询资料发现

结论:INPUTx与OUTx输入输出为正比关系

所以我们可以通过控制INPUTx来控制小车的移动

经过搜寻文档我们发现如下电路:

经过电路分析发现

结论: PA2与INPUT1成正比关系

而PA2就是主芯片上的管脚!

所以,我们有如下结论:

PA2 ? INPUT1 ? OUT1

PB9 ? INPUT1 ? OUT2

PA1 ? INPUT1 ? OUT3

PC9 ? INPUT1 ? OUT4

PA0 ? INPUT1 ? ENA

PA3 ? INPUT1 ? ENB

所以我们有如下结论:

PA2 PB9 PA1 PC9  方向  PA0  PA3

 1   0   1   0   后方   1    1

 0   1   0   1   前方 

 1   0   0   0   左边

 ....

硬件分析步骤已经完成以下是软件书写过程

我们首先通过STM32CubeMX来生成一些基础代码。请打开Cube软件进行如下选择:







然后配置为如下状态

之后点击工具栏中的 Proect ? Generate Code(注意在生成代码的时候选择 MDK-ARM V5)

然后我们在对应的路径下找到要编辑的main函数也就是单片机在运作时要运行的入口函数。在其中找到该函数中MX_GPIO_Init();

下书写如下代码:

//设置电机状态

  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,1);

  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,0);

  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,1);

  HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9,0);

  //设置电机使能状态

  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,1);

  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,1);  

然后在Keil中编译并稍写进入小车,查看情况。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多