基于DSP28335的问题
void Init_Port(void)
{
EALLOW;
// 用户根据需要可以使能内部上拉或禁止.
// 其他不需要的行注释掉;
GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0; // 使能GPIO0 引脚内部上拉
//GpioCtrlRegs.GPAPUD.bit.GPIO2 = 1; // 禁止GPIO2 引脚内部上拉
GpioCtrlRegs.GPAPUD.bit.GPIO18 = 1; // 禁止GPIO1 引脚内部上拉
/* 通过I/O功能选择寄存器配置通用I/O功能*/
GpioCtrlRegs.GPAMUX2.all = 0x000000; // 配置GPIO0-GPIO15为通用I/O口
/* 设置I/O口为输入引脚*/
GpioCtrlRegs.GPADIR.all = 0xFFFF0000;// 配置GPIO0-GPIO11为输出引脚
// 每个输入口可以有不同的输入限定
// a) 输入与系统时钟 SYSCLKOUT同步
// b) 输入被指定的采样窗口限定
// c) 输入异步 (仅对外设输入有效)
GpioCtrlRegs.GPAQSEL1.all = 0x0000; // GPIO0-GPIO15与系统时钟SYSCLKOUT 同步
//输出数据LCD_RW和LCD_EN清零
GpioDataRegs.GPADAT.bit.GPIO19 = 1;
//GpioDataRegs.GPADAT.bit.GPIO2 = 0;
GpioDataRegs.GPADAT.bit.GPIO18 = 0;
EDIS;
}
void Init_Port(void)
{
EALLOW;
/* 通过I/O功能选择寄存器配置通用I/O功能*/
GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 0; // GPIO模式
GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 0; //
GpioCtrlRegs.GPBMUX1.bit.GPIO41 = 0; //
// 用户根据需要可以使能内部上拉或禁止.
GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0; // LCD_RS使能上拉
GpioCtrlRegs.GPAPUD.bit.GPIO18 = 1; // LCD_EN禁止上拉
GpioCtrlRegs.GPBPUD.bit.GPIO41 = 0; // 蜂鸣器使能上拉
/* 设置I/O口为输入引脚*/
GpioCtrlRegs.GPADIR.bit.GPIO19 = 1; // 输出模式
DELAY_US(500);
GpioCtrlRegs.GPADIR.bit.GPIO18 = 1; //
DELAY_US(500);
GpioCtrlRegs.GPBDIR.bit.GPIO41 = 1; //
// 每个输入口可以有不同的输入限定
// a) 输入与系统时钟 SYSCLKOUT同步
// b) 输入被指定的采样窗口限定
// c) 输入异步 (仅对外设输入有效)
GpioCtrlRegs.GPAQSEL2.all = 0x0000; // GPIO0-GPIO15与系统时钟SYSCLKOUT 同步
//输出数据LCD_RW和LCD_EN清零
GpioDataRegs.GPADAT.bit.GPIO19 = 1;
GpioDataRegs.GPADAT.bit.GPIO18 = 0;
GpioDataRegs.GPBDAT.bit.GPIO41 = 0; //关闭蜂鸣器
EDIS;
}
这两个函数实现的功能一样,就是GPIO设置,设置为数字输出模式。这是LCD1602显示函数的IO初始化,可是只有上面那个函数可以使显示屏正常显示,下面的那个函数却无**常使显示屏工作。 |