This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F2.8027万:TMS320F2.8027万

Guru**** 1997805 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/572645/tms320f28027-tms320f28027

部件号:TMS320F2.8027万

您好!

我尝试在并行模式下连接8位LCD (16x2)。 我正在附加我尝试执行的基本代码。

请帮我解决问题。

当前状态为“LCD is not not Getting Initialized (液晶屏未初始化)”。

/************************************************************************ //*
LCD界面-8位模式											*//*
						*/*
*/*
*/************************************************************************
/

#include "DSP28x_Project.h" //设备标题文件和示例包括文件
#include "piccolo_lc.h"

void WriteCommandLCD(unsigned char CommandByte);
void WriteDataLCD(unsigned char DataByte);
void LCDDelay(void);
void LCDDelay1600(void);
void SendGPIO (unsigned Sysvalue);



	

	
	
	

	void main(void){Init; PCInitSysSysCtrl();syscr0;syscrl; sys;组=

	EALLOW;
	SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC =1;
	EDIS;

	INIT_INTERRUC();

	Memcopy(&RamfuncsLoadStart, &RamfuncsLoadEnd,&RamfuncsRunStart);
	InitFlash();

	//启用全局中断和较高优先级实时调试事件:
	EINT;//启用全局中断INTM
	ERTM;//启用全局实时中断DBGM

	Clear_variable();
	InitializeLCD();

	//	DisplayLCD (1,“欢迎”);
	//	DisplayLCD (2, "eLED");
	WriteCommandLCD(0x80);			//用于选择8位接口
	WriteDataLCD ('A')的命令;
		
	WriteCommandLCD(0xC0);			//用于选择8位接口
	WriteDataLCD('B')的命令;
	
	Delay_US(2000);
	While (1);
}/* WriteCommandLCD(0x1万)

LCD */CommandeLCD(Command/38)0;用于初

始化WriteLCD(Command/1万)0

	
				
	

				位(CommandeLCD(Command/ID)0位(Command/ID)0位/IDE)0接口(WriteLCD(Command)
	

				//选择8位接口
	Delay_US(1万);

	WriteCommandLCD(0x80);			//选择8位接口
	Delay_US(1万)的命令;
	
	WriteCommandLCD(0x01);			//选择8位接口
	Delay_US(1万)的命令;
}/*

将命令字节写入LCD */
无效GPCDE

	
	
	
	
	字节DataLCD(无符号){CModchar = Commandd = CMod.CMD;所有字节(Commandd )

	GpioDataRegs.GPACLEAR.Bit.GPIO18 = 1;//clear RS pin to write command

	GpioDataRegs.GPASET.bit.GPIO12 = 1;			//set EN high

	delay_US(10);

	GpioDataRegs.GPACLEAR.bit.GPGPGPGPGPGP12 = 1;		//set EN = DataDET= 1

	;


DataDET.G=
数据

	
	
	

	写入格列;所有字节(非格列数据) 			//清除RS引脚以写入命令	//将RS引脚设置为1以写入数据

	GpioDataRegs.GPASET.BIT.GPIO12 = 1;			//设置EN HIGH

	DELAY_US(10);

	GpioDataRegs.GPACLEAR.BIT.GPIO12 =1;		//设置EN LOW
}/*

Small Delay */ DelayIDE_US*1600


	




{ DelayDEVOID/}{ LCDUS}/}{ CIDE}/}{}{}/}{ LCDOWIDE*}{ L1}/}{ L1}{ CIDE}{ L1}/}{ LCDUS}{ L1}{
	L


/*使光标可见*/
void Cursoron(void)
{
	WriteCommandLCD(0x0F);//			命令打开光标
}/*

使光标不可见*/
void CursorOFF (void){

	WriteCommandLCD(0x0c);//			关闭光标命令
}/*

在LCD上显示消息*/
void DisplayLCD(char linber,a *enumint;消息
{
		
	IF (linenumber ==1)
	{//First	Line
		WriteCommandLCD(0x80);		//选择第一行
	}
	else
	{//	Second line
		WriteCommandLCD(0xC0);		//选择第二行
	}
	用于(A=0;A<16;A++)
	{
		WriteDataLCD(*Message);//		显示字符
		消息+; //increment pointer
	}
	return;
}
void init_gPIO()
{
	EALLOW;

		GpioGPAlRegs.GPACTRL.bit.QUALPRD2 =30;//

		启用
		GpioCtrlRegs.GPAMUX1.bit.GPIO12=0;
		GpioGPQSEL1.bit.quipoDIO = 2; gop.gop.gopo1
		
		
		= 1.gipo1 = 1.gopo1 = gopoiop.gipoiop.giop.giopiopiop.giop.giopiop.giopiop.adfiop.giop.giop.giop.apiop.apiopa= 1.adfo

		//命令RS
		GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0;
		GpioDataRegs.GPACLEAR.bit.GPIO18 = 2;
		GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 0;
		GpioCtrlRegs.GPADIR.bit.GPIO18 = 1;
		GPIO1.GPIO18 = 1;GPIOPAR.GPIO1.GPIO18

		//D0
		GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;
		GpioCtrlRegs.GPAQSEL1.bit.GPIO0 = 2;
		GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;
		GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;
		GPIOData.GPO0 = 0;GPIO1.
		//D1
		GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0;
		GpioCtrlRegs.GPAQSEL1.bit.GPIO1 = 2;
		GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;
		GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0;
		GPIO1 = Data.GPAC1.
		//D2
		GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 0;
		GpioCtrlRegs.GPAQSEL1.bit.GPIO2 = 2;
		GpioCtrlRegs.GPADIR.bit.GPIO2 = 1;
		GpioCtrlRegs.GPAPUD.bit.GPIO2 = 0;
		GPIO1.GPAC1.
		//D3
		GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 0;
		GpioCtrlRegs.GPAQSEL1.bit.GPIO3 = 2;
		GpioCtrlRegs.GPADIR.bit.GPIO3 = 1;
		GpioCtrlRegs.GPAPUD.bit.GPIOLE3 = 0;GPIO1.GPAC3=
		Data1.
		//D4
		GpioCtrlRegs.GPAMUX1.bit.GPIO4 = 0;
		GpioCtrlRegs.GPAQSEL1.bit.GPIO4 = 2;
		GpioCtrlRegs.GPADIR.bit.GPIO4 = 1;
		GpioCtrlRegs.GPAPUD.bit.GPIO4 = 0;GIOpio4
		= Datas.GPAC1.
		//D5
		GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 0;
		GpioCtrlRegs.GPAQSEL1.bit.GPIO5 = 2;
		GpioCtrlRegs.GPADIR.bit.GPIO5 = 1;
		GpioCtrlRegs.GPAPUD.bit.GPIO5 = 0;
		GPIOLE5 = 1.GPIOREGIO1.
		//D6
		GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0;
		GpioCtrlRegs.GPAQSEL1.bit.GPIO6 = 2;
		GpioCtrlRegs.GPADIR.bit.GPIO6 = 1;
		GpioCtrlRegs.GPAPUD.bit.GPIO6 = 0;
		GPIO1.AR.GPIO6 = 0;GPIOLEAR.GPOREGPIO6
		//D7
		GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 0;
		GpioCtrlRegs.GPAQSEL1.bit.GPIO7 = 2;
		GpioCtrlRegs.GPADIR.bit.GPIO7 = 1;
		GpioCtrlRegs.GPAPUD.bit.GPIO7 = 0;
		GIOpiop.GPIO7 = 0;GIODataRegs.GPAR.GPAC7
	EDIS;
}

void init_interrupit()
{
	DINT;

	//将PIE控制寄存器初始化到其默认状态。
	//默认状态是禁用所有PIE中断,
	并清除标志//。
	InitPieCtrl();

	//禁用CPU中断并清除所有CPU中断标志:
	IER = 0x0000;
	IFR = 0x0000;

	//使用指向shell Interrupt
	// Service routines (ISR)的指针初始化PIE矢量表。
	//这将填充整个表,即使在此
	示例中未使用中断//。 这对于调试非常有用。
	// shell ISR例程可在DSP2802x_DefaultIsr.C.中找到
	//此函数位于DSP2802x_PieVect.C.中
	InitPieVectorTable();

		EALLOW;//需要此项来写入EALLOW保护寄存器

			PieVectorTable.TINT0 =&CPU_timer0_isr;

		EDIS;//要禁用写入EALLOW保护寄存器,需要此项

	InitCpuTimers();
	ConfigCpuTimer(&CpuTimer0,60,1);

	CpuTimer0Regs.tcr.all = 0x4001;
	IER |= M_INT1;
	PiectrlRegs.PIEIER1.bit.INTx7 =1;
}

中断void CPU_timer0_ISR(void)
{
CpuTimer0.InterruptCount++;//
确认此中断以接收来自组1
的更多中断PIECtrlRegs.PIEACK/ALL = PIEACK_Group1;


} void clean_variable()
;清除
	
	
	
=清除=数据

等待答复。

谢谢,此致,

Richa

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Richa,

    只需单击以下链接:

    此致,

    Gautam

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Gautam:
    我按照链接操作。 解释很有用。 我在处理时遇到的问题包括:
    #include "F2802x_common/include/gPIC.h"
    #include "F2802x_common/include/pie.h"

    以及定义:
    #define RS GPIO _NUMBER_12
    #define E GPIO编号_19

    #define D0 gPIO_NUMBER_0
    #define d1 gPIO_NUMBER_1
    #define D2 GPIO _NUMBER_2
    #define D3 GPIO _NUMBER_3
    #define D4 GPIO _NUMBER_4
    #define D5 gPIO_NUMBER_5
    #define D6 gPIO_NUMBER_6
    #define D7 gPIO_NUMBER_7
    GPIO _手柄myGpio;

    请您指导一下。

    谢谢!