找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 94|回复: 2
打印 上一主题 下一主题

DSP28335的GPIO使用

[复制链接]

245

主题

1028

帖子

1921

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

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

EDA365欢迎您!

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

x
GPIO通常用来做普通的输入输出,比如按键啊,LED啊,或者芯片的片选段之类的,算是最基本的操作。( }' J* _3 ]! T
话不多说,直接上 代码+注释 记录一下,以备以后使用" v# |% ]. y; G; B4 C
我用的板子是研旭实用板
% G/ B! U3 c2 M9 n; J
* k$ X" r8 s) l6 O9 x0 X& Mled.c
+ S6 ^* B* @3 Q- M0 j! n8 _#include "led.h"
2 |$ a* j1 U+ T  I- N7 f//LED和蜂鸣器初始化4 g# B6 \. @1 C( v, Y
void Led_Gpoi_Init(void)
; y0 U5 D8 R: L{
# N# u( o4 Q5 e0 c; `% ]% JEALLOW;
$ o* g4 _/ L5 O) b( r5 z1 KGpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0; // GPIO0复用为GPIO功能
' E% P% J/ b; i( H) MGpioCtrlRegs.GPADIR.bit.GPIO0 = 1;  // GPIO0设置为输出
' h% t  M$ B4 K6 LGpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0; // GPIO1 = GPIO1- z1 M. F2 X, M; h
GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;  //GPIO0设置为输出: |6 w0 t& t! v1 A$ R0 Y' n
GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0; //配置同上8 J2 v$ |; t3 P1 ]) e
GpioCtrlRegs.GPADIR.bit.GPIO6 = 1;1 I% v" B9 b: O: m
GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 0; //
; F' O5 z3 q8 Y# z1 n- m( jGpioCtrlRegs.GPADIR.bit.GPIO7 = 1;
& T' |% H- b/ R8 C9 {8 qGpioCtrlRegs.GPBMUX2.bit.GPIO60 = 0; //蜂鸣器GPIO设置,GPIO60复用为GPIO功能
; T: k1 E! A. L! n# r       GpioCtrlRegs.GPBDIR.bit.GPIO60 = 1;  //设置为输出
% q6 \9 F. R. N7 X& i2 Y0 A        LED1 = 1;  LED2 = 1;  LED3 = 1;  LED4 = 1;BUZZ_OFF
) E$ A8 w/ c( `6 s' ~- M5 FEDIS;+ l) F% ]+ z/ G& T5 Y  n- L
}
; @0 f! F5 p, R( J* Z$ A' j7 L; Z7 m2 A
led.h) K* r' m- y3 e) g6 A7 d5 h$ V
#ifndef LED_H_' r  w% t3 `  o6 n- s
#define LED_H_& ]5 R$ R" M' N! U
4 J* w  {4 p7 g; w4 u$ H
#include "main.h"9 N( S( B! o+ z6 E9 S, U% p8 s5 k# r
. T( P1 w5 G3 q' K
//根据原理图,低电平LED亮- _2 G3 c( v* Q, }, Q7 m+ ]
#define  LED3  GpioDataRegs.GPADAT.bit.GPIO0   //宏定义LED的数据寄存器) K# Z6 T1 T0 I0 R
#define  LED4  GpioDataRegs.GPADAT.bit.GPIO1
* P2 B7 s# p7 \#define  LED1  GpioDataRegs.GPADAT.bit.GPIO6/ o0 l! r6 ?0 O% ^
#define  LED2  GpioDataRegs.GPADAT.bit.GPIO7
( r: _' h3 R; q/ r( p# l4 M: i: J1 C, F$ ~" }: b
#define  BUZZ_OFFGpioDataRegs.GPBSET.bit.GPIO60=1; //蜂鸣器不鸣叫
* f9 Z6 {0 r5 ~- S, A% |#define  BUZZ_ONGpioDataRegs.GPBCLEAR.bit.GPIO60=1;//蜂鸣器鸣叫/ ~2 H' D4 q$ k! n9 ~, b" E
% Q7 X* ]4 Q" _0 w$ C
void Led_Gpoi_Init(void);
+ i1 b; l; }" Q8 A4 g& ]7 H
- O5 e! ?8 z- c" V  A#endif /* LED_H_ */- R( P" S; l0 d: H! A! H3 y

5 s; L. G6 f- h9 ~key.c  {# N# h* |! g7 n
#include "key.h"% h3 c; g  e: i5 ^2 G
//按键IO口初始化
2 ?! E# n9 a8 r0 q6 f& yvoid Key_Gpoi_Init(void)
4 @# u) |- Y* t8 G{8 A6 I4 q0 I" E- z+ W8 z% z
EALLOW;
+ g9 q) v7 G8 ~* x8 i6 hGpioCtrlRegs.GPAMUX1.bit.GPIO13 = 0;//按键GPIO设置,GPIO13复用为GPIO功能+ p. H% ?. q/ O5 }- f
GpioCtrlRegs.GPADIR.bit.GPIO13 = 0;  //设置为输入
0 |. `* ]) K, C  M7 s( a+ U+ X. U/ nEDIS;9 H1 @0 f$ Y* W& T/ E- r/ `
}" P- d' O- F, v3 X' Z
' M' _9 ~: J3 }& a0 {* u

. b8 A# V2 F' v: uu8 KeyScan(void)
9 ]5 O3 n- o2 ^7 @/ Z{
$ ]* k' X1 y/ i& D# E: istatic u8 key_up=1;//按键按松开标志' c( Z0 r* w) u4 o* e: G1 s# a
  {+ C7 T5 i/ a1 y* `

' F/ \' H/ H8 W5 |9 L    if( key_up&&(KEY0==0) )  //有键按下 ||KEY1==0||KEY2==0)
5 A3 b* u( ^5 q  M{, n. b- K, @- Y5 g; ]' k' e+ {. `
       DELAY_US(10000);//去抖动
  g& _1 c; J+ Y3 d6 M2 a, R1 w9 X& i  key_up=0;     //表示按键没松开+ d8 ^& T" H/ k/ {5 U
  if(KEY0==0)    //按下KEY0
9 e# k9 E/ L0 G! K4 d# ^  {/ Z$ t, B2 c7 M; q+ Z; d, \" ?
  return 1;
7 U$ j8 E( f+ f2 W  u+ i  }& y0 i8 ^- I3 H! `
//   else if(KEY1==0)  @/ v8 l9 F- t/ d( H2 }! \# U
//   {return 2;}( I1 Q" s: D3 v( m
//   else if(KEY2==1)5 V+ w' F) }9 T2 X$ }% F
//   {return 3;}}# @9 }8 K9 k" I7 z$ y0 S  p' w
}
8 G: [! L! `, y3 @9 @    else if(KEY0==1)key_up=1;  //&&KEY1==1&&KEY2==1没有键按下% E/ {1 G0 X  E5 S9 w
   return 0;// 无按键按下; q* M* h+ s2 b$ \1 N/ Z! J* }5 d. U( J
}
2 `! W# q% P) s8 f8 |' b: l! w; D$ N" f9 N# D+ z
key.h* e( D+ ^" _' `2 \! h
#ifndef KEY_H_
$ F6 X$ }7 i. |5 u#define KEY_H_$ w" r% {+ r8 r* r0 q7 _7 U
#define KEY0  GpioDataRegs.GPADAT.bit.GPIO133 N1 e- P' h8 u0 H( w" a, K
#include "main.h"
: C5 ?) g; w: C* k% z* F) j/ Q/ P$ v* e8 x  E5 U- O
void Key_Gpoi_Init(void);* c% k& }5 m! n8 u8 ?
u8 KeyScan(void);, P  ]% E; a  x

) }' ^% J7 X! o+ ^6 w+ l$ @#endif /* KEY_H_ */
2 H7 T) I4 r( y) u, t0 G
, X: q9 |' x; o  M* z. zMAIN.C6 X( `8 y5 j9 d- O
void main(void)7 Y2 l9 l: B6 T0 [! V* r( J* X
{
/ m- Y! _6 {0 _+ ^8 Q( P# ~1 |    u8 key=0;   
" C) S/ J$ t, f9 l; j9 e0 R0 x" l//初始化
( m' v  F! E' K& S! x     InitSysCtrl(); //初始化系统时钟到150M,关看门狗,开启外设时钟
0 R2 c7 \& C: b; O0 P# S( X2 d5 _     InitGpio();    // 初始化GPIO到复位状态- l( v& |) Q; @1 o7 k* ?

- y. Z' ?) x" ]9 a    DINT;              //关闭CPU中断
) p4 n! I2 k; ]' G) W) g' i9 W2 a* N2 M    InitPieCtrl();* i: h0 A  h4 ]! _
    IER = 0x0000;8 {3 ~; T8 [3 t" G( e* g+ u; {' k
    IFR = 0x0000;
: [, d4 I2 G0 G, s# A; {6 t    InitPieVectTable();  //初始化中断向量表
' d9 |( I  A/ I. d
; @- e# Y0 S. Z* }& u: l* ?    //外设配置
, b* Y) W( [# D, C1 y- i    Led_Gpoi_Init();   //led端口初始化
2 k/ P9 c, Z; I9 [    Key_Gpoi_Init(); //按键IO初始化
( Y7 l2 z  J  B. @    while(1)2 b# X* y3 B* r% z
    {
3 W( [% R( e0 Z, h% M' |9 G       key = KeyScan()  ; //扫描按键
. V8 }* [. d% n      switch(key)        //根据键值来做出不同的相应
& Q3 o" p+ g; y' C. p      {2 [" w. V$ d4 m" k7 i/ k% A
     case 1ED1=0;break;
! T6 ?9 m6 M6 ]# @$ |0 H     case 2:.......& T% Y+ g( G! o& w, {
      .....
* t# Z/ @' e$ d1 e( f    ......., {, \( E) u& O
    }  H/ v6 v: p! m! ^# @* Y& h% n
   }
/ [6 ?8 y2 o$ o2 W# ]}/ n2 _, n& ?9 ]- E, `9 z' c& {
  M0 E( |7 ~& [' J! D! Z% X3 @8 e0 w
main.h/ I$ \' c8 L+ E, n5 \
#ifndef _MAIN_H9 t8 p  I+ l" g0 n# |
#define _MAIN_H' `' M1 d0 N0 z5 B
" v. ^5 U' p3 w1 v& X
#include "DSP2833x_Device.h"     // Headerfile Include File
+ D# Y% U9 r4 q#include "DSP2833x_Examples.h"   // Examples Include File$ D. w4 y) w$ I* o
; ~* V) k' B% o0 L/ `
#include "flash_ram.h"& G. B* b  {4 S5 R6 ?6 p. n7 A
#include "led.h"
* p& M9 `. \9 F- X- R2 X$ p#include "key.h"5 @) b/ z8 J1 D+ A* Y" F, `% a3 m$ D
#include "extint.h"+ w, ~* n5 q/ F. m7 H
#include "timer.h"0 U4 X, `/ Z; I& N* }3 C* f. C
#include "sci.h"
3 _& j( j1 x3 H" N#include "pwm.h"
5 D2 E/ [  H* U+ r2 V6 ~5 I! ?#include "cap.h") @: z+ `% N: |/ ?) a
#include "ad.h"/ Q8 t0 J& j) z( K: b
#include "can.h"" J& y+ Y0 F1 j& g. }
#include "spi.h", Z" I8 \* ^- B1 m" \) B1 g1 }
% T% N! `$ p$ m& A0 V* u
#include "NRF2401.h": K8 ^. O  y. S! y8 H

" o! Q. u1 F) l: ~#endif* I8 }& H* k9 Z4 a# w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

162

主题

614

帖子

1255

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1255
2#
发表于 2016-6-29 10:16 | 只看该作者
感谢楼主分享!!!6 N! Z0 B$ {" P

156

主题

559

帖子

1202

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1202
3#
发表于 2016-6-29 10:44 | 只看该作者
看贴学心得,回贴是美德# N8 ~# Z9 H0 F- e) B4 I# y
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-3-13 16:04 , Processed in 0.056192 second(s), 31 queries , Gzip On.

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

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

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