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

DSP28335的GPIO使用

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
GPIO通常用来做普通的输入输出,比如按键啊,LED啊,或者芯片的片选段之类的,算是最基本的操作。
6 Z3 E2 c" c+ t. b) r5 R9 |话不多说,直接上 代码+注释 记录一下,以备以后使用
; Q0 R% z8 m0 B我用的板子是研旭实用板; q/ {- X1 h' q
6 R, k. l4 ]2 T/ K8 D- G# S
led.c
& b: `/ C4 K6 }+ Q/ y#include "led.h": U1 _3 K1 U9 @! h; Y, t, P
//LED和蜂鸣器初始化
* r( a5 `) p" U# R5 T# m! I  e0 Bvoid Led_Gpoi_Init(void)- d5 y% r5 w$ r0 Z! r
{: ~* C2 m7 s: {/ @, n
EALLOW;+ c0 k" R8 @" R* `
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0; // GPIO0复用为GPIO功能; c6 v# S& u6 `6 A
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;  // GPIO0设置为输出$ u0 C4 ~: t8 M& B
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0; // GPIO1 = GPIO1
3 S0 \2 p' N2 q7 V- K  h, M3 T0 R1 uGpioCtrlRegs.GPADIR.bit.GPIO1 = 1;  //GPIO0设置为输出1 d! p: z2 [# I: i8 [* p! _
GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0; //配置同上4 O0 v1 \. c; h7 Y
GpioCtrlRegs.GPADIR.bit.GPIO6 = 1;& y5 A' @7 T9 l; W9 {- ]
GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 0; //4 q+ K7 m$ \. K5 j( H& U
GpioCtrlRegs.GPADIR.bit.GPIO7 = 1;
% b( L- X# S; v/ F3 G) mGpioCtrlRegs.GPBMUX2.bit.GPIO60 = 0; //蜂鸣器GPIO设置,GPIO60复用为GPIO功能
9 P/ d0 d1 g8 G% ]       GpioCtrlRegs.GPBDIR.bit.GPIO60 = 1;  //设置为输出# ]% c9 Z5 n5 h4 `( X# l8 r# G( a
        LED1 = 1;  LED2 = 1;  LED3 = 1;  LED4 = 1;BUZZ_OFF
# T- y0 E: Q) K) x$ v' P: P3 c- OEDIS;
( j; j- T6 ~% q}1 ^: ]# E; O" P& e6 X5 x  `8 X- O8 g
9 y0 K+ {) [) y. h8 y9 c' a
led.h
/ _* W. K1 I' c1 G3 i#ifndef LED_H_
) C( A: Q( _: D- t) Q0 o; n#define LED_H_
8 R9 Q, S5 X2 X: W3 \! g1 P  N- n9 c4 T, K1 I8 G
#include "main.h"9 l( g  H6 T6 T* V$ @  X$ r" U, y
8 E: Q4 B+ D5 e8 _
//根据原理图,低电平LED亮
. F2 M- t. S& f: a+ [; j  f#define  LED3  GpioDataRegs.GPADAT.bit.GPIO0   //宏定义LED的数据寄存器5 o7 {6 P) ]1 }# D4 ~, I  N1 O- V
#define  LED4  GpioDataRegs.GPADAT.bit.GPIO1% H6 `, j! \/ d6 S. H  J
#define  LED1  GpioDataRegs.GPADAT.bit.GPIO6
2 x, V+ n" D! M8 F' h#define  LED2  GpioDataRegs.GPADAT.bit.GPIO7
% x- |5 C( f8 v* \: _
1 l$ G8 V2 y, ]0 f. ^* ?) ?9 H2 c#define  BUZZ_OFFGpioDataRegs.GPBSET.bit.GPIO60=1; //蜂鸣器不鸣叫8 v" s7 c) B# y& o3 u: S
#define  BUZZ_ONGpioDataRegs.GPBCLEAR.bit.GPIO60=1;//蜂鸣器鸣叫7 y) k  ^6 \% y8 m

8 j3 q; A! ^% Y+ M  v' r7 i2 |void Led_Gpoi_Init(void);
: j6 R+ w2 ]9 r/ V( x9 M: M
. I7 V6 ~  y) [#endif /* LED_H_ */
' f) V5 \; @7 J0 t# u: P9 m, f& F: D: A: z3 Y5 d
key.c' ~7 G0 n# `0 z0 K) P3 x7 u! h& _
#include "key.h"
5 k/ Z, l4 ?) x$ u: {; C//按键IO口初始化
5 h+ ?8 N5 Y* J; c2 `void Key_Gpoi_Init(void)9 f; h$ w4 @/ ^9 i) m2 ~3 k
{( n! ^2 ]% X- L% J' v
EALLOW;, N+ e- X6 m' [0 w
GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 0;//按键GPIO设置,GPIO13复用为GPIO功能
) K" B" b" }' u6 @3 g1 p  RGpioCtrlRegs.GPADIR.bit.GPIO13 = 0;  //设置为输入
! O$ ?# Q/ C9 B0 CEDIS;
/ Q( l2 _# A' W2 |3 m& r. R. x& p0 x}/ T4 D! n/ e( ]/ @3 c* q
  Y% W: _' J$ a8 I/ v

8 v: L3 i2 b( E) s+ Du8 KeyScan(void)3 u( M" J2 ?& d1 }
{) E; _5 G' x1 c' r  W
static u8 key_up=1;//按键按松开标志
) T5 }" \$ s3 Y
* L9 o8 ]+ _4 U; P/ P0 q" S! B' Y2 ~) s
    if( key_up&&(KEY0==0) )  //有键按下 ||KEY1==0||KEY2==0)5 }7 a3 v6 N& y- K; ]7 Z
{9 K: P+ }# e) d  r# v+ h% _$ I
       DELAY_US(10000);//去抖动7 k. t$ q4 Z1 u1 W3 w! {5 k, K3 z
  key_up=0;     //表示按键没松开+ x  M* `4 I9 [. r
  if(KEY0==0)    //按下KEY0
8 t% p% f$ [1 _0 ]$ m  {
' y  F3 V7 }4 G+ T4 r# {  return 1;
( F  y8 c) b5 i+ m3 x+ [4 H6 ]  }. K  }. G) A- G( a; L* P! ]% G
//   else if(KEY1==0)
0 S) W, I* }8 M! l, I" E0 L: ?//   {return 2;}1 W7 F7 G; w2 w/ ~
//   else if(KEY2==1)
" h+ e7 {, \) F# `0 t6 }- h3 }' t) w//   {return 3;}}' v: ^& D: h+ ^# `- J
}, d1 K4 O- z$ T
    else if(KEY0==1)key_up=1;  //&&KEY1==1&&KEY2==1没有键按下: o9 q" o8 I8 \- R' P, C8 ?
   return 0;// 无按键按下+ j' I! m$ d  @$ K8 [3 m5 z& @
}( v  m: Y" t$ P- N# N3 R& V
0 Y+ J/ [$ k/ y% l$ M
key.h5 ]6 \5 ~  U; q% `# _8 _3 r6 E8 C
#ifndef KEY_H_
( l- f8 d) p/ w) V# D#define KEY_H_: F* m0 @  r+ y$ n# k
#define KEY0  GpioDataRegs.GPADAT.bit.GPIO13
: u+ F1 E' N: c. _#include "main.h". r/ \& r" V6 f7 {, E

7 @6 k8 o, r( c9 f* L/ Hvoid Key_Gpoi_Init(void);
4 I9 m' X: l/ i  E. f: Ku8 KeyScan(void);
1 c' x( A2 K. n/ n) a
  b3 g( u' X8 C- e1 X2 b1 z6 a#endif /* KEY_H_ */  r& `; l9 O; Y, ~3 o7 W
- C% w. ?4 x9 ?. W7 z: l. K$ h
MAIN.C
. B# F/ _: s7 ?void main(void)
7 y: }& x  q- A  X- q! L{8 U# Z! K! R- l/ f& ^: N8 D, F
    u8 key=0;   ; f$ u7 W3 D% D4 r3 E
//初始化1 w+ [( Y5 `* a* }/ p
     InitSysCtrl(); //初始化系统时钟到150M,关看门狗,开启外设时钟1 L0 ]# R; y9 @
     InitGpio();    // 初始化GPIO到复位状态8 G2 b3 _) {" b5 M

8 K- F# I+ I( F" Z- T4 B    DINT;              //关闭CPU中断- v( X: V* x+ E# |
    InitPieCtrl();
1 e$ H, I$ Y% A! m    IER = 0x0000;) q8 [$ h; s, C# i! L. L
    IFR = 0x0000;% B5 P! [9 S! Y; E( [& r3 @- c
    InitPieVectTable();  //初始化中断向量表
1 v' a" P' H0 j0 |
* F% v; `9 r1 i/ L/ |1 S    //外设配置/ r8 K& u) y9 }, B
    Led_Gpoi_Init();   //led端口初始化
4 M! L2 `/ ?/ n5 S0 s/ U    Key_Gpoi_Init(); //按键IO初始化6 F7 g) n6 Q2 e6 d/ a+ Q0 S3 j6 R" P
    while(1)( r* q' z3 @3 m0 `
    {
( }& q. W7 {/ l# T- @5 c' v2 t3 m       key = KeyScan()  ; //扫描按键
' a) x. [% R# |& z9 C# y      switch(key)        //根据键值来做出不同的相应
1 A1 ~  h- a2 b      {
1 c2 T7 }" {! F" k     case 1ED1=0;break;8 s1 W" f; w) N0 ]. w; O$ q( Y
     case 2:.......8 s: P& n& E  F, X. b
      .....
# o* O/ Y' O6 i( I# l0 C    .......
, H( d3 c! c+ e% K" J    }' x" j3 D- k# _3 l; Q) Z
   }. z1 O" e5 k; `' S
}6 O1 E3 o0 |- x3 e
* M/ A: ~- X1 [$ p) ]! J8 C  l
main.h1 p, |- u" L( _! h7 z# A/ h
#ifndef _MAIN_H
9 j3 J+ f! w& X1 b8 K; ?: W. I#define _MAIN_H$ M: o6 _+ ~# \' i

" u! h# J7 W0 w$ K8 k6 i5 C#include "DSP2833x_Device.h"     // HeadeRFile Include File6 e9 K# E" O" ~* ^6 x) T) i3 c1 {. J. z
#include "DSP2833x_Examples.h"   // Examples Include File
, p( v* T+ U; Z% [. E- i3 U3 q4 I4 |. K" _% S* B# c8 |# d% U
#include "flash_ram.h"
; u( ?/ j9 f( G: U#include "led.h"
+ T5 e  b- K) H! O% d# d9 z. J# ]#include "key.h"
& P9 o; \0 ~6 ~6 ]#include "extint.h"
. `0 u; |' c+ D3 J% y#include "timer.h"
9 J* A3 v6 A+ O, V#include "sci.h"
/ m$ @& {/ t1 y#include "pwm.h"
' W- x. f% d5 d6 T0 o& c! @! f#include "cap.h"
% N3 X: U. o" {+ D4 K, l7 B#include "ad.h"# M0 i' H, i* r$ I
#include "can.h"' ^. t, |/ Q+ G  z3 }8 k: k' ?9 g* `
#include "spi.h"- O+ V7 Z& ?( E6 n+ F

+ x4 [2 H$ |  U- F6 M2 `#include "NRF2401.h"
) Q$ B3 n/ F( y
+ Z( }' N2 g$ K: ]) c) P#endif, V5 B1 c& S- O/ x2 D

该用户从未签到

2#
发表于 2016-6-29 10:16 | 只看该作者
感谢楼主分享!!!
) a6 I9 L7 ^4 D2 E

该用户从未签到

3#
发表于 2016-6-29 10:44 | 只看该作者
看贴学心得,回贴是美德
# Z7 L! U" ~4 I2 g0 Y/ u5 m
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-24 17:30 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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