initxintf16gpio 中为什么所有的复用引脚都为3

initxintf16gpio 中为什么所有的复用引脚都为3,第1张

这是 DSP28335的例程,程序目的是通过按不同的按键,通过中断改变LED的闪动方式

,你可以对比一下。 (DSP2812和 DSP28335是差不多的)

#include "DSP2833x_Deviceh" // DSP2833x Headerfile Include File#include "DSP2833x_Examplesh" // DSP2833x Examples Include File

#define LED1_ON GpioDataRegsGPASETbitGPIO0=1

#define LED1_OFF GpioDataRegsGPACLEARbitGPIO0=1

#define LED2_ON GpioDataRegsGPASETbitGPIO1=1

#define LED2_OFF GpioDataRegsGPACLEARbitGPIO1=1

#define LED3_ON GpioDataRegsGPASETbitGPIO2=1

#define LED3_OFF GpioDataRegsGPACLEARbitGPIO2=1

#define LED4_ON GpioDataRegsGPASETbitGPIO3=1

#define LED4_OFF GpioDataRegsGPACLEARbitGPIO3=1

#define LED5_ON GpioDataRegsGPASETbitGPIO4=1

#define LED5_OFF GpioDataRegsGPACLEARbitGPIO4=1

#define LED6_ON GpioDataRegsGPASETbitGPIO5=1

#define LED6_OFF GpioDataRegsGPACLEARbitGPIO5=1

#define LED7_ON GpioDataRegsGPBSETbitGPIO51=1

#define LED7_OFF GpioDataRegsGPBCLEARbitGPIO51=1

#define LED8_ON GpioDataRegsGPBSETbitGPIO50=1

#define LED8_OFF GpioDataRegsGPBCLEARbitGPIO50=1

interrupt void ISRExint3(void);

interrupt void ISRExint4(void);

interrupt void ISRExint5(void);

interrupt void ISRExint6(void);

void configtestled(void);

Uint16 sign ;

void main(void)

{

// Step 1 Initialize System Control:

// PLL, WatchDog, enable Peripheral Clocks

// This example function is found in the DSP2833x_SysCtrlc file

InitSysCtrl();

// Step 2 Initalize GPIO:

// This example function is found in the DSP2833x_Gpioc file and

// illustrates how to set the GPIO to it's default state

// InitGpio(); // Skipped for this example

InitXintf16Gpio(); //zq

// Step 3 Clear all interrupts and initialize PIE vector table:

// Disable CPU interrupts

DINT;

// Initialize the PIE control registers to their default state

// The default state is all PIE interrupts disabled and flags

// are cleared

// This function is found in the DSP2833x_PieCtrlc file

InitPieCtrl();

// Disable CPU interrupts and clear all CPU interrupt flags:

IER = 0x0000;

IFR = 0x0000;

// Initialize the PIE vector table with pointers to the shell Interrupt

// Service Routines (ISR)

// This will populate the entire table, even if the interrupt

// is not used in this example This is useful for debug purposes

// The shell ISR routines are found in DSP2833x_DefaultIsrc

// This function is found in DSP2833x_PieVectc

InitPieVectTable();

// Interrupts that are used in this example are re-mapped to// ISR functions found within this file

EALLOW; // This is needed to write to EALLOW protected registers

PieVectTableXINT3 = ISRExint3;

PieVectTableXINT4 = ISRExint4;

PieVectTableXINT5 = ISRExint5;

PieVectTableXINT6 = ISRExint6;

EDIS; // This is needed to disable write to EALLOW protected registers

PieCtrlRegsPIECTRLbitENPIE = 1; // Enable the PIE block

PieCtrlRegsPIEIER12bitINTx1= 1;

PieCtrlRegsPIEIER12bitINTx2= 1;

PieCtrlRegsPIEIER12bitINTx3= 1;

PieCtrlRegsPIEIER12bitINTx4= 1;

IER |= M_INT12; // Enable CPU int1

EINT; // Enable Global interrupt INTM

ERTM; // Enable Global realtime interrupt DBGM

configtestled();

sign = 0;

while(1)

{

if(sign==0)

{ LED1_OFF;

LED2_OFF;

LED3_OFF;

LED4_OFF;

LED5_OFF;

LED6_OFF;

LED7_OFF;

LED8_OFF;

DELAY_US(50000);

LED1_ON;

DELAY_US(50000);

LED2_ON;

DELAY_US(50000);

LED3_ON;

DELAY_US(50000);

LED4_ON;

DELAY_US(50000);

LED5_ON;

DELAY_US(50000);

LED6_ON;

DELAY_US(50000);

LED7_ON;

DELAY_US(50000);

LED8_ON;

DELAY_US(50000); //NO XINT

}

if(sign==3)

{

LED1_OFF;

LED2_OFF;

LED3_OFF;

LED4_OFF;

LED5_OFF;

LED6_OFF;

LED7_OFF;

LED8_OFF;

DELAY_US(50000);

LED1_ON;

LED2_ON;

DELAY_US(50000);

LED3_ON;

LED4_ON;

DELAY_US(50000);

LED5_ON;

LED6_ON;

DELAY_US(50000);

LED7_ON;

LED8_ON;

DELAY_US(50000); // XINT3 COME

}

if(sign==4)

{ LED1_ON;

LED2_ON;

LED3_ON;

LED4_ON;

LED5_ON;

LED6_ON;

LED7_ON;

LED8_ON;

DELAY_US(50000);

LED1_OFF;

DELAY_US(50000);

LED2_OFF;

DELAY_US(50000);

LED3_OFF;

DELAY_US(50000);

LED4_OFF;

DELAY_US(50000);

LED5_OFF;

DELAY_US(50000);

LED6_OFF;

DELAY_US(50000);

LED7_OFF;

DELAY_US(50000);

LED8_OFF;

DELAY_US(50000); // XINT4 COME

}

if(sign==5)

{LED1_ON;

LED2_ON;

LED3_ON;

LED4_ON;

LED5_ON;

LED6_ON;

LED7_ON;

LED8_ON;

DELAY_US(50000);

LED1_OFF;

LED2_OFF;

DELAY_US(50000);

LED3_OFF;

LED4_OFF;

LED1_ON;

LED2_ON;

DELAY_US(50000);

LED5_OFF;

LED6_OFF;

LED3_ON;

LED4_ON;

DELAY_US(50000);

LED7_OFF;

LED8_OFF;

LED5_ON;

LED6_ON;

DELAY_US(50000); // XINT5 COME

}

if(sign==6)

{LED1_OFF;

LED2_ON;

LED3_OFF;

LED4_ON;

LED5_OFF;

LED6_ON;

LED7_OFF;

LED8_ON;

DELAY_US(50000);

LED1_ON;

LED2_OFF;

LED3_ON;

LED4_OFF;

LED5_ON;

LED6_OFF;

LED7_ON;

LED8_OFF;

DELAY_US(50000); // XINT5 COME

}

}

}

interrupt void ISRExint3(void)

{

PieCtrlRegsPIEACKall = PIEACK_GROUP12;

sign=3;

}

interrupt void ISRExint4(void)

{

PieCtrlRegsPIEACKall = PIEACK_GROUP12;

sign=4;

}

interrupt void ISRExint5(void)

{

PieCtrlRegsPIEACKall = PIEACK_GROUP12;

sign=5;

}

interrupt void ISRExint6(void)

{

PieCtrlRegsPIEACKall = PIEACK_GROUP12;

sign=6;

}

void configtestled(void)

{

EALLOW;

GpioCtrlRegsGPAMUX1bitGPIO0 = 0; // GPIO0 = GPIO0

GpioCtrlRegsGPADIRbitGPIO0 = 1;

GpioCtrlRegsGPAMUX1bitGPIO1 = 0; // GPIO1 = GPIO1

GpioCtrlRegsGPADIRbitGPIO1 = 1;

GpioCtrlRegsGPAMUX1bitGPIO2 = 0; // GPIO2 = GPIO2

GpioCtrlRegsGPADIRbitGPIO2 = 1;

GpioCtrlRegsGPAMUX1bitGPIO3 = 0; // GPIO3 = GPIO3

GpioCtrlRegsGPADIRbitGPIO3 = 1;

GpioCtrlRegsGPAMUX1bitGPIO4 = 0; // GPIO4 = GPIO4

GpioCtrlRegsGPADIRbitGPIO4 = 1;

GpioCtrlRegsGPAMUX1bitGPIO5 = 0; // GPIO5 = GPIO5

GpioCtrlRegsGPADIRbitGPIO5 = 1;

GpioCtrlRegsGPBMUX2bitGPIO51 = 0; // GPIO51 = GPIO51

GpioCtrlRegsGPBDIRbitGPIO51 = 1;

GpioCtrlRegsGPBPUDbitGPIO51=0;

GpioCtrlRegsGPBMUX2bitGPIO50 = 0; // GPIO50 = GPIO50

GpioCtrlRegsGPBDIRbitGPIO50 = 1;

GpioCtrlRegsGPBPUDbitGPIO50=0;

EDIS;

}

//===========================================================================

// No more

//===========================================================================

1、首先在采用CCS60编译器进行代码编写时,要进行相应的设置,如下图所示。

2、其中,外扩接在Zone7上,所以地址编号从0x200000开始。

3、在初始化中,InitSysCtrl函数对XINTF时钟;InitXintf函数中配置相关寄存器,并且,将对应IO设置为XINTF外设使用。

4、最后将程序下载到控制板,通过“View—>Memory”进行在线调试查看,可以发现在片外RAM中的数据变化。

F28335是德州仪器(Texas Instruments)公司推出的一款高性能数字信号处理器(DSP),它主要用于控制应用领域,例如电机控制、太阳能逆变器、UPS系统、电源管理等。F28335拥有多种类型的存储器,主要包括以下几种:

闪存存储器:F28335拥有128KB闪存存储器,用于存储程序代码和数据。闪存存储器的特点是可以进行擦除和编程,支持可编程的闪存扇区大小和多区域保护。

RAM存储器:F28335拥有68KB RAM存储器,其中包括48KB数据RAM和20KB程序RAM。数据RAM用于存储运行时的数据,程序RAM用于存储程序代码和数据。

可扩展存储器接口(XINTF):F28335拥有8通道XINTF接口,可以连接外部存储器,如SRAM、FLASH、EPROM等,扩展系统存储容量。

通用I/O口:F28335拥有96个通用I/O口,其中的部分可以配置为外部存储器的地址线、数据线和控制信号线。

F28335主要用于存储和运行控制应用程序的代码和数据,包括控制算法、参数和配置信息等。闪存存储器主要用于存储程序代码和数据,RAM存储器用于存储运行时的数据,XINTF接口用于连接外部存储器扩展系统存储容量。通用I/O口可以配置为外部存储器的地址线、数据线和控制信号线,实现对外部存储器的控制和访问。

以上就是关于initxintf16gpio 中为什么所有的复用引脚都为3全部的内容,包括:initxintf16gpio 中为什么所有的复用引脚都为3、编写一个程序,把片内RAM从30H开始存放的16个数据传送到片外RAM从0000H开始的单元中。、F28335配置了哪些存储器,主要用于存储什么内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9839289.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存