打印

28335程序按键等待问题

[复制链接]
785|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
halou|  楼主 | 2015-8-3 17:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
gp, IO, pi, GPIO, Oct
本帖最后由 halou 于 2015-8-4 10:47 编辑

我是想让按下按键1,电机开始转,主函数中设置等待程序,但是按键后不转,请大家帮帮忙

//主函数中问题句子
    while(GpioDataRegs.GPBDAT.bit.GPIO53);
//将while(GpioDataRegs.GPBDAT.bit.GPIO53);//后电机正常运转
    DELAY_US(50L);
    startmotor();

//IO初始化定义
EALLOW;
    GpioCtrlRegs.GPBPUD.bit.GPIO53 = 0;            // Enable pullup on GPIO53  拉高IO口
    GpioCtrlRegs.GPBMUX2.bit.GPIO53  = 0;           // 设置为一般IO口
    GpioCtrlRegs.GPBDIR.bit.GPIO53   = 0;            // IO口方向为输入   
EDIS;

捕获.PNG (78.72 KB )

IO外部连接图

IO外部连接图

相关帖子

沙发
zhangmangui| | 2015-8-3 21:22 | 只看该作者
第一个问题    你的按键先做防抖动处理   

使用特权

评论回复
板凳
zhangmangui| | 2015-8-3 21:23 | 只看该作者
startmotor();

此函数执行完的后面是什么?

使用特权

评论回复
地板
zhangmangui| | 2015-8-3 21:24 | 只看该作者
执行完不会又回到while中去判断了吧   
你一直按着按键看什么情况

使用特权

评论回复
5
halou|  楼主 | 2015-8-4 09:16 | 只看该作者
本帖最后由 halou 于 2015-8-4 10:22 编辑
zhangmangui 发表于 2015-8-3 21:23
startmotor();

此函数执行完的后面是什么?

这是主函数最后
        while(GpioDataRegs.GPBDAT.bit.GPIO53);

    DELAY_US(50L);
        startmotor();
         // convert and store in 8 results registers
// Enable global Interrupts and higher priority real-time debug events:
    EINT;   // Enable Global interrupt INTM
    ERTM;   // Enable Global realtime interrupt DBGM
while(1)
{};        
}

使用特权

评论回复
6
halou|  楼主 | 2015-8-4 09:17 | 只看该作者
zhangmangui 发表于 2015-8-3 21:24
执行完不会又回到while中去判断了吧   
你一直按着按键看什么情况

一直按着也一样的

使用特权

评论回复
7
halou|  楼主 | 2015-8-4 09:46 | 只看该作者
本帖最后由 halou 于 2015-8-4 10:21 编辑
zhangmangui 发表于 2015-8-3 21:22
第一个问题    你的按键先做防抖动处理

这样属于防抖动吧

while(!flag)
    {
            if(GpioDataRegs.GPBDAT.bit.GPIO53 == 0)
            {
                     KeyTime++;
                     if(KeyTime >= 6000)
                     {
                             flag = 1;
                         }
                }
        }
        startmotor();
// Enable global Interrupts and higher priority real-time debug events:
    EINT;   // Enable Global interrupt INTM
    ERTM;   // Enable Global realtime interrupt DBGM
while(1)
{};        
}

使用特权

评论回复
8
halou|  楼主 | 2015-8-5 08:48 | 只看该作者
问题解决了,主要是IO50没有设置低电平(GND),不通

使用特权

评论回复
9
小葱521| | 2015-8-5 21:26 | 只看该作者
不可以使用按键芯片之类的吗?
感觉IO资源是很宝贵的……

使用特权

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

本版积分规则

13

主题

45

帖子

0

粉丝