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

DSP28335的GPIO使用

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
GPIO通常用来做普通的输入输出,比如按键啊,LED啊,或者芯片的片选段之类的,算是最基本的操作。7 d8 Z+ O; b4 ]' A: W' p  @, e5 d
话不多说,直接上 代码+注释 记录一下,以备以后使用+ m$ x9 a" K7 |6 g
我用的板子是研旭实用板
3 S9 P0 N# [# {/ _* {) H' Z# W) `8 `9 x$ P; D
led.c) }1 ]  ?# K9 }$ D# \' s2 p; y' r
#include "led.h"! w, l/ @; K9 S" U+ x; W
//LED和蜂鸣器初始化+ Y" @7 [, V7 N6 ^. ~# j' k
void Led_Gpoi_Init(void); A# q7 E! c$ n- P8 O4 M. d3 h) Y
{9 _) X6 H# ]9 o' x' D7 S
EALLOW;
, ~7 B( x0 s6 [GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0; // GPIO0复用为GPIO功能
+ D, f& R3 n9 t1 W2 n5 m8 kGpioCtrlRegs.GPADIR.bit.GPIO0 = 1;  // GPIO0设置为输出
  B/ B1 y9 k, D2 x" x' D) b4 {8 |( VGpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0; // GPIO1 = GPIO1
$ J3 h- \% q+ b8 a; S1 a4 y/ K1 \GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;  //GPIO0设置为输出0 U# ]. A; X( d# O. |
GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0; //配置同上
+ l8 }4 u: E6 A+ aGpioCtrlRegs.GPADIR.bit.GPIO6 = 1;
2 _2 b9 G1 n$ p  J3 s5 O& J9 TGpioCtrlRegs.GPAMUX1.bit.GPIO7 = 0; //- x. f% P3 M! q. O
GpioCtrlRegs.GPADIR.bit.GPIO7 = 1;
8 ~, {- I, A5 @& nGpioCtrlRegs.GPBMUX2.bit.GPIO60 = 0; //蜂鸣器GPIO设置,GPIO60复用为GPIO功能
$ \& u" _* w: e: F) G& o; |, H) i       GpioCtrlRegs.GPBDIR.bit.GPIO60 = 1;  //设置为输出" m7 r8 Y0 Y% b2 p, o3 O3 ], d
        LED1 = 1;  LED2 = 1;  LED3 = 1;  LED4 = 1;BUZZ_OFF8 E, ]3 G4 U8 U2 |) W- d
EDIS;
& [5 A, a; h. L7 m3 m+ j}
1 O$ ~: l3 ~/ `9 \" K1 e" ~; z5 _! d
led.h
! A+ v7 f7 Y9 C2 n) G& o( B% X#ifndef LED_H_
  d( H8 a9 ]  o4 Z$ _#define LED_H_
* Y1 A2 j# J3 `, Y% S: [/ X* S( k$ p. J
#include "main.h"- F* C9 a! U. R3 @6 {* W0 `
, F) W8 R- n0 j- t+ v6 q2 e; u1 U. t
//根据原理图,低电平LED亮# @) d) I3 j: J/ k1 f, J
#define  LED3  GpioDataRegs.GPADAT.bit.GPIO0   //宏定义LED的数据寄存器
5 l) u0 N1 x; n- W" H#define  LED4  GpioDataRegs.GPADAT.bit.GPIO1
, m7 X$ p) D. M4 g7 \#define  LED1  GpioDataRegs.GPADAT.bit.GPIO65 r, d% g% b7 U9 @* r8 z: p2 w8 I" D
#define  LED2  GpioDataRegs.GPADAT.bit.GPIO7) Y8 Q- W' e0 C9 o

9 m6 \: K# F2 p4 i8 w! b2 \#define  BUZZ_OFFGpioDataRegs.GPBSET.bit.GPIO60=1; //蜂鸣器不鸣叫
: T! u9 G6 g- M#define  BUZZ_ONGpioDataRegs.GPBCLEAR.bit.GPIO60=1;//蜂鸣器鸣叫1 m- e( b7 j0 S$ `7 i

6 B, F" M) y! l; }% ]& u. h" W! dvoid Led_Gpoi_Init(void);
! K  d" c- h9 r  b& f
- k/ ~! N8 j" [9 N4 `9 ~' h#endif /* LED_H_ */* s: ]) D" T: E4 z/ `& e( W
8 Z4 U3 p+ ^( X0 M- H) g) l
key.c; |0 A$ ?+ A. r8 a& {
#include "key.h") {  w' b- o! J  T- S/ G$ Z
//按键IO口初始化" B/ f5 h, u, ], H; l
void Key_Gpoi_Init(void)7 ?4 `+ |" R" F5 V; ?0 y) t( p. y
{3 p$ C' s5 m7 q3 N* v# d  Y
EALLOW;
" K+ D9 u. I+ P' x; F0 GGpioCtrlRegs.GPAMUX1.bit.GPIO13 = 0;//按键GPIO设置,GPIO13复用为GPIO功能
# d. V7 X" ?" a2 v# PGpioCtrlRegs.GPADIR.bit.GPIO13 = 0;  //设置为输入* J/ v4 Q) L( t- P) p: U1 V
EDIS;; r' g$ |! m8 q& C  }
}( R% n2 c" b: g8 R7 W

7 ]. Y/ {5 R8 {8 t. s3 e6 T$ f
0 R9 R0 K) q6 Y4 ^u8 KeyScan(void)3 c, S: W: W; y) C9 j  l* T- H
{
/ A2 x5 a& O$ f  f% g# kstatic u8 key_up=1;//按键按松开标志
' }5 X3 w6 o- j; Z4 d+ N" x
" q/ \& L* V) H$ M7 W3 U9 n2 g' B4 r8 B& g
    if( key_up&&(KEY0==0) )  //有键按下 ||KEY1==0||KEY2==0)
* z+ a# }% n# F4 Z{9 E! {8 x5 Q; L- h. F
       DELAY_US(10000);//去抖动
8 e! @% {* j$ E: @7 g. J  key_up=0;     //表示按键没松开
# F! N: \$ P1 V' {  if(KEY0==0)    //按下KEY00 Y* R$ t& i% p4 K
  {
8 ~8 |$ v- @1 k0 Q7 ?, z: \( j, Y  return 1;
- ]' e; Z+ P; ^$ B% ?  }
! I# D! Z0 M0 P% F5 c$ a//   else if(KEY1==0)7 A; E& [* w( x% w: s
//   {return 2;}
) t  r8 A" k. e$ a) [//   else if(KEY2==1)! @+ S4 |- E. q7 N7 b
//   {return 3;}}
* L) |( G- @. k# y# q7 }& x}# ?# ~# U" \& E" b1 k
    else if(KEY0==1)key_up=1;  //&&KEY1==1&&KEY2==1没有键按下, W& {9 R) t: A9 ^
   return 0;// 无按键按下
, z  {* K1 n% E. u}9 v5 [+ n, E0 R: ]

. S: ]) D* @/ A8 o3 e- @+ ?key.h0 U1 Y" {1 U6 Y
#ifndef KEY_H_
) j% \3 d  x! x+ ~#define KEY_H_" {7 s- `6 S) w5 k, |4 I0 `
#define KEY0  GpioDataRegs.GPADAT.bit.GPIO13( Y1 A! i$ q! C4 N! I5 Y. ~
#include "main.h"3 c- E9 B6 S' q; Q3 Q, E

( d0 J. R. Z  A  Vvoid Key_Gpoi_Init(void);
& S' a% B2 z1 D" G9 |u8 KeyScan(void);! l6 `1 |# O1 F# }6 R3 d  @# F

: Q9 Y  {' R! P. v+ V+ I#endif /* KEY_H_ */. b! P9 M3 C0 p& t# p
' e0 ?& N( m4 _+ I0 R4 |
MAIN.C
2 U# B% Q$ ]& `$ A% }' Q. |void main(void)# K& W3 N7 q* p5 b+ Y. c; R
{) u9 o8 }% Y+ G, O2 z
    u8 key=0;   
/ _- P5 T: R: w//初始化1 j9 w! E0 S! ]2 }( r
     InitSysCtrl(); //初始化系统时钟到150M,关看门狗,开启外设时钟1 |  S3 }4 ~4 u3 r
     InitGpio();    // 初始化GPIO到复位状态1 @! q1 a4 {+ K  Z+ k* R! G
4 o# H( g" H: H/ p( W) x: `! L( ^
    DINT;              //关闭CPU中断
0 v' Y- p3 _+ q. ^$ M! `* p    InitPieCtrl();
4 t) @) o: T4 R3 F, B8 y    IER = 0x0000;; I) R" t+ f3 |/ ^1 I+ I  h
    IFR = 0x0000;
8 D7 S9 v+ Y% f0 [6 [( q0 G6 O4 N    InitPieVectTable();  //初始化中断向量表
5 G5 e  V& z+ D) [) O# i7 k
2 u2 S  `+ m, N# H3 C0 L    //外设配置
) g. F" j7 q  ^! j1 R    Led_Gpoi_Init();   //led端口初始化
1 }9 b9 `! ~5 Z: h: k# Q    Key_Gpoi_Init(); //按键IO初始化
( _/ z; H; o$ L; t1 A4 ^2 F) m    while(1)
" p9 ?/ W0 f" M8 t- s3 f( U6 t    {
* i0 M7 T& T1 h' p: R2 c       key = KeyScan()  ; //扫描按键  N7 C% S! Y, k& e+ @( U
      switch(key)        //根据键值来做出不同的相应
  I0 M5 n. N5 t% {      {
6 t& W! |3 l5 ?. @0 a- V     case 1ED1=0;break;- O1 q: w7 W7 I# m: ?! X1 V
     case 2:.......; D1 y6 v: h. r
      .....
7 A1 p6 v, r! s    .......2 D; r9 M( s" J7 I7 y; E6 w
    }
+ @. c/ r3 E& O9 `  s) p6 x   }
% @0 K$ ^3 ^6 t}
. s1 w! Z+ J% c* w5 }+ _0 A$ Z9 P  ~
main.h
; |  X6 ^+ N  `7 X0 P+ `2 ?#ifndef _MAIN_H
1 ]3 j! R: k) R; o& W( q#define _MAIN_H
( G6 ^/ i! {$ u7 R" N% a  j
# w: n4 l0 j: Z+ }$ U#include "DSP2833x_Device.h"     // HeadeRFile Include File
9 l1 M" |  B4 \" f1 l! V/ W1 A#include "DSP2833x_Examples.h"   // Examples Include File4 \- ^7 U* o2 n1 u( P% B7 z
! n; e7 A/ g1 m1 D( _7 O6 M
#include "flash_ram.h"
5 \4 j# n( ~0 f  Q#include "led.h". h/ X) s8 p/ D- |$ g( g
#include "key.h"+ L. U2 G3 {) n  Z
#include "extint.h"0 p3 f; B/ M2 _& \- ~6 e3 E8 z
#include "timer.h", L; |* O/ k0 i$ i
#include "sci.h"
: Z1 R! X$ D- }- B8 f3 [#include "pwm.h"
* z& U5 W2 [) I/ L) X#include "cap.h"
3 U! g) G( J$ x#include "ad.h"! Y) f$ }/ f/ C' Y7 F
#include "can.h"
/ u7 W! D3 m$ k$ p#include "spi.h"
5 N: j! M% K& T' W
/ e4 x$ Q9 J* f- T1 n: o& F#include "NRF2401.h") s% T' x; M8 B* ?" P/ ]

+ Y9 A3 `4 ~% y+ o1 V) z+ _4 j#endif5 Q1 n5 M, K0 E. n

该用户从未签到

2#
发表于 2016-6-29 10:16 | 只看该作者
感谢楼主分享!!!5 e5 N& m% H$ [% z7 p. t  s

该用户从未签到

3#
发表于 2016-6-29 10:44 | 只看该作者
看贴学心得,回贴是美德+ y1 G: b8 E8 Q7 O. {! L. s
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-4 11:18 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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