OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3180|回复: 10

关于按键扫描问题

[复制链接]

13

主题

201

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2015-4-26
在线时间
173 小时
发表于 2015-12-14 10:39:10 | 显示全部楼层 |阅读模式
5金钱
我按照下面的程序设置的,PA3和PA14位上拉输入模式,然后检测两个IO口的状态来反馈串口的输出,但是当两个IO口都接地的时候串口显示00 FA FE FA FE FF,其余情况无论怎么接都显示00 FA FE FA FE 55,无法按照我设定的情况检测运行,大神知道怎么回事么?
 void key_deal(void)
 {
  key_value = key_detetc();//扫描按键值
    if(key_value==3)//两个按键都按下
    {
      send_state();
      USART1->DR=0xaa;
      while((USART1->SR&0X40)==0);//等待发送结束
    }
    else if(key_value==0)//两个按键都没有按下
    {
      send_state();
      USART1->DR=0x55;
      while((USART1->SR&0X40)==0);//等待发送结束
    }
    else
    {
      send_state();
      USART1->DR=0xff;
      while((USART1->SR&0X40)==0);//等待发送结束
    }
 }


void KEY_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
 //init GPIOA.3,GPIOA.14  上拉输入
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
 GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_3|GPIO_Pin_14;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
 
 GPIO_Init(GPIOA, &GPIO_InitStructure);
  

}

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-12-14 10:39:11 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

13

主题

201

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2015-4-26
在线时间
173 小时
 楼主| 发表于 2015-12-14 14:28:45 | 显示全部楼层
有没有人知道这是怎么回事啊??@正点原子。。。
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1838
金钱
1838
注册时间
2014-6-27
在线时间
981 小时
发表于 2015-12-14 15:19:50 | 显示全部楼层
回复【2楼】康仔呦:
---------------------------------
你应该先确定你的键值得到了否,如果得到了,问题就不大了。
回复

使用道具 举报

13

主题

201

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2015-4-26
在线时间
173 小时
 楼主| 发表于 2015-12-14 17:18:16 | 显示全部楼层
回复【3楼】TinyBoy:
---------------------------------
并没有,我是这样写的。
 u8 key_detetc()
 {
 u8 key_det = 0;
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);
 
 if(KEY0==0)
 {
 //delay_ms(10);
 if(KEY0==0)
 {
 //JTAG_Set(SWD_ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
 //while(!KEY0);
 key_det +=1;
 }
 }
#if 1
 if(KEY1==0)
 {
 delay_ms(10);
 if(KEY1==0)
 {
 //JTAG_Set(SWD_ENABLE);  
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
 //while(!KEY1);
 key_det +=2;
 }
 }  
#endif
 //JTAG_Set(SWD_ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
 return key_det;
 }
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1838
金钱
1838
注册时间
2014-6-27
在线时间
981 小时
发表于 2015-12-14 17:22:22 | 显示全部楼层
回复【4楼】康仔呦:
---------------------------------
现在先不管写法如何先,你先测试得到了键值没有,得到了,再进行下一步。
回复

使用道具 举报

13

主题

201

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2015-4-26
在线时间
173 小时
 楼主| 发表于 2015-12-14 17:34:14 | 显示全部楼层
回复【5楼】TinyBoy:
---------------------------------
我测了两个引脚的电平,PA3为0,PA14为1.45,我也是醉了。。。
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1838
金钱
1838
注册时间
2014-6-27
在线时间
981 小时
发表于 2015-12-14 17:48:53 | 显示全部楼层
回复【6楼】康仔呦:
---------------------------------
初始化为输入上拉,如果复用其他功能,关掉其他功能,做普通IO用。
回复

使用道具 举报

13

主题

201

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2015-4-26
在线时间
173 小时
 楼主| 发表于 2015-12-14 23:16:09 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
我禁止了啊,但是上拉不是默认高电平了么?上面怎么测出来那两个了啊
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-12-16 23:33:20 | 显示全部楼层
回复【9楼】康仔呦:
---------------------------------
看看是否外部电路影响了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

13

主题

201

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2015-4-26
在线时间
173 小时
 楼主| 发表于 2015-12-18 15:18:26 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
我已经解决了,现在串口能反馈了,但是波特率更改了之后就收不到反馈了(收发波特率一致),库函数不是自动计算的么?那怎么就收不到了呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 10:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表