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

DSP28335的GPIO使用

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
GPIO通常用来做普通的输入输出,比如按键啊,LED啊,或者芯片的片选段之类的,算是最基本的操作。" c; s! Z5 K. B4 G5 X: i: n7 U
话不多说,直接上 代码+注释 记录一下,以备以后使用7 L* Z9 L3 u! w( F% I
我用的板子是研旭实用板
4 f3 n5 m8 ~5 v3 U6 J, P7 Y3 l% w$ t$ d
led.c
2 G& O9 Y0 @' ~#include "led.h"$ z& h) K( P6 E8 B( Q& |# D
//LED和蜂鸣器初始化
/ W1 H2 t% _& n: R5 Ovoid Led_Gpoi_Init(void)
+ e/ D0 _# k$ d' l{/ u' P2 C4 p  h, W1 E# ^3 ~  d; c
EALLOW;
5 B# J' Q, j  S- Y! E- d  ]# TGpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0; // GPIO0复用为GPIO功能# H0 }& e+ _7 r! R) k+ c" J6 n
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;  // GPIO0设置为输出
" b/ {  p* Z* [( K/ ?1 [& a1 `GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0; // GPIO1 = GPIO1$ T% Y1 f# o/ ^# k6 U9 x
GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;  //GPIO0设置为输出+ E: {0 `* j6 X7 C3 N
GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0; //配置同上& [1 e4 W4 i6 }% K! v
GpioCtrlRegs.GPADIR.bit.GPIO6 = 1;( x' [/ d8 O. l. [! ^, _
GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 0; //: o1 R% {6 o% q, K! U
GpioCtrlRegs.GPADIR.bit.GPIO7 = 1;
4 ^& k8 d( T) B% W% Z' mGpioCtrlRegs.GPBMUX2.bit.GPIO60 = 0; //蜂鸣器GPIO设置,GPIO60复用为GPIO功能0 |- @4 C6 f, _0 Y. V8 T0 w/ h
       GpioCtrlRegs.GPBDIR.bit.GPIO60 = 1;  //设置为输出7 l5 Z) p5 l/ M# e+ B
        LED1 = 1;  LED2 = 1;  LED3 = 1;  LED4 = 1;BUZZ_OFF
& a2 i1 k$ b: X- v2 v* g7 zEDIS;
  i6 [& \# R4 J}8 r4 G/ y: B4 T& \+ s- x5 _
2 i7 g) b8 u! q# d
led.h
4 R: I  @4 @  @! z1 w) E* d' R#ifndef LED_H_
* v1 l+ k- J' J* @8 f$ A8 }. X#define LED_H_
+ v& n6 ~( t" ]! w% m( O1 D, h. O8 x  `/ V( O) k4 N$ ?
#include "main.h"% l0 e$ p) d% C7 m
. t! F, l" d- i! u
//根据原理图,低电平LED亮
' Q% u* |) a7 [8 W#define  LED3  GpioDataRegs.GPADAT.bit.GPIO0   //宏定义LED的数据寄存器
) h% t* d0 E* B  @# c1 R$ \#define  LED4  GpioDataRegs.GPADAT.bit.GPIO1- |) V' ~3 b; z2 H1 j8 h. q+ o
#define  LED1  GpioDataRegs.GPADAT.bit.GPIO6
# _# S' U  n6 ]" Y#define  LED2  GpioDataRegs.GPADAT.bit.GPIO7
# z' x- b' l% ]: A; w0 u, i% q4 X1 [  A
& Q% u( D2 }2 f& P7 N' r! ~#define  BUZZ_OFFGpioDataRegs.GPBSET.bit.GPIO60=1; //蜂鸣器不鸣叫
7 a+ \1 s2 M# w/ Q#define  BUZZ_ONGpioDataRegs.GPBCLEAR.bit.GPIO60=1;//蜂鸣器鸣叫& t# f7 H& P" A4 c6 _. }

, U2 _) y; e" J* lvoid Led_Gpoi_Init(void);- `) Y/ \# t( U! B. L
: s' I% y" D+ q/ Q8 l% k7 N
#endif /* LED_H_ */
5 u+ e" j( a% R7 G: G, g5 A9 x5 e/ S6 e1 j' [% d4 h
key.c
% e9 R, e% ^, Y' r1 N, Q#include "key.h"/ q% I, w. I& o
//按键IO口初始化
( ], z4 ~: N8 Z6 ]/ V' J0 v$ Yvoid Key_Gpoi_Init(void)
  [% V9 J7 d! B{  I, i' m* E' P
EALLOW;
* m0 ]5 b8 g) v5 ?! E; RGpioCtrlRegs.GPAMUX1.bit.GPIO13 = 0;//按键GPIO设置,GPIO13复用为GPIO功能
- j' W5 x0 ~' z% H( FGpioCtrlRegs.GPADIR.bit.GPIO13 = 0;  //设置为输入3 U- l# }4 \3 @
EDIS;
4 n: L7 V6 Z. @+ V}7 H6 T$ y1 l4 A5 ~" R5 T  }, V

) t' e+ o/ M8 N6 ]# O. |" d# m# B& Z9 d, C, D" B
u8 KeyScan(void)
4 a% v7 z3 x: R# G{/ B$ b" n' h6 X6 k7 ^/ g
static u8 key_up=1;//按键按松开标志
5 H+ g* S) [- c0 ?/ J" [# t  S2 T7 A, H) Z7 b8 |
8 ?6 Y% {6 w" x( l4 c* _. D
    if( key_up&&(KEY0==0) )  //有键按下 ||KEY1==0||KEY2==0)
3 n/ q+ b( n1 D& s{% }3 P7 V# I3 D8 ~3 [5 g* u
       DELAY_US(10000);//去抖动
- t) Y  H* v6 E4 y# \: \, @) Y  key_up=0;     //表示按键没松开% `7 w) y/ c5 @  U$ G2 ~5 S
  if(KEY0==0)    //按下KEY06 r  Z& E& x* T8 L( c
  {
: u1 q+ N4 x! c  return 1;
) D8 `- f) P( z2 p7 ~  }2 V) x3 A' |  `) K; B
//   else if(KEY1==0)
8 f7 b* U' `5 B0 \% ^! ]7 R3 v//   {return 2;}
' \- C% [5 C) z8 [+ W- `//   else if(KEY2==1)
- ]; u  P# G6 S9 _% J% z//   {return 3;}}
# h* _' t" P  |: }}
6 C# Z9 g; w# O6 }  D    else if(KEY0==1)key_up=1;  //&&KEY1==1&&KEY2==1没有键按下
( c% A8 S: C  I" A( X9 a   return 0;// 无按键按下$ n) Q5 s% V* c3 p) _& w
}* K1 J- h6 v) ^
1 p( ^0 U/ a2 w5 n
key.h7 g2 S5 ]! D, q3 j( m% }0 [
#ifndef KEY_H_
) e0 v: [# u3 E. {. P3 Z. r#define KEY_H_
: x4 s8 b) u( P#define KEY0  GpioDataRegs.GPADAT.bit.GPIO13
5 W" X4 Y9 r* K#include "main.h"
4 A: \5 s; S+ L( X) x4 ~% W1 V5 T
7 f( g3 X3 m* Uvoid Key_Gpoi_Init(void);
  C- K7 U8 X1 `( uu8 KeyScan(void);
7 l/ H* B/ f& n- J; m
) N* G! q5 @- E, x3 o8 L" A% Z) e#endif /* KEY_H_ */. b  `8 Y" J* K

7 R3 M! W) _! `8 \) O. i& f6 m5 x3 UMAIN.C
1 I3 J0 K1 s' F  B1 mvoid main(void)
5 R9 ]% B# P# B7 c1 Q8 x{( Z- p9 I& y4 a# S- S/ Z, A
    u8 key=0;   
  o6 {  r, b$ n/ S/ |//初始化2 `8 ^0 z/ Q3 U
     InitSysCtrl(); //初始化系统时钟到150M,关看门狗,开启外设时钟
  p, ]1 K$ b- O3 K2 ]8 i/ a* l     InitGpio();    // 初始化GPIO到复位状态8 i9 ~, H+ k$ i, B+ u6 L7 @
2 T  c5 `, m( a3 K& M8 V; U
    DINT;              //关闭CPU中断
! T$ M, y$ M2 N' Z# l    InitPieCtrl();
1 A6 l  @* P! b2 N% ^: |    IER = 0x0000;
( K$ v' r8 z2 c( w! s    IFR = 0x0000;+ x% l" c8 i, n5 F+ m
    InitPieVectTable();  //初始化中断向量表
5 X7 R  v* a5 ~5 P& T+ n9 }
/ x: W8 v( H9 b* F9 G: u  f    //外设配置% O3 D3 A4 B& o4 X& r3 C
    Led_Gpoi_Init();   //led端口初始化6 M8 ?* B) K0 v# c0 @, A! E0 H' M
    Key_Gpoi_Init(); //按键IO初始化
) u! j  P: |6 g8 q7 Y% c% R+ N$ k    while(1)
. w7 c$ {) T+ r8 m    {
$ [! K- L& M4 M; M9 X8 v6 c, Q       key = KeyScan()  ; //扫描按键9 O$ X6 ]8 \% l% [
      switch(key)        //根据键值来做出不同的相应
& |' N& W8 ]* |; t, E! ?6 `      {
) |2 k( @4 l" P" t# H     case 1ED1=0;break;
; q! p7 x8 ]0 \9 d     case 2:.......6 g8 [# K; Y2 p9 h7 K; h2 R7 s! Y9 ~
      .....% J* W% L5 f) t+ ?7 J( L; n
    .......
2 M9 u& w" ]3 |9 u( d/ B6 F" l    }. s8 X* ^3 E! P3 R6 S
   }' ^& j5 h) k  a& `8 e
}8 ~! X2 E2 m# D+ Q+ s9 X, ^

1 i& ?  {" D% \% R8 ]+ o# b5 pmain.h
- S' c6 d: X1 }% |#ifndef _MAIN_H8 U- M! f. F( ~3 \
#define _MAIN_H
' B+ Z: z9 |) H" H' L2 k/ W: W' a; g% @$ R+ ^8 r
#include "DSP2833x_Device.h"     // HeadeRFile Include File
! A# c0 u  O. A3 O3 x#include "DSP2833x_Examples.h"   // Examples Include File
' K1 o6 w( r7 Q( m, e
, j9 X  T: G3 \, w#include "flash_ram.h"* v; n9 w. J$ @3 g( S
#include "led.h"
* Q0 w' ?. T+ X( ?! N  N#include "key.h"0 D. D8 s  |, I; ?
#include "extint.h"  B7 J4 d6 Q# D/ ?/ w  P. u
#include "timer.h"& ^4 L$ J9 M7 [
#include "sci.h"* y2 T/ N: S) t/ f* T0 K
#include "pwm.h"8 w8 k5 S+ |/ N: `5 _0 N
#include "cap.h"
1 b4 O2 z: ~, K4 N$ O8 D3 \! A#include "ad.h"9 v; V4 Q5 A: E1 w, I6 U
#include "can.h"3 v; D# Q& w, M+ u! }9 M
#include "spi.h"
' b& _2 G' C& h7 L4 B# N0 }& V, h. l
: V" M& Z0 S- s3 U#include "NRF2401.h"0 a9 V  F+ Q5 L- S

, o5 {' J& J1 ?( |+ D9 E#endif* \- t; B/ f# E: @+ b0 `

该用户从未签到

2#
发表于 2016-6-29 10:16 | 只看该作者
感谢楼主分享!!!
: a1 u7 [+ b( E& S; y: Q

该用户从未签到

3#
发表于 2016-6-29 10:44 | 只看该作者
看贴学心得,回贴是美德, S( u; [# A% n! |$ A
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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