1.首先添加文件 V101\DSP2833x_common\source\DSP2833x_Xintf
在我之前给的资源里面含有!(V101)
这个.c 文件添加到 res 新建文件夹里面。
在之前的建立工程的基础上
2.我们需要运用一个新的函数 InitXintf();
他的功能:定义映射区域的代码:
InitXintf.c
- // TI File $Revision: /main/5 $
- // Checkin $Date: August 16, 2007 11:06:26 $
- //###########################################################################
- //
- // FILE: DSP2833x_Xintf.c
- //
- // TITLE: DSP2833x Device External Interface Init & Support Functions.
- //
- // DESCRIPTION:
- //
- // Example initialization function for the external interface (XINTF).
- // This example configures the XINTF to its default state. For an
- // example of how this function being used refer to the
- // examples/run_from_xintf project.
- //
- //###########################################################################
- // $TI Release: DSP2833x Header Files V1.01 $
- // $Release Date: September 26, 2007 $
- //###########################################################################
-
- #include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
- #include "DSP2833x_Examples.h" // DSP2833x Examples Include File
-
- //---------------------------------------------------------------------------
- // InitXINTF:
- //---------------------------------------------------------------------------
- // This function initializes the External Interface the default reset state.
- //
- // Do not modify the timings of the XINTF while running from the XINTF. Doing
- // so can yield unpredictable results
-
-
- void InitXintf(void)
- {
- // This shows how to write to the XINTF registers. The
- // values used here are the default state after reset.
- // Different hardware will require a different configuration.
-
- // For an example of an XINTF configuration used with the
- // F28335 eZdsp, refer to the examples/run_from_xintf project.
-
- // Any changes to XINTF timing should only be made by code
- // running outside of the XINTF.
-
- // All Zones---------------------------------
- // Timing for all zones based on XTIMCLK = 1/2 SYSCLKOUT
- EALLOW;
- XintfRegs.XINTCNF2.bit.XTIMCLK = 1;
- // No write buffering
- XintfRegs.XINTCNF2.bit.WRBUFF = 0;
- // XCLKOUT is enabled
- XintfRegs.XINTCNF2.bit.CLKOFF = 0;
- // XCLKOUT = XTIMCLK/2
- XintfRegs.XINTCNF2.bit.CLKMODE = 1;
-
-
- // Zone 0------------------------------------
- // When using ready, ACTIVE must be 1 or greater
- // Lead must always be 1 or greater
- // Zone write timing
- XintfRegs.XTIMING0.bit.XWRLEAD = 3;
- XintfRegs.XTIMING0.bit.XWRACTIVE = 7;
- XintfRegs.XTIMING0.bit.XWRTRAIL = 3;
- // Zone read timing
- XintfRegs.XTIMING0.bit.XRDLEAD = 3;
- XintfRegs.XTIMING0.bit.XRDACTIVE = 7;
- XintfRegs.XTIMING0.bit.XRDTRAIL = 3;
-
- // double all Zone read/write lead/active/trail timing
- XintfRegs.XTIMING0.bit.X2TIMING = 1;
-
- // Zone will sample XREADY signal
- XintfRegs.XTIMING0.bit.USEREADY = 1;
- XintfRegs.XTIMING0.bit.READYMODE = 1; // sample asynchronous
-
- // Size must be either:
- // 0,1 = x32 or
- // 1,1 = x16 other values are reserved
- XintfRegs.XTIMING0.bit.XSIZE = 3;
-
- // Zone 6------------------------------------
- // When using ready, ACTIVE must be 1 or greater
- // Lead must always be 1 or greater
- // Zone write timing
- XintfRegs.XTIMING6.bit.XWRLEAD = 3;
- XintfRegs.XTIMING6.bit.XWRACTIVE = 7;
- XintfRegs.XTIMING6.bit.XWRTRAIL = 3;
- // Zone read timing
- XintfRegs.XTIMING6.bit.XRDLEAD = 3;
- XintfRegs.XTIMING6.bit.XRDACTIVE = 7;
- XintfRegs.XTIMING6.bit.XRDTRAIL = 3;
-
- // double all Zone read/write lead/active/trail timing
- XintfRegs.XTIMING6.bit.X2TIMING = 1;
-
- // Zone will sample XREADY signal
- XintfRegs.XTIMING6.bit.USEREADY = 1;
- XintfRegs.XTIMING6.bit.READYMODE = 1; // sample asynchronous
-
- // Size must be either:
- // 0,1 = x32 or
- // 1,1 = x16 other values are reserved
- XintfRegs.XTIMING6.bit.XSIZE = 3;
-
- // Bank switching
- // Assume Zone 6 is slow, so add additional BCYC cycles
- // when ever switching from Zone 6 to another Zone.
- // This will help avoid bus contention.
- XintfRegs.XBANK.bit.BANK = 6;
- XintfRegs.XBANK.bit.BCYC = 6;
-
- // Zone 7------------------------------------
- // When using ready, ACTIVE must be 1 or greater
- // Lead must always be 1 or greater
- // Zone write timing
- XintfRegs.XTIMING7.bit.XWRLEAD = 3;
- XintfRegs.XTIMING7.bit.XWRACTIVE = 7;
- XintfRegs.XTIMING7.bit.XWRTRAIL = 3;
- // Zone read timing
- XintfRegs.XTIMING7.bit.XRDLEAD = 3;
- XintfRegs.XTIMING7.bit.XRDACTIVE = 7;
- XintfRegs.XTIMING7.bit.XRDTRAIL = 3;
-
- // double all Zone read/write lead/active/trail timing
- XintfRegs.XTIMING7.bit.X2TIMING = 1;
-
- // Zone will sample XREADY signal
- XintfRegs.XTIMING7.bit.USEREADY = 1;
- XintfRegs.XTIMING7.bit.READYMODE = 1; // sample asynchronous
-
- // Size must be either:
- // 0,1 = x32 or
- // 1,1 = x16 other values are reserved
- XintfRegs.XTIMING7.bit.XSIZE = 3;
-
- // Bank switching
- // Assume Zone 7 is slow, so add additional BCYC cycles
- // when ever switching from Zone 6 to another Zone.
- // This will help avoid bus contention.
- // XintfRegs.XBANK.bit.BANK = 7;
- // XintfRegs.XBANK.bit.BCYC = 7;
- EDIS;
- //Force a pipeline flush to ensure that the write to
- //the last register configured occurs before returning.
-
- InitXintf16Gpio();
- // InitXintf32Gpio();
-
- asm(" RPT #7 || NOP");
-
- }
-
- void InitXintf32Gpio()
- {
- EALLOW;
- GpioCtrlRegs.GPBMUX2.bit.GPIO48 = 3; // XD31
- GpioCtrlRegs.GPBMUX2.bit.GPIO49 = 3; // XD30
- GpioCtrlRegs.GPBMUX2.bit.GPIO50 = 3; // XD29
- GpioCtrlRegs.GPBMUX2.bit.GPIO51 = 3; // XD28
- GpioCtrlRegs.GPBMUX2.bit.GPIO52 = 3; // XD27
- GpioCtrlRegs.GPBMUX2.bit.GPIO53 = 3; // XD26
- GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 3; // XD25
- GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 3; // XD24
- GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 3; // XD23
- GpioCtrlRegs.GPBMUX2.bit.GPIO57 = 3; // XD22
- GpioCtrlRegs.GPBMUX2.bit.GPIO58 = 3; // XD21
- GpioCtrlRegs.GPBMUX2.bit.GPIO59 = 3; // XD20
- GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 3; // XD19
- GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 3; // XD18
- GpioCtrlRegs.GPBMUX2.bit.GPIO62 = 3; // XD17
- GpioCtrlRegs.GPBMUX2.bit.GPIO63 = 3; // XD16
-
- GpioCtrlRegs.GPBQSEL2.bit.GPIO48 = 3; // XD31 asynchronous input
- GpioCtrlRegs.GPBQSEL2.bit.GPIO49 = 3; // XD30 asynchronous input
- GpioCtrlRegs.GPBQSEL2.bit.GPIO50 = 3; // XD29 asynchronous input
- GpioCtrlRegs.GPBQSEL2.bit.GPIO51 = 3; // XD28 asynchronous input
- GpioCtrlRegs.GPBQSEL2.bit.GPIO52 = 3; // XD27 asynchronous input
- GpioCtrlRegs.GPBQSEL2.bit.GPIO53 = 3; // XD26 asynchronous input
- GpioCtrlRegs.GPBQSEL2.bit.GPIO54 = 3; // XD25 asynchronous input
- GpioCtrlRegs.GPBQSEL2.bit.GPIO55 = 3; // XD24 asynchronous input
- GpioCtrlRegs.GPBQSEL2.bit.GPIO56 = 3; // XD23 asynchronous input
- GpioCtrlRegs.GPBQSEL2.bit.GPIO57 = 3; // XD22 asynchronous input
- GpioCtrlRegs.GPBQSEL2.bit.GPIO58 = 3; // XD21 asynchronous input
- GpioCtrlRegs.GPBQSEL2.bit.GPIO59 = 3; // XD20 asynchronous input
- GpioCtrlRegs.GPBQSEL2.bit.GPIO60 = 3; // XD19 asynchronous input
- GpioCtrlRegs.GPBQSEL2.bit.GPIO61 = 3; // XD18 asynchronous input
- GpioCtrlRegs.GPBQSEL2.bit.GPIO62 = 3; // XD17 asynchronous input
- GpioCtrlRegs.GPBQSEL2.bit.GPIO63 = 3; // XD16 asynchronous input
-
-
- InitXintf16Gpio();
- }
-
- void InitXintf16Gpio()
- {
- EALLOW;
- GpioCtrlRegs.GPCMUX1.bit.GPIO64 = 3; // XD15
- GpioCtrlRegs.GPCMUX1.bit.GPIO65 = 3; // XD14
- GpioCtrlRegs.GPCMUX1.bit.GPIO66 = 3; // XD13
- GpioCtrlRegs.GPCMUX1.bit.GPIO67 = 3; // XD12
- GpioCtrlRegs.GPCMUX1.bit.GPIO68 = 3; // XD11
- GpioCtrlRegs.GPCMUX1.bit.GPIO69 = 3; // XD10
- GpioCtrlRegs.GPCMUX1.bit.GPIO70 = 3; // XD19
- GpioCtrlRegs.GPCMUX1.bit.GPIO71 = 3; // XD8
- GpioCtrlRegs.GPCMUX1.bit.GPIO72 = 3; // XD7
- GpioCtrlRegs.GPCMUX1.bit.GPIO73 = 3; // XD6
- GpioCtrlRegs.GPCMUX1.bit.GPIO74 = 3; // XD5
- GpioCtrlRegs.GPCMUX1.bit.GPIO75 = 3; // XD4
- GpioCtrlRegs.GPCMUX1.bit.GPIO76 = 3; // XD3
- GpioCtrlRegs.GPCMUX1.bit.GPIO77 = 3; // XD2
- GpioCtrlRegs.GPCMUX1.bit.GPIO78 = 3; // XD1
- GpioCtrlRegs.GPCMUX1.bit.GPIO79 = 3; // XD0
-
- GpioCtrlRegs.GPBMUX1.bit.GPIO40 = 3; // XA0/XWE1n
- GpioCtrlRegs.GPBMUX1.bit.GPIO41 = 3; // XA1
- GpioCtrlRegs.GPBMUX1.bit.GPIO42 = 3; // XA2
- GpioCtrlRegs.GPBMUX1.bit.GPIO43 = 3; // XA3
- GpioCtrlRegs.GPBMUX1.bit.GPIO44 = 3; // XA4
- GpioCtrlRegs.GPBMUX1.bit.GPIO45 = 3; // XA5
- GpioCtrlRegs.GPBMUX1.bit.GPIO46 = 3; // XA6
- GpioCtrlRegs.GPBMUX1.bit.GPIO47 = 3; // XA7
-
- GpioCtrlRegs.GPCMUX2.bit.GPIO80 = 3; // XA8
- GpioCtrlRegs.GPCMUX2.bit.GPIO81 = 3; // XA9
- GpioCtrlRegs.GPCMUX2.bit.GPIO82 = 3; // XA10
- GpioCtrlRegs.GPCMUX2.bit.GPIO83 = 3; // XA11
- GpioCtrlRegs.GPCMUX2.bit.GPIO84 = 3; // XA12
- GpioCtrlRegs.GPCMUX2.bit.GPIO85 = 3; // XA13
- GpioCtrlRegs.GPCMUX2.bit.GPIO86 = 3; // XA14
- GpioCtrlRegs.GPCMUX2.bit.GPIO87 = 3; // XA15
- GpioCtrlRegs.GPBMUX1.bit.GPIO39 = 3; // XA16
- GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 3; // XA17
- GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 3; // XA18
- GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 3; // XA19
-
- GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 3; // XREADY
- GpioCtrlRegs.GPBMUX1.bit.GPIO35 = 3; // XRNW
- GpioCtrlRegs.GPBMUX1.bit.GPIO38 = 3; // XWE0
-
- GpioCtrlRegs.GPBMUX1.bit.GPIO36 = 3; // XZCS0
- GpioCtrlRegs.GPBMUX1.bit.GPIO37 = 3; // XZCS7
- GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 3; // XZCS6
- EDIS;
- }
-
- //===========================================================================
- // No more.
- //===========================================================================
3.我们的实验代码:
我们加上蜂鸣器模块,蜂鸣器是 p60 引脚控制。
蜂鸣器是高电平 发出响声!
LED灯是低电平点亮!
实验功能:实验流水灯的效果:并且每亮一个灯,我们的蜂鸣器就响一下!
代码:
-
- #include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
- #include "DSP2833x_Examples.h" // DSP2833x Examples Include File
-
- /****************端口宏定义*****************/
- #define LED *((Uint16 *)0x4600)
- const Uint16 LedCode[9]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0XFF};
-
- /****************函数声明*******************/
- void Gpio_select(void); //gpio端口配置子程序
- void delay_loop(void);
-
- void main(void)
- {
-
- InitSysCtrl();
-
- Gpio_select();
- DINT;
- InitPieCtrl();
- IER = 0x0000;
- IFR = 0x0000;
- InitPieVectTable();
- InitXintf();
- LED=0x00;//全亮
- for(;;)
- {
- unsigned int i=0;
- for(i=0;i<8;i++)
- {
- LED=LedCode[i];
- delay_loop();
- }
-
- }
- }
-
- void delay_loop()
- {
- Uint32 i;
- Uint32 j;
-
-
- GpioDataRegs.GPBSET.bit.GPIO60=1;//设置GPIO60输出高电平 高电平响
- for(i=0;i<40;i++)
- {
- for (j = 0; j < 100000; j++);
- }
-
- GpioDataRegs.GPBCLEAR.bit.GPIO60 = 1; //设置GPIO60输出为低电平
- for(i=0;i<40;i++)
- {
- for (j = 0; j < 100000; j++);
-
- }
-
-
- }
-
-
-
- void Gpio_select(void)
- {
-
-
-
- EALLOW;
- GpioCtrlRegs.GPBMUX1.bit.GPIO44 = 00; // GPIO44为GPIO功能
- GpioCtrlRegs.GPBDIR.bit.GPIO44 = 1; // GPIO44为输出功能
-
- GpioCtrlRegs.GPBMUX1.bit.GPIO45 = 00; // GPIO45为GPIO功能
- GpioCtrlRegs.GPBDIR.bit.GPIO45 = 1; // GPIO45为输出功能
-
- GpioCtrlRegs.GPBMUX2.bit.GPIO51 = 00; // GPIO51为GPIO功能
- GpioCtrlRegs.GPBDIR.bit.GPIO51 = 1; // GPIO51为输出功能
-
-
- GpioCtrlRegs.GPBMUX2.bit.GPIO53 = 00; // GPIO53为GPIO功能
- GpioCtrlRegs.GPBDIR.bit.GPIO53 = 1; // GPIO53为输出功能
-
- GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 00; // GPIO56为GPIO功能
- GpioCtrlRegs.GPBDIR.bit.GPIO56 = 1; // GPIO56为输出功能
-
- GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 00; // GPIO60为GPIO功能
- GpioCtrlRegs.GPBDIR.bit.GPIO60 = 1; // GPIO60为输出功能
-
- GpioCtrlRegs.GPCMUX1.bit.GPIO72 = 00; // GPIO72为GPIO功能
- GpioCtrlRegs.GPCDIR.bit.GPIO72 = 1; // GPIO72为输出功能
-
- GpioCtrlRegs.GPCMUX1.bit.GPIO77 = 00; // GPIO77为GPIO功能
- GpioCtrlRegs.GPCDIR.bit.GPIO77 = 1; // GPIO77为输出功能
-
-
- EDIS;
-
-
-
-
- }
- //===========================================================================
- // No more.
- //===========================================================================
-
4.实验结论:
本次实验:映射区域的LED 灯 不可以用普通的代码实现!
普通代码:就是引脚初始化! 再定义高低电平!
5.最后的实物图片:

6.知识的巩固!
GPIO端口设置如下:
代码:
- void InitGpio(void) //初始化GPIO
- {
- EALLOW;
- //-----------------------------------------------------------------------------------
-
- GpioCtrlRegs.GPBMUX1.all = 0xFFFFFFF0; // 配置 GPIO32-33为I/O口
- // 配置 GPIO34 for XREADY 就绪
- // 配置 GPIO35 for XR/W 读
- // 配置 GPIO36 for XZCS0 片选
- // 配置 GPIO37 for XZCS7 片选
- // 配置 GPIO38 for XWE0 写
- // 配置 GPIO39 for XA16 地址
- // 配置 GPIO40 for XA0
- // 配置 GPIO41 for XA1
- // 配置 GPIO42 for XA2
- // 配置 GPIO43 for XA3
- // 配置 GPIO44 for XA4
- // 配置 GPIO45 for XA5
- // 配置 GPIO46 for XA6
- // 配置 GPIO47 for XA7
-
- GpioCtrlRegs.GPCMUX1.all = 0xFFFFFFFF; // 配置 GPIO64-GPIO79 for XD15-XD0 数据
-
- GpioCtrlRegs.GPCMUX2.all = 0xFFFFFFFF; // 配置 GPIO80-GPIO87 for XA8-XA15 地址
-
-
- // GpioCtrlRegs.GPBDIR.all = 0xE0000000; // GPIO32-GPIO60 为输入
-
- GpioCtrlRegs.GPCDIR.all = 0x00000000; // GPI064-GPIO95 为输入
-
- //----------------------------------------------------------------------------------------
- GpioCtrlRegs.GPAPUD.all = 0x0100; // 内部上拉 GPIO0-GPIO31
- GpioCtrlRegs.GPBPUD.all = 0x0000; // 内部上拉 GPIO32-GPIO63
- GpioCtrlRegs.GPCPUD.all = 0x0000; // 内部上拉 GPIO64-GPIO79
-
- EDIS;
-
- }