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

DSP28335的GPIO使用

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
GPIO通常用来做普通的输入输出,比如按键啊,LED啊,或者芯片的片选段之类的,算是最基本的操作。
6 U. @8 V( h6 W. W% s  Q话不多说,直接上 代码+注释 记录一下,以备以后使用. f2 h! H/ d' }0 `! V
我用的板子是研旭实用板' G: x) t* C1 H. M" J1 n
  ?* Z  e# C0 S1 Y) f2 J- F
led.c
; }: ^& L& g, h7 z; F6 _. K9 h" Y#include "led.h"% G0 _2 R/ p, T, t
//LED和蜂鸣器初始化
8 E' x: a  p0 Z; yvoid Led_Gpoi_Init(void)+ a3 J- t! O" Z2 h
{
2 P/ t: {8 m; [4 a2 `  tEALLOW;
* [8 \8 k6 V) A: H* x; M/ ]GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0; // GPIO0复用为GPIO功能
5 \$ Q9 Q! T3 ]/ mGpioCtrlRegs.GPADIR.bit.GPIO0 = 1;  // GPIO0设置为输出1 q% A' e# i0 c7 d7 b
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0; // GPIO1 = GPIO1/ G* k5 Y( G0 a9 O( ?8 o
GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;  //GPIO0设置为输出3 f5 x/ _6 T) i" K5 W; t( S
GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0; //配置同上5 v+ m$ S  ^$ f: @8 E2 z7 Y2 t
GpioCtrlRegs.GPADIR.bit.GPIO6 = 1;
$ O4 e4 R. V3 @. Y9 o! C  UGpioCtrlRegs.GPAMUX1.bit.GPIO7 = 0; //
- u* @2 W+ v5 Z/ T2 [GpioCtrlRegs.GPADIR.bit.GPIO7 = 1;
7 d7 s; a2 ^0 M. f/ SGpioCtrlRegs.GPBMUX2.bit.GPIO60 = 0; //蜂鸣器GPIO设置,GPIO60复用为GPIO功能/ q9 x  \6 Q" w- J( h  L$ X
       GpioCtrlRegs.GPBDIR.bit.GPIO60 = 1;  //设置为输出
1 p3 y6 ~8 o! m+ T        LED1 = 1;  LED2 = 1;  LED3 = 1;  LED4 = 1;BUZZ_OFF
7 W3 Y9 C4 O" v+ b; d' L9 MEDIS;
3 b% v$ _% c+ q! X9 K: j  e; ?% ?}! n2 M6 D5 p1 K- W( W$ X, O/ y
& L5 l0 X4 a  Y- {' J2 I. H8 `
led.h* I2 n, z( H' L0 N) X+ S& S
#ifndef LED_H_" y, ~; y& {/ b2 ~$ z! h9 Z
#define LED_H_- w2 p! Y  W5 X" u3 z* {
8 Y) u+ e) }& W: |* k  b" H; S
#include "main.h"
- a2 j1 D0 a0 K" i; M" v6 O8 [% M, R: G' b" k% P+ z; m; j
//根据原理图,低电平LED亮
; y) e; z, V! Y: t4 z/ s0 O#define  LED3  GpioDataRegs.GPADAT.bit.GPIO0   //宏定义LED的数据寄存器
% H- `8 u9 Y+ h6 J" M# C5 a; }+ K#define  LED4  GpioDataRegs.GPADAT.bit.GPIO1: E3 W, f; m4 \" e+ w
#define  LED1  GpioDataRegs.GPADAT.bit.GPIO68 ^& n5 y9 m/ t! X; T# k! `
#define  LED2  GpioDataRegs.GPADAT.bit.GPIO7/ Y+ }- u7 Z1 |
$ o9 p% c) f& F: v/ S% ]! U* e
#define  BUZZ_OFFGpioDataRegs.GPBSET.bit.GPIO60=1; //蜂鸣器不鸣叫  \  u7 A$ j3 j) {/ u  u: _
#define  BUZZ_ONGpioDataRegs.GPBCLEAR.bit.GPIO60=1;//蜂鸣器鸣叫1 o( u/ r2 a7 x5 z

: R; [" C; l; z8 q2 @/ Hvoid Led_Gpoi_Init(void);- N' D, d# r( ?) R9 F& `* O
  b4 Q% J/ C& v' B5 }) U- I4 J
#endif /* LED_H_ */
+ F# v3 w) P7 y% V) T
9 [) k" O& h, o% i1 {) Nkey.c
% ?; s6 t# ]! Z#include "key.h"
, k4 S! {- P  c( f; x' \//按键IO口初始化
- g5 i# S' {& k. o3 G. ?void Key_Gpoi_Init(void)4 E  Y+ D& t& E/ v& ^) K5 _
{
# _- I. ~9 _! b/ Z4 h) C: F0 A, FEALLOW;
9 c( p6 @% n/ U. C( \7 V$ RGpioCtrlRegs.GPAMUX1.bit.GPIO13 = 0;//按键GPIO设置,GPIO13复用为GPIO功能
( `$ I, }$ l; PGpioCtrlRegs.GPADIR.bit.GPIO13 = 0;  //设置为输入0 C4 }' _$ g0 ?
EDIS;
+ b. f- B6 ~, w8 o# a3 G* H}
2 T2 O% [$ z8 @) `1 Y+ p* J# {9 _1 D
" l7 w: u9 T8 ~# x; F8 _" y
u8 KeyScan(void)% `# _0 W4 u2 s3 c: ]
{# C2 f2 ]( g# o2 k' y% `
static u8 key_up=1;//按键按松开标志% B; C4 D; g: y/ `, ^; P  F

+ p" O  L. S8 u0 C1 s: i6 {. |3 S9 e+ Y8 G8 |$ A+ |5 T' E7 u
    if( key_up&&(KEY0==0) )  //有键按下 ||KEY1==0||KEY2==0)$ S' F9 Q3 N* ~0 N7 J
{0 L6 I9 D+ n/ w) w
       DELAY_US(10000);//去抖动  H* ^# B1 l) F+ O; L& Q
  key_up=0;     //表示按键没松开
+ d3 m. j* \2 ^  ?, q9 t* N  if(KEY0==0)    //按下KEY02 B; m) ]* v6 N4 o) B( B
  {6 R6 Z" l# Z; k' ^$ u3 d
  return 1;- }' w4 P. J  g% x& Q
  }& @: `! i* i2 T1 z) l
//   else if(KEY1==0)7 l& t% L, ^/ N! l- w. g
//   {return 2;}
5 z" j9 u' T- y2 C2 ?7 M//   else if(KEY2==1)
( B; Q; x) O7 B( U, B//   {return 3;}}
6 b" K8 O! I0 q6 O' m; {  d" S" J7 `}
4 m/ J  ]7 ?' f    else if(KEY0==1)key_up=1;  //&&KEY1==1&&KEY2==1没有键按下0 h# k, w' b! t
   return 0;// 无按键按下
% ~( Z: W4 B, z  v, ~}1 Z0 T' K6 M3 T

. S0 d) p; q) y  Akey.h" H4 i5 m: R0 s$ ~
#ifndef KEY_H_
: \( W/ r! s7 R2 {#define KEY_H_4 h5 F/ S% Z1 U; g0 f- a3 D' }# y
#define KEY0  GpioDataRegs.GPADAT.bit.GPIO13' O. ~8 L. H. ~+ C. _2 L& N
#include "main.h", m- d2 ^: b  p' m: L' ?
) u3 X( d3 `, \7 d8 f7 X
void Key_Gpoi_Init(void);
* G% F0 V9 S: m6 L; c  I2 ^6 Ku8 KeyScan(void);1 I" e3 L0 V) ?

7 S/ t% d+ o, k; |! D, b3 O" a#endif /* KEY_H_ */
4 B$ Q2 p7 p4 }
4 w: W0 Z& d; c( w- s' EMAIN.C5 \2 ~& E) y9 M: b, e2 I
void main(void)
0 z1 ?& o" o8 \+ ~2 I$ p% @{& K1 l4 V- S3 l
    u8 key=0;   
8 Y9 n* m! i: Y* ~( c//初始化" S" @  R0 ]; U7 B. d# L7 [0 ~
     InitSysCtrl(); //初始化系统时钟到150M,关看门狗,开启外设时钟
  R- |) L0 j: _; i     InitGpio();    // 初始化GPIO到复位状态
" `1 N1 V$ z! O: t# g/ N7 g6 [* V+ g& `8 ^3 d1 d
    DINT;              //关闭CPU中断6 M" b. ], ~9 j5 [0 s& f7 g8 D# a
    InitPieCtrl();- p8 a* S4 E/ |. n! }" ^
    IER = 0x0000;
) W$ m2 F9 t6 [. L+ _- F- `9 e    IFR = 0x0000;" o- X. s1 k7 s/ Y5 ^$ @
    InitPieVectTable();  //初始化中断向量表) l. H; ^1 @+ a9 |- t6 {. _% t

& m& {; ~; @  ]$ A    //外设配置
# s  n7 u4 A& s* [8 i    Led_Gpoi_Init();   //led端口初始化# V* @1 G* }0 T$ h
    Key_Gpoi_Init(); //按键IO初始化! T' `9 Z* Z: Q7 W
    while(1), Z& K, _0 @/ P% G4 i; D
    {$ Y5 ]. Y/ t: D7 y6 A7 k0 V
       key = KeyScan()  ; //扫描按键
8 U' A) e4 N1 [8 Z+ |; n      switch(key)        //根据键值来做出不同的相应% W1 I0 K( G  p$ a3 s8 `) S8 V
      {- Y' |/ r2 X/ x% x9 K/ }9 C
     case 1ED1=0;break;
( B7 f1 }( v: `5 F4 R: T     case 2:.......; }$ ?. R4 u9 @! B% f0 C
      .....
* ~( ?5 C0 X) Y; t    .......
& J+ w+ d! K& y( [2 s    }$ u) Q% J0 T5 `! ~  L/ s* `
   }
' H% u6 m/ H. N& {5 @}( Z$ j/ C+ Z. r: n$ h" B

% e% f( p& x6 V( \$ h# @2 e7 Q4 H+ Fmain.h
2 F$ K' O- k3 e' g7 T#ifndef _MAIN_H
+ v$ j8 J: G$ a8 P1 b% e$ D#define _MAIN_H
0 D# L, e6 X2 T$ O; v" G4 E5 [! D* ]0 o
#include "DSP2833x_Device.h"     // HeadeRFile Include File5 R4 F3 G  l/ V8 E0 L
#include "DSP2833x_Examples.h"   // Examples Include File
' `$ |/ e4 j9 q' A+ p) @7 f! ^7 \* e0 y
#include "flash_ram.h"
/ p  ]( Q4 R6 y  l( G9 r#include "led.h"
: `  s+ L, B9 E) i/ W5 Z#include "key.h"( `2 e. y9 Y: q* G. o' F
#include "extint.h"+ a, c6 o8 H! t4 a! d% T
#include "timer.h"! }! P* N$ ~/ }) o4 H
#include "sci.h"8 L( w7 P# d6 O9 E
#include "pwm.h"
) C7 N  B, f. r+ n4 v* ?#include "cap.h": a7 Z. h& o* n
#include "ad.h"" o: ]! w! q7 Y/ _% k* V: l
#include "can.h") j0 h' R+ T7 N" S7 @4 t6 @
#include "spi.h") K5 @; V- H# b( P# |3 C' a

% B( g! E* k; }: s6 x3 U2 Q% Z" B#include "NRF2401.h"
4 r8 L: E- m/ n5 }  \3 t2 k1 f' p% W8 ?/ l. I
#endif
  e; D$ x/ `/ z

该用户从未签到

2#
发表于 2016-6-29 10:16 | 只看该作者
感谢楼主分享!!!
( J, x" _/ f: @

该用户从未签到

3#
发表于 2016-6-29 10:44 | 只看该作者
看贴学心得,回贴是美德8 t( v" f/ u) W
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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