打印

GPIO赋值控制问题

[复制链接]
3206|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
清枫城主|  楼主 | 2017-5-2 17:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于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初始化,可是只有上面那个函数可以使显示屏正常显示,下面的那个函数却无**常使显示屏工作。

相关帖子

沙发
清枫城主|  楼主 | 2017-5-2 17:37 | 只看该作者
void Init_Port(void)
{
        EALLOW;
        // 用户根据需要可以使能内部上拉或禁止.
        GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0;   //  LCD_RS使能上拉
        GpioCtrlRegs.GPAPUD.bit.GPIO18 = 1;   //  LCD_EN禁止上拉
        GpioCtrlRegs.GPBPUD.bit.GPIO41 = 0;   //  蜂鸣器使能上拉
        /* 通过I/O功能选择寄存器配置通用I/O功能*/
        GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 0;   // GPIO模式
        GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 0;   //
        GpioCtrlRegs.GPBMUX1.bit.GPIO41 = 0;   //

        /* 设置I/O口为输入引脚*/
        GpioCtrlRegs.GPADIR.bit.GPIO19 = 1;   // 输出模式
        GpioCtrlRegs.GPADIR.bit.GPIO18 = 1;   //
        GpioCtrlRegs.GPBDIR.bit.GPIO41 = 1;   //

        // 每个输入口可以有不同的输入限定
        // a) 输入与系统时钟 SYSCLKOUT同步
        // b) 输入被指定的采样窗口限定
        // c) 输入异步 (仅对外设输入有效)
        GpioCtrlRegs.GPAQSEL1.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;
}
这是最初始的,考虑到IO操作来不及反应,特意加了延时,结果还是不行

使用特权

评论回复
板凳
清枫城主|  楼主 | 2017-5-2 19:34 | 只看该作者
已发现问题所在  那就是其他的IO没有初始化  如果用    GpioCtrlRegs.GPADIR.all = 0xFFFF0000;  则刚好把其他的8个数据IO给初始化了  单独写的话  并没有把那8个IO给初始化  我分别把那8个IO也初始化设置后 可以正常使用了

使用特权

评论回复
地板
清枫城主|  楼主 | 2017-5-2 19:36 | 只看该作者
void Init_Port(void)
{
        EALLOW;
        // 用户根据需要可以使能内部上拉或禁止.
        GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0;   //  LCD_RS使能上拉
        GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0;   //  LCD_RS使能上拉
        GpioCtrlRegs.GPAPUD.bit.GPIO20 = 0;   //  LCD_RS使能上拉
        GpioCtrlRegs.GPAPUD.bit.GPIO21 = 0;   //  LCD_RS使能上拉
        GpioCtrlRegs.GPAPUD.bit.GPIO22 = 0;   //  LCD_RS使能上拉
        GpioCtrlRegs.GPAPUD.bit.GPIO23 = 0;   //  LCD_RS使能上拉
        GpioCtrlRegs.GPAPUD.bit.GPIO24 = 0;   //  LCD_RS使能上拉
        GpioCtrlRegs.GPAPUD.bit.GPIO25 = 0;   //  LCD_RS使能上拉
        GpioCtrlRegs.GPAPUD.bit.GPIO26 = 0;   //  LCD_RS使能上拉
        GpioCtrlRegs.GPAPUD.bit.GPIO27 = 1;   //  LCD_EN禁止上拉
        GpioCtrlRegs.GPBPUD.bit.GPIO41 = 0;   //  蜂鸣器使能上拉
        /* 通过I/O功能选择寄存器配置通用I/O功能*/
        GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 0;   // GPIO模式
        GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 0;   //
        GpioCtrlRegs.GPAMUX2.bit.GPIO20 = 0;   // GPIO模式
        GpioCtrlRegs.GPAMUX2.bit.GPIO21 = 0;   // GPIO模式
        GpioCtrlRegs.GPAMUX2.bit.GPIO22 = 0;   // GPIO模式
        GpioCtrlRegs.GPAMUX2.bit.GPIO23 = 0;   // GPIO模式
        GpioCtrlRegs.GPAMUX2.bit.GPIO24 = 0;   // GPIO模式
        GpioCtrlRegs.GPAMUX2.bit.GPIO25 = 0;   // GPIO模式
        GpioCtrlRegs.GPAMUX2.bit.GPIO26 = 0;   // GPIO模式
        GpioCtrlRegs.GPAMUX2.bit.GPIO27 = 0;   // GPIO模式
        GpioCtrlRegs.GPBMUX1.bit.GPIO41 = 0;   //

        /* 设置I/O口为输入引脚*/
//    GpioCtrlRegs.GPADIR.all = 0xFFFF0000;
        GpioCtrlRegs.GPADIR.bit.GPIO18 = 1;   // 输出模式
        GpioCtrlRegs.GPADIR.bit.GPIO19 = 1;   //
        GpioCtrlRegs.GPADIR.bit.GPIO20 = 1;   // 输出模式
        GpioCtrlRegs.GPADIR.bit.GPIO21 = 1;   // 输出模式
        GpioCtrlRegs.GPADIR.bit.GPIO22 = 1;   // 输出模式
        GpioCtrlRegs.GPADIR.bit.GPIO23 = 1;   // 输出模式
        GpioCtrlRegs.GPADIR.bit.GPIO24 = 1;   // 输出模式
        GpioCtrlRegs.GPADIR.bit.GPIO25 = 1;   // 输出模式
        GpioCtrlRegs.GPADIR.bit.GPIO26 = 1;   // 输出模式
        GpioCtrlRegs.GPADIR.bit.GPIO27 = 1;   // 输出模式
        GpioCtrlRegs.GPBDIR.bit.GPIO41 = 1;   //

        // 每个输入口可以有不同的输入限定
        // a) 输入与系统时钟 SYSCLKOUT同步
        // b) 输入被指定的采样窗口限定
        // c) 输入异步 (仅对外设输入有效)
        GpioCtrlRegs.GPAQSEL1.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;
}

使用特权

评论回复
5
zhangmangui| | 2017-5-2 21:37 | 只看该作者
好的

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
清枫城主 + 1 赞一个!
6
清枫城主|  楼主 | 2017-5-12 09:23 | 只看该作者
已解决 解决答案在3、4楼

使用特权

评论回复
7
shenmu2012| | 2017-5-12 22:02 | 只看该作者
初始化GPIO口的部分需要多注意的

使用特权

评论回复
8
backlugin| | 2017-5-12 23:02 | 只看该作者
这个没有什么问题,电压问题

使用特权

评论回复
9
sdCAD| | 2017-5-12 23:02 | 只看该作者
应该是硬件电路问题。

使用特权

评论回复
10
fengm| | 2017-5-12 23:02 | 只看该作者
初始化有问题?

使用特权

评论回复
11
10299823| | 2017-5-12 23:03 | 只看该作者
这个不就是LCD的引脚配置啊

使用特权

评论回复
12
backlugin| | 2017-5-12 23:04 | 只看该作者
GPIO设置要有足够的驱动能力。

使用特权

评论回复
13
sdCAD| | 2017-5-12 23:04 | 只看该作者
看看供电是否正确。

使用特权

评论回复
14
fengm| | 2017-5-12 23:04 | 只看该作者
读写速度不要很快,可能更新不上。

使用特权

评论回复
15
10299823| | 2017-5-12 23:04 | 只看该作者
使用引脚功能不同,LCD的驱动也不同。

使用特权

评论回复
16
清枫城主|  楼主 | 2017-5-15 09:09 | 只看该作者
10299823 发表于 2017-5-12 23:04
使用引脚功能不同,LCD的驱动也不同。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

70

帖子

1

粉丝