[技术问答] 新定义MCU开发板测评 + 驱动步进电机

[复制链接]
 楼主| yinwuqing110 发表于 2022-11-13 17:24 | 显示全部楼层 |阅读模式
<
本帖最后由 yinwuqing110 于 2022-11-13 17:38 编辑

       上期零代码体验了NBK-RD8x3x开发套件的触控效果,此次在新定义提供的demo中,直接采用Keil工具编写自己代码。官方提供的“易码魔盒”其实类似STM32的“STM32CubeMX”,图形界面配置,导出即可得到设计的源码工程。
       这里采用KeilC51的V5.27.1.0版本,能**还是尽量**,否则不支持编译生成大容量的hex文件,这里直接在Demo工程中调试。
KeilC51.png
  1. #include "SC_Init.h"        
  2. #include "SC_it.h"
  3. #include "..\Drivers\SCDriver_list.h"
  4. #include "HeadFiles\SysFunVarDefine.h"
  5. #include "motor.h"

  6. void main(void)
  7. {
  8.   SC_Init();
  9.   motor_init();
  10.   while(1)
  11.   {
  12.     P01=0;
  13.     motor_left_4(100000);
  14.     P01=1;
  15.     motor_left_4(100000);
  16.    }
  17. }
  1. #include "motor.h"
  2. #include "rd8_gpio.h"
  3. #include "HeadFiles\SysFunVarDefine.h"

  4. #define mtime 1

  5. void motor_off(void)
  6. {
  7.     GPIO_WriteLow(GPIO3, 0);
  8.     GPIO_WriteLow(GPIO3, 1);
  9.     GPIO_WriteLow(GPIO3, 2);
  10.     GPIO_WriteLow(GPIO3, 3);
  11. }

  12. int motor_init(void)
  13. {
  14.   GPIO_Init(GPIO3,0,GPIO_MODE_OUT_PP );
  15.   GPIO_Init(GPIO3,1,GPIO_MODE_OUT_PP );
  16.   GPIO_Init(GPIO3,2,GPIO_MODE_OUT_PP );
  17.   GPIO_Init(GPIO3,3,GPIO_MODE_OUT_PP );
  18.   motor_off();
  19.   return 0;
  20. }

  21. void motor_left_4(uint8_t speed)
  22. {
  23.     GPIO_WriteLow(3, 0);
  24.     Delay(mtime);
  25.     GPIO_WriteLow(3, 1);
  26.     Delay(mtime);
  27.     GPIO_WriteHigh(3, 2);
  28.     Delay(mtime);
  29.     GPIO_WriteHigh(3, 3);
  30.     Delay(speed);
  31.     GPIO_WriteLow(3, 1);
  32.     Delay(mtime);
  33.     GPIO_WriteLow(3, 2);
  34.     Delay(mtime);
  35.     GPIO_WriteHigh(3, 3);
  36.     Delay(mtime);
  37.     GPIO_WriteHigh(3, 0);
  38.     Delay(speed);
  39.     GPIO_WriteLow(3, 2);
  40.     Delay(mtime);
  41.     GPIO_WriteLow(3, 3);
  42.     Delay(mtime);
  43.     GPIO_WriteHigh(3, 0);
  44.     Delay(mtime);
  45.     GPIO_WriteHigh(3, 1);
  46.     Delay(speed);
  47.     GPIO_WriteLow(3, 3);
  48.     Delay(mtime);
  49.     GPIO_WriteLow(3, 0);
  50.     Delay(mtime);
  51.     GPIO_WriteHigh(3, 1);
  52.     Delay(mtime);
  53.     GPIO_WriteHigh(3, 2);
  54.     Delay(speed);
  55.     motor_off();
  56. }

  57. void motor_right_4(uint8_t speed)
  58. {
  59.     GPIO_WriteLow(3, 2);
  60.     GPIO_WriteLow(3, 3);
  61.     GPIO_WriteHigh(3, 0);
  62.     GPIO_WriteHigh(3, 1);
  63.     Delay(speed);
  64.     GPIO_WriteLow(3, 1);
  65.     GPIO_WriteLow(3, 2);
  66.     GPIO_WriteHigh(3, 3);
  67.     GPIO_WriteHigh(3, 0);
  68.     Delay(speed);
  69.     GPIO_WriteLow(3, 0);
  70.     GPIO_WriteLow(3, 1);
  71.     GPIO_WriteHigh(3, 2);
  72.     GPIO_WriteHigh(3, 3);
  73.     Delay(speed);
  74.     GPIO_WriteLow(3, 3);
  75.     GPIO_WriteLow(3, 0);
  76.     GPIO_WriteHigh(3, 1);
  77.     GPIO_WriteHigh(3, 2);
  78.     Delay(speed);
  79.     motor_off();
  80. }
       编译完成后,使用ISP工具下载到核心底板上,只听到五线四相步进电机不停地小抖,但并不能线性转动,如果说电压不够,换成了手机充电器直接给电机驱动器供电也是同样的现象,调节了各相的驱动时间也无效。一天一核酸不能少,今天就分享到这儿啦,后续有时间再研究研究。
五线四相步进电机.gif
sheflynn 发表于 2022-12-4 20:43 | 显示全部楼层
跟51单片机一样的吧。              
nomomy 发表于 2022-12-6 12:58 | 显示全部楼层
怎么驱动电机转的快一点呢。              
wilhelmina2 发表于 2022-12-6 14:29 | 显示全部楼层
这个单片机需要上拉电阻的吗?              
您需要登录后才可以回帖 登录 | 注册

本版积分规则

106

主题

1098

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部