OpenEdv-开源电子网

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

按键问题

[复制链接]

6

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2011-9-15
在线时间
0 小时
发表于 2011-9-28 17:05:09 | 显示全部楼层 |阅读模式

在按键中断实验里,我想把key2改为按键扫描模式,key0。1还为中断模式,但是我下面这样改了以后key2就不起作用了
/*u16 n=0;
void EXTI0_IRQHandler(void)
{
 delay_ms(10);//消抖
 if(KEY2==1)  //按键2
 {
  LED0=!LED0;
  LED1=!LED1; 
 }  
 EXTI->R=1<<0;  //清除LINE0上的中断标志位 
} */

//外部中断15~10服务程序
void EXTI15_10_IRQHandler(void)
{   
 delay_ms(10);    //消抖   
 if(KEY0==0)      //按键0
 {
  LED0=!LED0;
 }else if(KEY1==0)//按键1
 {
  LED1=!LED1;
 }
 EXTI->R=1<<13;     //清除LINE13上的中断标志位 
 EXTI->R=1<<15;     //清除LINE15上的中断标志位 
}
//外部中断初始化程序
//初始化PA0,PA13,PA15为中断输入.
void EXTIX_Init(void)
{
 RCC->APB2ENR|=1<<2;     //使能PORTA时钟
 JTAG_Set(JTAG_SWD_DISABLE);//关闭JTAG和SWD  

 //GPIOA->CRL&=0XFFFFFFF0;//PA0设置成输入  
 //GPIOA->CRL|=0X00000008;  
 GPIOA->CRH&=0X0F0FFFFF;//PA13,15设置成输入  
 GPIOA->CRH|=0X80800000;       
 GPIOA->ODR|=1<<13;    //PA13上拉,PA0默认下拉
 GPIOA->ODR|=1<<15;    //PA15上拉

 //Ex_NVIC_Config(GPIO_A,0,RTIR); //上升沿触发
 Ex_NVIC_Config(GPIO_A,13,FTIR);//下降沿触发
 Ex_NVIC_Config(GPIO_A,15,FTIR);//下降沿触发

 //MY_NVIC_Init(2,2,EXTI0_IRQChannel,2);    //抢占2,子优先级2,组2
 MY_NVIC_Init(2,1,EXTI15_10_IRQChannel,2);//抢占2,子优先级1,组2   
}
主函数这样写
nt main(void)
{   
  Stm32_Clock_Init(9); //系统时钟设置
 delay_init(72);      //延时初始化
 uart_init(72,9600);  //串口初始化
 LED_Init();      //初始化与LED连接的硬件接口
 EXTIX_Init();   //外部中断初始化
 while(1)
 {    
  key=KEY_Scan();
  if(key==3)
     {
         for(i=10;i>0;i--)
         {
         LED0=0;
         delay_ms(500);
         LED0=1;
         delay_ms(500);
      }
      }
  //printf("OK\n"); 
  //delay_ms(1000);  
 } 
}

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-9-28 17:17:43 | 显示全部楼层
回复【楼主位】ADJIA:
---------------------------------
你不能使用我的KEY_Scan,需要自己实现一下.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2011-9-15
在线时间
0 小时
 楼主| 发表于 2011-9-28 17:30:53 | 显示全部楼层
u8 KEY_Scan(void)
{  
static u8 key_up=1;//按键按松开标志
JTAG_Set(JTAG_SWD_DISABLE);
if(KEY2==1)
{
delay_ms(10);//去抖动 
key_up=0
if(KEY2==1)
{
JTAG_Set(SWD_ENABLE);
return 3;
}
}else if(KEY2==0)key_up=1;      
JTAG_Set(SWD_ENABLE);
return 0;// 无按键按下
}
这样呢,试了还是不行,错在哪
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-9-28 18:01:04 | 显示全部楼层
回复【3楼】ADJIA:
---------------------------------
什么现象?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2011-9-15
在线时间
0 小时
 楼主| 发表于 2011-9-30 08:25:28 | 显示全部楼层
上电以后灯就开始直接闪
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-9-30 09:21:31 | 显示全部楼层
说明你的KEYSCAN有问题了.
或者你检查下硬件,是不是有其他地方连接了KEY2.注意跳线帽.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2011-9-15
在线时间
0 小时
 楼主| 发表于 2011-9-30 10:33:56 | 显示全部楼层
PA0是KEY2,跳线帽取下了,没接别的
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-9-30 11:36:50 | 显示全部楼层
你单独测试一下吧.
看简单的读取IO,是否正确.
把这个搞懂了,做按键就简单了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2011-9-15
在线时间
0 小时
 楼主| 发表于 2011-9-30 14:05:29 | 显示全部楼层
我想把PA14上拉
GPIOA->CRH&=0XF0FFFFFF;
             GPIOA->CRH|=0X08000000;
             GPIOA->ODR|=1<<14;
这样设置完,PA14置空时输出0
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-9-30 17:49:12 | 显示全部楼层
回复【9楼】ADJIA:
---------------------------------
你要看有没有外部的条件把他拉低了,比如有啥下拉电阻什么的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-24 04:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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