OpenEdv-开源电子网

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

【新手求助】如何将arduino程序移植到STM32

[复制链接]

3

主题

6

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2015-9-28
在线时间
4 小时
发表于 2015-11-23 21:08:49 | 显示全部楼层 |阅读模式
5金钱
 主要是关于蓝牙串口通信 接收 输出不同占空比的PWM波

下面是Arduino的程序

#include <WM.h>
#include <CDS5500.h>
#include "pins_arduino.h"
CDS5500 SERVO;
int32_t frequency=15000;
int leftpwm=12,leftb1=24,leftb2=25;
int rightpwm=11,righta1=22,righta2=23;    //
char x=0,b=0;
int speed1=50,speed2=100,speed3=150,speedi,speedj;
void setup()
{ int i;
  InitTimersSafe();
  bool success=SetPinFrequencySafe(leftpwm,frequency);
  bool success1=SetPinFrequencySafe(rightpwm,frequency); 
  pinMode(leftpwm, OUTPUT);
  pinMode(rightpwm, OUTPUT);
  pinMode(righta1, OUTPUT);
  pinMode(righta2, OUTPUT);
  pinMode(leftb1, OUTPUT); 
  pinMode(leftb2, OUTPUT);
  Serial1.begin(9600);
  Serial.begin (115200);
}
void motor(int j,int i,int rspeed,int lspeed)        //
{
  if(i==0) 
  {
    digitalWrite(leftb1, 1);
    digitalWrite(leftb2, 0);
  }
  else
  {
    digitalWrite(leftb1, 0);
    digitalWrite(leftb2, 1);
  }
  if(j==0)
  {
    digitalWrite(righta1, 1);
    digitalWrite(righta2, 0);
  }
  else
  {
    digitalWrite(righta1, 0);
    digitalWrite(righta2, 1);
  }
  pwmWrite(rightpwm,rspeed);
  pwmWrite(leftpwm,lspeed);
 
}
void loop()
{ //dipan
if(x=='0')
{motor(0,0,0,0);
speedi=speed1;
speedj=speed1;
}
 if(x=='2')
 {if(speedi<speed3)
 speedi=speedi+1;
 delay(3);
 motor(0,1,speedi,speedi);
 }
 else if(x=='3')
 {
   if(speedj<speed3)
   speedj=speedj+1;
   delay(3);
   motor(1,0,speedj,speedj);
 
 }
 else if(x=='4')
 {motor(0,1,speed1,speed1);
 speedi=speed1;
speedj=speed1;
}
 
 else if(x=='5')
 {
   motor(1,0,speed1,speed1);
   speedi=speed1;
speedj=speed1;
 }
 else if(x=='6')
 {motor(0,1,speed2,speed1);
 speedi=speed1;
speedj=speed1;}
 else if(x=='7')
 {motor(0,1,speed1,speed2);
 speedi=speed1;
speedj=speed1;}
 else if(x=='8')
 {motor(0,0,speed3,speed3);
 delay(210);
 x='0';}
 else if(x=='9')
 {motor(1,1,speed3,speed3);
 delay(210);
 x='0';
 }
 //shangbanshen

if(x!=b)
{  if(x=='b')

  SERVO.WritePos(1,512,1023);
  delay(2);
  SERVO.WritePos(2,418,1023);
  delay(2);
  SERVO.WritePos(3,488,1023);
  delay(2);
  SERVO.WritePos(4,512,1023);
  delay(2);
  SERVO.WritePos(5,524,1023);
  delay(2);
  SERVO.WritePos(6,450,1023);
  delay(2);
 }
 else if(x=='1')
 {
 SERVO.WritePos(1,788,1023);
  delay(2);
  SERVO.WritePos(2,418,1023);
  delay(2);
  SERVO.WritePos(3,488,1023);
  delay(2);
  SERVO.WritePos(4,227,1023);
  delay(2);
  SERVO.WritePos(5,524,1023);
  delay(2);
  SERVO.WritePos(6,450,1023);
  delay(2);
 }
 else if(x=='a')
 {
 SERVO.WritePos(1,208,1023);
  delay(2);
  SERVO.WritePos(2,418,1023);
  delay(2);
  SERVO.WritePos(3,488,1023);
  delay(2);
  SERVO.WritePos(4,838,1023);
  delay(2);
  SERVO.WritePos(5,524,1023);
  delay(2);
  SERVO.WritePos(6,450,1023);
 delay(2);
 }
 }
 b=x;
 }
void serialEvent1() 
{
   x=Serial1.read();
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-11-23 22:15:49 | 显示全部楼层
回复

使用道具 举报

2

主题

239

帖子

0

精华

高级会员

Rank: 4

积分
545
金钱
545
注册时间
2015-6-5
在线时间
110 小时
发表于 2015-11-24 11:41:04 | 显示全部楼层
重寫吧

兩間不同公司出的

尤其Arduino是Atmel主打的創意產品 是以他們的MCU為基底開發出來的IDE
以簡單易用為出發點 重新封裝
讓你可以腦殘的使用他
回复

使用道具 举报

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2015-9-3
在线时间
24 小时
发表于 2016-5-14 11:47:48 | 显示全部楼层
楼主使用的是CDs5500舵机吗?想要拿32写一个控制它的程序,可是很不理想,可以分享一下你的程序吗?邮箱1543320422@qq.com谢谢
回复

使用道具 举报

10

主题

254

帖子

0

精华

高级会员

Rank: 4

积分
594
金钱
594
注册时间
2015-10-17
在线时间
145 小时
发表于 2016-5-14 14:44:27 | 显示全部楼层
主要看你移花接木的水平了
开着单片机翱翔在天空
回复

使用道具 举报

10

主题

254

帖子

0

精华

高级会员

Rank: 4

积分
594
金钱
594
注册时间
2015-10-17
在线时间
145 小时
发表于 2016-5-14 14:45:27 | 显示全部楼层
主要看你移花接木的水平了
开着单片机翱翔在天空
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 11:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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