找回密码
 注册
关于网站域名变更的通知
查看: 408|回复: 2
打印 上一主题 下一主题

MSP430F5529lp避障小车

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-9-28 13:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
这是我用MSP430F5529lp写的避障小车程序,用了两个红外避障,跑起来感觉还行,里面用到了库函数,5529的库函数也分享出来了。
7 d& z. A3 J/ F! g0 @4 j3 H单片机源程序如下:; W# G1 C3 x9 l6 s, t8 ]
#include <msp430.h>2 x, T* j6 ~, b2 s) @# e  }' a2 B
#include<msp430f5529.h>. |, r; T& U5 q2 u; R* a& U# H4 q
#include <USER/driverlib.h>
) c2 y7 w) s( p/ B$ v) P  s#include "USER/gpio.h"
0 U; C$ w: M3 |6 s#define CPU_F ((double)8000000)   //外部高频晶振8MHZ% }! o/ g' S, N5 e* j. I: r
#define delay_us(x) __delay_cycles((long)x)
8 |& N6 n. v( i' d4 p#define delay_ms(x) __delay_cycles((long)(x*1000.0)); }' Q5 ^1 r; H- \% c
) ?; D0 Y' ?8 O0 ^8 \2 R
/**5 H; b+ g/ ]  M7 w0 r, i
* main.c
# y0 l0 c) R5 T*/3 O* g8 K6 h6 Z& J& D9 n8 E0 r
void stop(void)//停车$ c6 q# E) j; Q
{1 j8 q0 K( G5 z9 X* M
    TA0CCR1=800;
5 q# }$ _# G" \4 I6 P    TA0CCR2=800;
. g) P7 o# A+ {" s- y+ @: [7 |    TA0CCR3=800;
  i9 F# d) \4 q    TA0CCR4=800;& E- x/ N* {1 B( c" s8 }- \
    }
7 i/ F2 n5 I; a$ X# K. S. ?! Y3 H; D8 qvoid go(void)//前进5 ?' q$ N+ x( y$ a
{
; _: A3 _5 b' B; A' L  Y    TA0CCR1=800;+ \4 e8 u5 o# F& H- a$ y9 \. w: f! G
    TA0CCR2=600;
$ [2 {5 T* `( A3 z. e. A4 G0 H  J( Q3 q    TA0CCR3=800;8 Y6 A! g1 i3 W4 Z* x2 Y+ ^
    TA0CCR4=600;
1 T9 k7 U" o/ u! y" M) }. q! J1 Z# t    }" w" `5 g# A2 U% S3 S
void tui(void)//后退
: Z' U3 K7 |( C' |{4 y: g$ s( I3 y( x
    TA0CCR1=600;
! y/ x0 Q! {, Z  ]  z: p/ {) z    TA0CCR2=800;5 t- L9 T0 i7 ]
    TA0CCR3=600;1 E- ~" P" h& j2 W; @6 s5 \1 ]
    TA0CCR4=800;' z) `$ k/ R2 o
    }/ j5 o7 K  t, u: J3 ^, G  f
void zuo(void)//左转% Y6 }! W* G* K& p5 f4 }. a
{  }& V0 e  N* @
    TA0CCR1=800;+ h4 H3 U3 N+ U
    TA0CCR2=700;. _4 z3 V8 ~& M6 c6 v
    TA0CCR3=800;4 I; J' X$ g4 K$ @
    TA0CCR4=600;# z, |. j* i9 _  H4 l8 t
    }
9 L. m7 a4 Y- X+ {void you(void)//右转5 P6 m; P, ~# z. r
{
: K$ K, ?6 O4 k9 a' H; C2 S    TA0CCR1=800;
, g- K5 n& p& v: [5 o0 D. Q+ Q    TA0CCR2=600;
- T- m6 o- x8 u1 K1 G% v    TA0CCR3=800;
/ w, C0 u/ [) N  x: ]; z4 h1 b( A    TA0CCR4=700;' B3 X& g" m( G0 `7 G5 b8 w
    }
1 f" J7 `3 @* T! Xvoid zuo1(void)//大幅度左转
* j+ d0 f4 U1 \" U9 b{
6 K* `: b6 f$ Y    TA0CCR1=800;" L, i3 K/ V/ J2 k# Q0 w
    TA0CCR2=800;' Z' }1 x( q5 L+ p
    TA0CCR3=800;' X$ H0 e5 a9 u
    TA0CCR4=550;" n2 N. p- Y& {. q4 V
    }6 t- z( U& s9 S) L9 w! W. w
void you1(void)//大幅度右转6 W& R& R* y6 Z  Y% x
{
  v8 |0 F) p; b- ]% n    TA0CCR1=800;
5 X3 q' R5 f* @( L    TA0CCR2=550;" `6 ?9 G2 M7 K
    TA0CCR3=800;  j+ t; o3 l1 ^5 C$ Y2 [( ?; G
    TA0CCR4=800;
3 X- K/ J2 _+ @& E0 Y  _/ c    }9 j! b- v( }$ i! m8 v8 l. F% U+ n
! q) x2 S# S4 w- R1 \
void bizhang(void)
; D# s/ c1 M0 a1 p8 C{) t5 s' e0 U5 `) V! A3 E! K% e
    GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN1);
1 ?4 X. ^( @2 J2 k! a    GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN2);; I* y1 E* p/ z& e& P
    if(GPIO_INPUT_PIN_HIGH==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN1)&&GPIO_INPUT_PIN_HIGH==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN2))//都没有检测到障碍
$ O& S# T, K# N" w. U    {) I* V1 Q% v" H0 c" J% A$ L" E
        go();% Q! z5 z/ B( s' I! G* a
    }
4 c+ J! Y8 k4 b    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN1) && GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN2))//同时检测到障碍. ]# Z) B8 j$ Q3 H
        {, t* Q2 |/ {! w! H9 }) m! O
            stop();
- T! A% M2 ]$ g            delay_ms(1000);
& v4 B( H7 c2 p) I$ F5 C            tui();
' z/ {/ t* H# y1 ]0 p1 x! ?            delay_ms(2000);
( X% b" g; ?! B            you();* @2 t& r: z. _
            delay_ms(1200);, h% G4 t) b9 z% f' J" A1 g4 m! i* }; T
            go();
4 ]$ M) o" j# o& o$ ^
' L: @' K; L& K- K, M4 S        }# l) E- }! ^! r1 m5 v1 |
    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN1))//P4.1检测到障碍(左检测到障碍)1 O1 R2 ~; B  D; G- B; k6 s
   {
7 e3 Z1 B. A( X' i( W8 W       zuo1();1 U) G1 a5 i+ o
        delay_ms(800);
. r2 l$ i/ i; _# ]. \2 B7 w        go();
, c, m0 [4 M! O) P3 b( t4 \    }
" {5 x) P4 e: @% b) M    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN2))//P4.2检测到障碍(右检测到障碍)' ]8 v/ f4 e+ C  a' w
    {9 r* K+ L' s1 E$ R2 U7 x4 a
         you1();5 ]8 J7 v0 P. G
        delay_ms(800);
8 e. x; u# u% x; Z' w; s        go();
/ V$ B5 B; C: c3 f    }$ g: }) u6 Y) R1 q
    else stop();
6 l2 K" m" q- e
, e. x0 B6 M9 |% Y: c% I% |}1 u5 h/ V; r; T* g6 q& l$ ^

) |- _# L6 t( l1 z2 t+ aint main(void)
* b1 C/ i# s7 J# m  ]. V6 ?; i$ [{
* ]* y' J( v7 |' G$ o" e     bizhang();
0 |* {) A) L  G- |& Q$ `    WDTCTL = WDTPW + WDTHOLD;   // 关闭看门狗, z. e; {. G, c; a1 }+ d2 A
    P1SEL|=(BIT2+BIT3+BIT4+BIT5);
' F# x  M/ S0 ^$ T2 G    P1DIR|=(BIT2+BIT3+BIT4+BIT5);5 v+ O6 T0 ^7 P; B, o4 M+ v! b2 i. J
    P1OUT&=~(BIT2+BIT3+BIT4+BIT5);+ {5 h0 ^- D9 c$ c* X, L# g
! c# y5 p, n) @1 p) F' t& f4 |
    GPIO_setAsInputPin (GPIO_PORT_P4, GPIO_PIN1);; z0 j: b' i, F4 F
    GPIO_setAsInputPin (GPIO_PORT_P4, GPIO_PIN2);& E/ R+ {% F1 q4 M" }# Z8 l

" q: U# \. k+ N+ c& N    TA0CCR0=1000;8 r/ F/ w9 A; C9 w
    TA0CCTL1=OUTMOD_7;5 `1 @* F3 i. S, _! c" X
    TA0CCTL2=OUTMOD_7;
5 T5 N# c# k. i) [2 {    TA0CCTL3=OUTMOD_7;$ d, z' M: Y9 q7 t
    TA0CCTL4=OUTMOD_7;
- [8 L. [+ D: a8 h  Y4 M( z9 V5 Z. @) M. h) R' L
    TA0CTL=TASSEL_2+MC_1;' C$ m& T/ n8 k: M

4 ]2 |0 O6 Y# `! J7 z    while(1)
1 l: X! x) `; ~" M6 `1 E3 W    {6 G, ^4 V+ G8 t% L2 l: s; S: z+ A
        bizhang();
/ H' Y; j& W. {- W4 K4 b$ Q+ R, |    }( g& T1 h+ s+ d+ [3 N) P

1 G$ y! m: h% A6 i8 \' b- Z2 w}
& Y8 i; ~4 \$ a

9 C( s4 ~, k; _% r

该用户从未签到

2#
发表于 2021-9-28 14:26 | 只看该作者
路径是怎么设置的
$ y& l9 X, l. `$ K# k  l. P3 ?

该用户从未签到

3#
发表于 2021-9-28 16:47 | 只看该作者
学习了  感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-6 23:22 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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