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

DSP28335的GPIO使用

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
GPIO通常用来做普通的输入输出,比如按键啊,LED啊,或者芯片的片选段之类的,算是最基本的操作。6 f8 H9 S2 Q  A
话不多说,直接上 代码+注释 记录一下,以备以后使用
+ T2 J  u3 @# J: ~; W' U我用的板子是研旭实用板8 g  o* h/ V8 C; ~! |1 O- U
- `. k$ h0 Y5 c! A, i! I
led.c) M! o) l" p+ A
#include "led.h"
7 b  B2 r' T" ?& L! P6 e0 I//LED和蜂鸣器初始化+ \& [- f0 G: [
void Led_Gpoi_Init(void)* [1 Q. l: x9 ?- Y9 f$ B# Y
{
8 Y" a; \+ a+ r0 M# q6 zEALLOW;  h3 Q6 B9 w+ M4 n7 |
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0; // GPIO0复用为GPIO功能
# K: I7 r3 g6 Q+ L' N  X# `GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;  // GPIO0设置为输出2 A- H/ N) `/ L9 ^3 J: e
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0; // GPIO1 = GPIO15 N  v( I, s5 S2 d
GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;  //GPIO0设置为输出
) p% d1 |2 i$ F3 A8 D9 d& XGpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0; //配置同上6 o' P2 U1 B6 ]: [8 K
GpioCtrlRegs.GPADIR.bit.GPIO6 = 1;" l- W0 ~7 z& h# c# H+ ^
GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 0; //- E: z# D# l# M' d
GpioCtrlRegs.GPADIR.bit.GPIO7 = 1;
1 {: u$ u7 x4 v$ S5 \/ eGpioCtrlRegs.GPBMUX2.bit.GPIO60 = 0; //蜂鸣器GPIO设置,GPIO60复用为GPIO功能
' i# {$ ]9 r) i9 I2 z0 Q' G' B       GpioCtrlRegs.GPBDIR.bit.GPIO60 = 1;  //设置为输出
  V6 B2 Y& Q' |; l5 |2 V9 P        LED1 = 1;  LED2 = 1;  LED3 = 1;  LED4 = 1;BUZZ_OFF: d- c! e! n8 |2 w/ ^6 D
EDIS;1 K- f. M$ T' o+ N, j& N, U5 V) y( d
}: V* L6 V9 a% ]* d

3 c( s$ H: b8 X( F" K! V$ Nled.h
  N3 m. A/ j# S% a) C#ifndef LED_H_
5 n& h7 |$ H. T9 ?3 t! g#define LED_H_
/ w6 {1 M3 P8 s. c
/ B) ^4 p* f5 M) M8 ?" O#include "main.h"
) c0 n; K) e" ?: r% r) k$ ~( \: ~! E, P" x# d0 M
//根据原理图,低电平LED亮" m/ f- F8 L& D
#define  LED3  GpioDataRegs.GPADAT.bit.GPIO0   //宏定义LED的数据寄存器
. d1 i0 {3 ]1 Y0 E; L#define  LED4  GpioDataRegs.GPADAT.bit.GPIO1
( N7 }! {& E( T7 c#define  LED1  GpioDataRegs.GPADAT.bit.GPIO63 A2 t9 H) H! y* L# r8 d
#define  LED2  GpioDataRegs.GPADAT.bit.GPIO7+ M' K3 \  X) Q3 _3 S8 O7 M- [9 v
9 b* k8 U  w& ~+ [: P% W0 s
#define  BUZZ_OFFGpioDataRegs.GPBSET.bit.GPIO60=1; //蜂鸣器不鸣叫) e$ I* M! K& D# M6 t% [) A
#define  BUZZ_ONGpioDataRegs.GPBCLEAR.bit.GPIO60=1;//蜂鸣器鸣叫
) [. p* l, {+ J2 g) E9 s
; n7 u6 U. \5 O! l1 |8 C8 Rvoid Led_Gpoi_Init(void);" {5 Y, f+ k5 c
: R2 `% {- w* \
#endif /* LED_H_ */
4 d6 c( C4 c- B: Q
5 l/ _: }! V' k+ Fkey.c1 L7 x3 v, o/ G" V
#include "key.h"( }" P; f  C& b* t2 z7 }% f' ?; ]
//按键IO口初始化
" ^7 |2 z. |; t$ u# _void Key_Gpoi_Init(void)
! U8 s- @: n/ q' J$ x% q# T7 @: v{3 |9 F; i# q' t* M2 V$ N$ V$ J5 o' y
EALLOW;, f0 x1 W! b1 U, S
GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 0;//按键GPIO设置,GPIO13复用为GPIO功能, h: r* `+ d+ r, d( [- w
GpioCtrlRegs.GPADIR.bit.GPIO13 = 0;  //设置为输入( z. d/ t% U' A$ N2 Z( U, L/ n
EDIS;
$ ]* V1 r7 n6 z( f9 o}
: t9 W3 y4 }, w' o2 d2 z/ \6 U% t3 I8 P! o

+ [! a3 A/ }2 ~  a; Gu8 KeyScan(void)  J6 h' [0 N: X
{! ^+ T  P; {: I, b: P5 E
static u8 key_up=1;//按键按松开标志( g' I2 @) a; M8 g1 |

9 T, j3 G) @/ O! Q& o
) m1 x: ^% ?) A    if( key_up&&(KEY0==0) )  //有键按下 ||KEY1==0||KEY2==0)
( {- [# @7 t1 E{
) X% @& G2 h0 |6 H& V       DELAY_US(10000);//去抖动* ^( e# I6 _, Q% \6 P+ d& `% ]
  key_up=0;     //表示按键没松开% G% n7 W# E' n  Z! A
  if(KEY0==0)    //按下KEY0
* T+ x" y: q% t5 e5 P6 J( X- X  |  {
+ F$ i( v" k4 [! j/ Q9 J  return 1;
; E+ N# i& m- V$ w6 Y  }& n8 p; `4 J7 |0 g& ~
//   else if(KEY1==0)2 a( N6 N7 K- z  z8 t
//   {return 2;}
3 j2 n( \: L* J  x( x8 |" Q//   else if(KEY2==1)" o8 L. @/ w% ]" U5 S  t* }
//   {return 3;}}
9 h& x2 ~/ \% H7 f8 R}( v  @2 e8 n& q+ \) y
    else if(KEY0==1)key_up=1;  //&&KEY1==1&&KEY2==1没有键按下
8 s0 x$ j8 D$ j& L   return 0;// 无按键按下/ l5 g4 @8 f! u& F
}
- R& m! Q0 K- ]
# N: g$ \) U2 K) Vkey.h
( N+ C/ h. @- ?+ ~! I5 j8 i#ifndef KEY_H_+ M8 k+ R, j! m$ y/ q* `
#define KEY_H_2 F; S  ]1 k! F
#define KEY0  GpioDataRegs.GPADAT.bit.GPIO13, G; q% E3 Q* K2 X
#include "main.h"' i1 W7 R& q' N+ B

: \% m" |9 w1 {5 H2 z6 u' gvoid Key_Gpoi_Init(void);* W# O2 f3 Y9 f' b
u8 KeyScan(void);, ?8 @# P8 \& q! Q0 r6 q8 l5 N1 z7 O

* X7 q* s7 \; j+ K8 |#endif /* KEY_H_ */
) X+ k, ]% r+ P. u8 i: z6 A6 ^; p. B. |, P$ U
MAIN.C; N/ [) p0 M2 h. e0 }( E2 g5 e
void main(void). ~7 e: V. b; I/ O- ?. A
{* M  E, Z; f5 u+ R% d
    u8 key=0;   
# J; _, c8 q. V* t//初始化& A% ]" r$ t2 p% e
     InitSysCtrl(); //初始化系统时钟到150M,关看门狗,开启外设时钟
# r7 q2 R+ V4 k( n     InitGpio();    // 初始化GPIO到复位状态6 a" P5 ~7 Z5 p8 M6 s
. E  \' v% v& H9 o8 ~# K
    DINT;              //关闭CPU中断  R3 h* h7 f# w8 n* ^; A
    InitPieCtrl();
8 ~. N" }  g/ q/ v    IER = 0x0000;
# `- j$ a" Q1 ~- n* q    IFR = 0x0000;
3 G6 c$ ^8 X- D    InitPieVectTable();  //初始化中断向量表
: @) A( P; r) U) I
( O% P/ u. V. H+ S9 w    //外设配置
0 f: q# _; B* S. g6 f7 l" b2 B    Led_Gpoi_Init();   //led端口初始化6 q- t: y) F9 q2 i* J8 y
    Key_Gpoi_Init(); //按键IO初始化
7 U$ K: [# d$ U2 n+ N. {- Z    while(1)
! r3 x& ?8 N5 u/ |3 o9 b! c    {
& z) o  A; n% [$ `/ S- A2 {       key = KeyScan()  ; //扫描按键
: s) J/ x2 t: k- z* ~9 x      switch(key)        //根据键值来做出不同的相应3 Z0 l) S+ E* z" \0 C( i
      {4 M3 F9 E6 _+ g4 \" F9 D" U$ {& e( u
     case 1ED1=0;break;
6 Y$ V* I* H$ ~; Y* B& Y% c     case 2:.......! q% D9 I" i& @
      .....1 z: @7 q% e- R/ L, H3 d$ ~, I
    .......  I0 F6 R: I# `+ ~& [& y2 f
    }
/ c9 `7 C$ b5 `6 B8 w   }
' u( g" `  w3 O  D5 x}1 {) P& G8 x0 U+ D" D
/ y) Y, C; ^+ @: }  X" l: N
main.h
+ h$ H& ~! l) @#ifndef _MAIN_H8 N4 z$ A4 n) O) f
#define _MAIN_H
% o. C1 Y3 D/ M# F& t( ~* I# e
% P) s  J4 ]" F#include "DSP2833x_Device.h"     // HeadeRFile Include File
5 j6 q4 L8 w* N* ]#include "DSP2833x_Examples.h"   // Examples Include File
! S* v- }- W9 ^$ z6 v3 R1 \  k7 l+ [' g' H5 c* n: E1 R
#include "flash_ram.h"
5 J% k! u  D$ m& T# y8 o1 k#include "led.h"4 l& g4 P; Y7 Y! t8 S
#include "key.h"  ?" r% }. I9 t; p- U2 @
#include "extint.h"" _8 |  u* A/ z8 c) n" Q
#include "timer.h"
) f. i& X" K1 P1 ]0 Y#include "sci.h"1 O3 g# n" }) _4 P8 X* s
#include "pwm.h"
+ t1 f( p$ A1 D) ~; w3 p' X#include "cap.h") h) t% d& Y9 E7 V" ^
#include "ad.h"
+ T3 q# A+ q- K2 g5 `/ L2 y6 {, J+ r#include "can.h"
4 y1 `1 r* S2 d#include "spi.h") w/ z, }0 o- T* _

$ K/ K; P$ x+ t4 e#include "NRF2401.h"
7 V" `! J2 r  `7 N. b) O7 x, W; F4 H; ~8 V0 Z& _
#endif
- w/ y0 G3 S6 {

该用户从未签到

2#
发表于 2016-6-29 10:16 | 只看该作者
感谢楼主分享!!!7 @. C4 H: h+ V  F1 m

该用户从未签到

3#
发表于 2016-6-29 10:44 | 只看该作者
看贴学心得,回贴是美德9 `1 q4 N2 c: \6 |5 ^
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-12 10:31 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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