OpenEdv-开源电子网

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

按键实验

[复制链接]

3

主题

55

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
366
金钱
366
注册时间
2015-6-23
在线时间
111 小时
发表于 2016-2-16 09:57:55 | 显示全部楼层 |阅读模式
3金钱
本人买了战舰V3的开发板,跟着视频教程学习STM32,本实验是修改液晶例程后,想加入按键对液晶显示内容修改,进行完按键实验后,发现效果不受按键控制,看了前辈的贴后,也找来示波器看看STM32的PE4--KEY0的图,结果不知道如何是好了,请大侠们给个建议。图如下:1是按下按键前,2是按下按键后的。
按键的初始化、扫描函数都是例程的,没有修改,只是将例程中按键主函数改成控制函数在液晶显示了,不用发光二极管演示效果。

1

1
20160216_093227_HDR.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

55

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
366
金钱
366
注册时间
2015-6-23
在线时间
111 小时
 楼主| 发表于 2016-2-16 21:35:26 | 显示全部楼层
//按键初始化函数
void KEY_Init()
{
        GPIO_InitTypeDef GPIO_InitStrue;                                 //定义端口设置结构体
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOE, ENABLE);  //使能PA、PE端口时钟
       
        GPIO_InitStrue.GPIO_Pin = GPIO_Pin_0;                            //选择端口0
        GPIO_InitStrue.GPIO_Mode = GPIO_Mode_IPD;                        //设置下拉输入
        GPIO_Init(GPIOA, &GPIO_InitStrue);                               //使能端口
       
        GPIO_InitStrue.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_3 | GPIO_Pin_2;  //选择端口2、3、4
        GPIO_InitStrue.GPIO_Mode = GPIO_Mode_IPU;                        //设置上拉输入
        GPIO_Init(GPIOE, &GPIO_InitStrue);                               //使能端口
}
这是原教程的按键端口设置函数,虽然设置了上、下拉输入,这是高阻态,示波器测得的是干扰信号,我在相应的端口给了相应的电平,效果好很多了,但是PA0口虽然设置了低电平,而没有任何改善。
下面是我改进的函数:
void KEY_Init(void) //IO初始化
{
        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE, ENABLE);//使能PORTA,PORTE时钟

        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4; //KEY0-KEY2
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;                    //设置成上拉输入
        GPIO_Init(GPIOE, &GPIO_InitStructure);                           //初始化GPIOE2,3,4
        GPIO_SetBits(GPIOE, GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4);           //GPIOE2,3,4输出高电平

        //初始化 WK_UP-->GPIOA.0          下拉输入
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;                    //PA0设置成输入,默认下拉          
        GPIO_Init(GPIOA, &GPIO_InitStructure);                           //初始化GPIOA.0
        GPIO_ResetBits(GPIOA, GPIO_Pin_0);                               //GPIOA.0输出低电平
}
回复

使用道具 举报

3

主题

55

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
366
金钱
366
注册时间
2015-6-23
在线时间
111 小时
 楼主| 发表于 2016-2-23 22:56:25 | 显示全部楼层
不知道为什么设置了上拉输入,IO端口仍是高阻态?测不到高电平。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 06:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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