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

DSP28335的GPIO使用

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
GPIO通常用来做普通的输入输出,比如按键啊,LED啊,或者芯片的片选段之类的,算是最基本的操作。! \6 p' ^" o  ?1 z! m4 A0 b
话不多说,直接上 代码+注释 记录一下,以备以后使用
8 Y! }2 ]6 i* H3 z( s& ]我用的板子是研旭实用板
6 |/ X/ B4 v, [8 j, h8 e0 X& \$ d; t" T+ ~( q; Q. e
led.c
' e4 R5 g% c+ B6 F; D% Y  [#include "led.h". `3 A, S7 {. H9 G* _
//LED和蜂鸣器初始化- o  F) w5 z* ~, E
void Led_Gpoi_Init(void)% b7 P. q2 R! R( s3 V' U5 c
{6 _7 z% J) y6 e+ T1 {
EALLOW;
* r+ u* V: L  MGpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0; // GPIO0复用为GPIO功能* Q6 e2 e2 w- I4 }$ q
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;  // GPIO0设置为输出% h" `- V, j7 k, N
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0; // GPIO1 = GPIO1) |) {6 X2 S; V  k
GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;  //GPIO0设置为输出. D7 z( K$ m! k9 K$ p: _' \2 ^) p
GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0; //配置同上' `2 o$ v5 U" S: B
GpioCtrlRegs.GPADIR.bit.GPIO6 = 1;
9 Z  U6 ^, a% \2 t+ QGpioCtrlRegs.GPAMUX1.bit.GPIO7 = 0; //+ B& U& K/ m; r6 o$ K$ _
GpioCtrlRegs.GPADIR.bit.GPIO7 = 1;
4 Q; Q  O9 I% I- Z3 T8 wGpioCtrlRegs.GPBMUX2.bit.GPIO60 = 0; //蜂鸣器GPIO设置,GPIO60复用为GPIO功能% ^9 j3 C/ u0 k( R3 h
       GpioCtrlRegs.GPBDIR.bit.GPIO60 = 1;  //设置为输出
2 U  ^, e' `8 w        LED1 = 1;  LED2 = 1;  LED3 = 1;  LED4 = 1;BUZZ_OFF( M' k) P+ b, u. ^
EDIS;
: h$ [  n5 R8 R# R5 v. ^}
; D  @- a3 v* H/ w8 ~2 ~
* ]1 \, N* r9 s# H5 p" Q, Yled.h
( y4 c1 B. @7 ?! _#ifndef LED_H_/ D' M3 x  k: t
#define LED_H_% n' Y3 l5 e+ v: W
+ n0 A* v6 \, F/ [# Y
#include "main.h"
2 v. ~. u: a* \( Z: _' A+ u
  L0 w* }9 L0 T3 y* w2 ?* A//根据原理图,低电平LED亮
9 S1 i# W4 ^9 s#define  LED3  GpioDataRegs.GPADAT.bit.GPIO0   //宏定义LED的数据寄存器
/ l5 e  d+ z( w& s9 }3 \#define  LED4  GpioDataRegs.GPADAT.bit.GPIO1
2 e$ q6 h* [6 J#define  LED1  GpioDataRegs.GPADAT.bit.GPIO6, P8 U# ]& N+ M
#define  LED2  GpioDataRegs.GPADAT.bit.GPIO7
( r: |* L2 M8 ~) Z. ]$ X$ a; d/ p* ?2 u# c: ?, f0 G
#define  BUZZ_OFFGpioDataRegs.GPBSET.bit.GPIO60=1; //蜂鸣器不鸣叫
, H# U; c% P4 X. U6 ]3 A#define  BUZZ_ONGpioDataRegs.GPBCLEAR.bit.GPIO60=1;//蜂鸣器鸣叫
% Q* n' n$ b: P' g( @) u0 h8 ~2 h3 b' X/ v6 D
void Led_Gpoi_Init(void);
' ~2 j! Q6 [* ?, M1 m
" b, W4 d+ Y5 P8 s#endif /* LED_H_ */% g! F- x+ J( g) v6 d
; d' Y+ k) L$ A, m
key.c
. b9 x% m6 Z$ c8 I1 V#include "key.h"
' \7 m7 K$ @' q0 E; }$ m//按键IO口初始化' q7 e6 O3 f% n3 r
void Key_Gpoi_Init(void)
0 ]# n( p) a3 j0 p! E{) x4 H7 k1 Z& d8 v/ J" g& d
EALLOW;
) Q  c- _# x7 ^$ r$ G' W2 IGpioCtrlRegs.GPAMUX1.bit.GPIO13 = 0;//按键GPIO设置,GPIO13复用为GPIO功能  V) g+ Z$ x6 c2 l6 x! ^  l4 I: i
GpioCtrlRegs.GPADIR.bit.GPIO13 = 0;  //设置为输入6 B4 a. V! M1 E* [. N! @
EDIS;( u9 T2 h6 g% Q7 w; F& l
}- ^* G  i1 Z6 n9 F; Q3 |
) d4 l- H; |% K$ u: s- ]
3 R3 L: L* E+ _" F
u8 KeyScan(void)! i$ z( p0 R: J  T2 M8 \# K- E4 r
{
- M7 ^$ E' O8 ?5 E  J; Vstatic u8 key_up=1;//按键按松开标志+ v) r5 c& S8 s$ |

6 v" {: K) m5 @: s* a" U. h+ S' n# P- y0 [" s/ s: C/ o& c
    if( key_up&&(KEY0==0) )  //有键按下 ||KEY1==0||KEY2==0)! _) X2 t% g9 t; }8 L
{
1 ~* s$ ]5 I* Q; T% s+ D' o5 Y       DELAY_US(10000);//去抖动
  L* g3 T" x7 m% B2 Z  key_up=0;     //表示按键没松开. W" O( w% L: r3 m0 t+ P0 A
  if(KEY0==0)    //按下KEY01 ?( B; _& x" h8 a
  {
% R! i: \" x9 J. |! s2 D  return 1;
: b$ I, |$ s6 A" ?  }+ c# h* H& Y0 P) i9 ^3 d* k
//   else if(KEY1==0)
, r. B8 i) |/ O+ t' ~: E5 I9 {- f//   {return 2;}7 n' `8 N3 \0 G  ]' {$ H- H+ ^0 V: C
//   else if(KEY2==1)2 @  D, h9 h8 ^  j8 G4 e  _2 M) Y
//   {return 3;}}. ]/ T* R+ ?# X$ p
}9 Q1 u  V. E' N2 Q
    else if(KEY0==1)key_up=1;  //&&KEY1==1&&KEY2==1没有键按下
9 i9 l" ^' J) V* Y6 D   return 0;// 无按键按下
9 o' A: G& x: y  }}5 x# `1 m/ i9 e$ b0 A4 v% a( ]
. Z/ R! t! M& ]$ G
key.h
+ ~4 M9 m5 i/ J3 ~  m#ifndef KEY_H_, a% t' r: k* u" l: S
#define KEY_H_+ |- I3 ]: L$ R2 l0 a
#define KEY0  GpioDataRegs.GPADAT.bit.GPIO13
! y  O/ Z; w; r, p#include "main.h"
2 ~1 E( n4 G+ h& p1 {4 o* v: ~( }5 |
void Key_Gpoi_Init(void);
( X4 Q* g- `2 k% U5 N; D) Z, b. nu8 KeyScan(void);
2 E- g9 c* T  W" ~2 W! Q/ \7 P3 I3 ~. V7 ]& T4 _  `+ Z
#endif /* KEY_H_ */
2 D- c) U3 \6 j5 R
. u  U1 b; q! u( w* v& |MAIN.C
2 z0 D& F9 N# _, ovoid main(void)
/ F& C: s6 L: B- y{
4 U( l$ D! y0 n; @6 V    u8 key=0;   2 ~# {: a6 _8 p
//初始化5 d2 Y& G/ X: x( n. Z1 P
     InitSysCtrl(); //初始化系统时钟到150M,关看门狗,开启外设时钟
, }) S4 w, ?' u) t4 ?# ?! F     InitGpio();    // 初始化GPIO到复位状态" y5 v8 ^: W8 Q0 k1 w

  y. G9 s) j4 V. h  I1 L; T2 h7 H    DINT;              //关闭CPU中断
" p" d# E, ^( x) r7 v" f5 y    InitPieCtrl();/ w2 q! b3 I" [( o( e) w, \4 ^
    IER = 0x0000;7 Y' x9 S& j5 d- m
    IFR = 0x0000;
" M2 ]) h6 @" ?/ c9 s& S) D    InitPieVectTable();  //初始化中断向量表
) J7 q6 X7 x: K) {7 c3 @' J' q% a# S
    //外设配置) X$ K# I, U. k0 F, M3 k4 g
    Led_Gpoi_Init();   //led端口初始化! \1 _6 a' t) {+ n" J
    Key_Gpoi_Init(); //按键IO初始化  O+ c% v# ~; t% R( X4 f
    while(1)
- p* Z  N8 c8 A. m- ^    {! ]% p. @! D9 h
       key = KeyScan()  ; //扫描按键+ s7 b( k6 ]% y+ p$ a$ w
      switch(key)        //根据键值来做出不同的相应
1 @5 a- |# f$ X6 S( _      {# ?* ?3 p, `2 ~) h9 ~8 Q
     case 1ED1=0;break;2 q* _6 p& @+ M: D+ c  A
     case 2:.......
; S! _/ n* r9 F# V0 {" F0 u      .....) J, V: a: ]& E. `8 ~  a" g
    .......
+ J8 O4 W; m9 o# h- D# Z- L8 [    }
" a. g4 v4 y& @5 `" E   }8 F0 x0 T8 h: ]; w' M- H$ b, Y
}0 e& L. m' q  z- y  T
) P* K2 ~  s# C' l3 c0 B
main.h, ?! _4 f. G) u
#ifndef _MAIN_H
6 G$ O6 v1 T; y4 B! J% ~% r! a) Q, n1 u#define _MAIN_H
% y0 `% o3 \# \# ^( _# l
) g5 v7 V0 d  X( N#include "DSP2833x_Device.h"     // HeadeRFile Include File
0 M% C6 }+ b, J0 i1 }#include "DSP2833x_Examples.h"   // Examples Include File7 ~7 g/ _4 r. W
# C6 c9 @9 w7 j1 \; v2 Q; e8 {
#include "flash_ram.h"
( N9 u' q& ^0 [# ?#include "led.h"
9 s2 ^, v5 S6 @; f- W. R7 n7 @" s#include "key.h"
, `) \* n, r& P# ]) k#include "extint.h") Q  h, |& F3 r( J
#include "timer.h"
% w! s& s, z* V#include "sci.h") B8 E, p# Q2 ~4 A4 v+ Q  H+ u
#include "pwm.h"
! `- i" G4 c; t: p#include "cap.h"4 t6 k; \2 O' n8 P  K5 T, w, {7 {
#include "ad.h"
# W2 m) ~2 u& X8 S/ j#include "can.h"
2 c5 h3 ~$ g* o0 O# W/ I- L#include "spi.h"6 j" c) M1 z/ D: Z) g

- k4 G' P, j* \& s$ d#include "NRF2401.h"
5 b$ F6 S; A/ ?6 v/ h7 I
" K/ ?6 y$ C$ W0 w8 x#endif$ R2 d6 n7 N( D* @2 v

该用户从未签到

2#
发表于 2016-6-29 10:16 | 只看该作者
感谢楼主分享!!!, {' E* }4 m1 h7 U! b4 g

该用户从未签到

3#
发表于 2016-6-29 10:44 | 只看该作者
看贴学心得,回贴是美德
7 q: }: z, V, [6 }9 [" _5 e: }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-7 18:35 , Processed in 0.078125 second(s), 23 queries , Gzip On.

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

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

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