[Cortex-M0技术交流] 第五批菜农学子---2012学习第三帖——直流电机控制

[复制链接]
2870|12
 楼主| jiangmituan_0 发表于 2012-3-3 21:30 | 显示全部楼层 |阅读模式
手头正好有点东西,简单做了个小车,接293D控制程序简单,只是跑个正方形,红外探测壁障还没弄。

  1. #include <stdio.h>
  2. #include "NUC1xx.h"
  3. #include "DrvGPIO.h"
  4. #include "DrvSYS.h"


  5. int main (void)
  6. {
  7. int i=0;
  8. int on=0;
  9. int dn=0;
  10.         UNLOCKREG();                                                                                                                 
  11.     SYSCLK->PWRCON.XTL12M_EN = 1;                                                                               

  12.     DrvSYS_Delay(5000);                                                                                                         
  13.         DrvGPIO_Open(E_GPA, 2, E_IO_OUTPUT);                //PA2-5连接293D分别控制左右两路电机                                       
  14.         DrvGPIO_Open(E_GPA, 3, E_IO_OUTPUT);                                                                 
  15.         DrvGPIO_Open(E_GPA, 4, E_IO_OUTPUT);                                                                 
  16.         DrvGPIO_Open(E_GPA, 5, E_IO_OUTPUT);
  17.         DrvGPIO_Open(E_GPB, 10, E_IO_OUTPUT);
  18.         DrvGPIO_Open(E_GPB, 15, E_IO_INPUT);                //key1做输入

  19.         DrvGPIO_ClrBit( E_GPB,10);                                        //关闭蜂鸣器
  20.                



  21. while(DrvGPIO_GetBit( E_GPB,15 )==1);                        //key1按下开始
  22. {}
  23.        
  24.                 DrvSYS_Delay(5000000);                                                         


  25.                

  26.                           DrvGPIO_SetPortBits( E_GPA,40);                 //直行  
  27.                            DrvSYS_Delay(1500000);
  28.                           DrvGPIO_SetPortBits( E_GPA,0);
  29.                            DrvGPIO_SetBit( E_GPB,10);                         //停止        蜂鸣器响
  30.                         DrvSYS_Delay(10000000);
  31.                           DrvGPIO_ClrBit( E_GPB,10);


  32.                     DrvGPIO_SetPortBits( E_GPA,36);                 //左转        90度
  33.                         DrvSYS_Delay(400000);
  34.                           DrvGPIO_SetPortBits( E_GPA,0);
  35.                            DrvGPIO_SetBit( E_GPB,10);                         //停止        蜂鸣器响
  36.                         DrvSYS_Delay(10000000);
  37.                         DrvSYS_Delay(10000000);
  38.                           DrvGPIO_ClrBit( E_GPB,10);

  39.                            DrvGPIO_SetPortBits( E_GPA,40);                 //直行
  40.                            DrvSYS_Delay(1500000);       
  41.                           DrvGPIO_SetPortBits( E_GPA,0);
  42.                            DrvGPIO_SetBit( E_GPB,10);                         //停止        蜂鸣器响
  43.                         DrvSYS_Delay(10000000);
  44.                         DrvSYS_Delay(10000000);
  45.                           DrvGPIO_ClrBit( E_GPB,10);

  46.                 DrvGPIO_SetPortBits( E_GPA,36);                 //左转        90度
  47.                         DrvSYS_Delay(400000);
  48.                           DrvGPIO_SetPortBits( E_GPA,0);
  49.                            DrvGPIO_SetBit( E_GPB,10);                         //停止        蜂鸣器响
  50.                         DrvSYS_Delay(10000000);
  51.                         DrvSYS_Delay(10000000);
  52.                           DrvGPIO_ClrBit( E_GPB,10);

  53.                           DrvGPIO_SetPortBits( E_GPA,40);                 //直行  
  54.                            DrvSYS_Delay(1500000);
  55.                           DrvGPIO_SetPortBits( E_GPA,0);
  56.                            DrvGPIO_SetBit( E_GPB,10);                         //停止        蜂鸣器响
  57.                         DrvSYS_Delay(10000000);
  58.                         DrvSYS_Delay(10000000);
  59.                           DrvGPIO_ClrBit( E_GPB,10);

  60.                     DrvGPIO_SetPortBits( E_GPA,36);                 //左转        90度
  61.                         DrvSYS_Delay(400000);
  62.                           DrvGPIO_SetPortBits( E_GPA,0);
  63.                            DrvGPIO_SetBit( E_GPB,10);                         //停止        蜂鸣器响
  64.                         DrvSYS_Delay(10000000);
  65.                         DrvSYS_Delay(10000000);
  66.                           DrvGPIO_ClrBit( E_GPB,10);

  67.                            DrvGPIO_SetPortBits( E_GPA,40);                 //直行
  68.                            DrvSYS_Delay(1500000);       
  69.                           DrvGPIO_SetPortBits( E_GPA,0);
  70.                            DrvGPIO_SetBit( E_GPB,10);                         //停止        蜂鸣器响
  71.                         DrvSYS_Delay(10000000);
  72.                         DrvSYS_Delay(10000000);
  73.                           DrvGPIO_ClrBit( E_GPB,10);

  74.                 DrvGPIO_SetPortBits( E_GPA,36);                 //左转        90度
  75.                         DrvSYS_Delay(400000);
  76.                           DrvGPIO_SetPortBits( E_GPA,0);
  77.                            DrvGPIO_SetBit( E_GPB,10);                         //停止        蜂鸣器响
  78.                         DrvSYS_Delay(10000000);
  79.                         DrvSYS_Delay(10000000);
  80.                           DrvGPIO_ClrBit( E_GPB,10);

  81.                        
  82.                

  83.                          DrvGPIO_SetPortBits( E_GPA,0);                       



  84. }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
xyz549040622 发表于 2012-3-4 06:24 | 显示全部楼层
介个不错,继续弄下去玩
Swallow_0322 发表于 2012-3-4 07:34 | 显示全部楼层
乡村男孩 发表于 2012-3-4 09:39 | 显示全部楼层
顶一个
dong_abc 发表于 2012-3-4 11:12 | 显示全部楼层
学生就是好,有空玩。
缥缈九哥 发表于 2012-3-4 11:17 | 显示全部楼层
开始以为 是直流无刷电机的。所以 进来 了,哈哈。
plc_avr 发表于 2012-3-4 12:29 | 显示全部楼层
顶一下,大叔的板子能自已跑了,呵呵。
plc_avr 发表于 2012-3-4 12:32 | 显示全部楼层
开始以为 是直流无刷电机的。所以 进来 了,哈哈。
缥缈九哥 发表于 2012-3-4 11:17

-----------------------
新唐不给力!有人做出来无刷电机驱动,只有原理图,没有源码,那个还是当版主的也没有开源.....连官网也看到这个无刷驱动了,光有图片能说明啥呢,比ST或PIC的差远了。人家可是只接全部开源啊。。。。。。。。
plc_avr 发表于 2012-3-4 12:40 | 显示全部楼层
如果不是新唐官方做的,官方可以给人家一定费用,直接将源码开源,这样的推广会更给力。否则太小气了。
缥缈九哥 发表于 2012-3-4 12:44 | 显示全部楼层
新唐的无刷电机的DEMO在我这。可是还没有要到例子。
中国的人品就是这样,懂那么一点东西就遮遮掩掩的,当作祖传秘方。中国的国情就是那么样。你一出来先进的东西,大家都只想着**想着盗版,产品刚出样品,还没有赚回开发投入费用就让别人大批低价量产赚走了。政策也没有版权保护,法律更是一纸空文管的只是无权无势的老百姓,法庭也只是特权阶层的舞台,谁有关系谁有钱就谁赢。谁按规则出牌,谁就输得很惨,谁老实谁就吃亏。。社会就是那么进步缓慢的了。。。
nongfuxu 发表于 2012-3-4 16:51 | 显示全部楼层
DrvGPIO_Open(E_GPA, 2, E_IO_OUTPUT);          //PA2-5连接293D分别控制左右两路电机        

首先鼓励LZ.
若LZ把函数名定义得更加贴切实际就更胜一筹了.
例: DrvMotor (  RightMotor,  On );
disixin 发表于 2012-3-5 09:21 | 显示全部楼层
meilidianzhi 发表于 2012-3-6 21:28 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

130

帖子

0

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