OpenEdv-开源电子网

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

新手中断求助------整个键盘扫描函数就没有被引用到,键盘怎么起的作用呀

[复制链接]

5

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2013-7-12
在线时间
0 小时
发表于 2013-7-14 17:53:11 | 显示全部楼层 |阅读模式
exti.h中的   extern u8 key ;  是什么意思

#ifndef __EXTI_H
#define __EXIT_H  
#include "sys.h"
 
extern u8 key ;      
void EXTIX_Init(void);//IO初始化    
#endif

还有这个中断函数好像没有诱发条件呀,函数中断怎么可以执行呀,好像没有中断条件呀:
#include "exti.h"
#include "led.h"
#include "key.h"
#include "delay.h"
#include "usart.h"

//u8 key = 4 ;
int t;

//外部中断0服务程序
void EXTI0_IRQHandler(void)
{
t = KEY_Scan();
delay_ms(20);//消抖
//key = 0;
if(t==1)
{
  LED0=!LED0;
delay_ms(10);
}

 
EXTI->R=1<<0;  //清除LINE0上的中断标志位  
}


//外部中断15~10服务程序
void EXTI1_IRQHandler(void)
{
delay_ms(20);    //消抖
//key = 1;
if(t==2)
{
  LED1=!LED1;
delay_ms(10); 
}



EXTI->R=1<<1;     //清除LINE13上的中断标志位  
}


void EXTI2_IRQHandler(void)
{
delay_ms(20);    //消抖
//key = 2;
if(t==3)
{
LED2=!LED2;
delay_ms(10); 
}  
   
EXTI->R=1<<2;     //清除LINE13上的中断标志位  
}


void EXTI3_IRQHandler(void)
{
delay_ms(20);    //消抖
//key = 3;
if(t==4)
{
LED0=!LED0;
LED1=!LED1;
LED2=!LED2;
delay_ms(20);
}
EXTI->R=1<<3;     //清除LINE13上的中断标志位  
}




//外部中断初始化程序
//初始化PA0,PA13,PA15为中断输入.
void EXTIX_Init(void)
{
RCC->APB2ENR|=1<<2;     //使能PORTA时钟

GPIOA->CRL&=0XFFFF0000;//PA0-PA3设置成输入  
GPIOA->CRL|=0X00008888;   
GPIOA->ODR|=0x0F;   //上拉   


Ex_NVIC_Config(GPIO_A,0,FTIR);//下降沿触发
Ex_NVIC_Config(GPIO_A,1,FTIR);//下降沿触发
Ex_NVIC_Config(GPIO_A,2,FTIR);//下降沿触发
Ex_NVIC_Config(GPIO_A,3,FTIR);//下降沿触发

MY_NVIC_Init(2,1,EXTI0_IRQChannel,2);    //抢占2,子优先级1,组2
MY_NVIC_Init(2,2,EXTI1_IRQChannel,2); //抢占2,子优先级2,组2
MY_NVIC_Init(2,3,EXTI2_IRQChannel,2); //抢占2,子优先级3,组2
MY_NVIC_Init(2,4,EXTI3_IRQChannel,2); //抢占2,子优先级4,组2   
}



这是主函数
#include <stm32f10x_lib.h>
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h" 
#include "key.h"
#include "exti.h"  

int main(void)
{
  Stm32_Clock_Init(9); //系统时钟设置
delay_init(72);     //延时初始化
uart_init(72,9600);  //串口初始化 
LED_Init();   //初始化与LED连接的硬件接口
EXTIX_Init(); //外部中断初始化
while(1)
{    
 
}

整个键盘扫描函数就没有被引用到,键盘怎么起的作用呀

主函数:

#include <stm32f10x_lib.h>
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h" 
#include "key.h"
#include "exti.h"  

int main(void)
{
  Stm32_Clock_Init(9); //系统时钟设置
delay_init(72);     //延时初始化
uart_init(72,9600);  //串口初始化 
LED_Init();   //初始化与LED连接的硬件接口
EXTIX_Init(); //外部中断初始化
while(1)
{    
 
}







外部按键中断实验(有问题).rar

638.21 KB, 下载次数: 83

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

使用道具 举报

109

主题

1606

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2222
金钱
2222
注册时间
2011-12-15
在线时间
37 小时
发表于 2013-7-14 18:18:40 | 显示全部楼层
你是说没开启中断,中断就直接进入了嘛?
专业制作STM32 物联网通信模块板,模块交流群:369840039。
回复 支持 反对

使用道具 举报

48

主题

143

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
355
金钱
355
注册时间
2013-6-26
在线时间
0 小时
发表于 2013-7-14 18:30:56 | 显示全部楼层
extern 声明变量在别的文件中定义,而这里起到外部变量声明的作用,即extern指明变量在他处已经定义了,而且在别的文件中
回复 支持 反对

使用道具 举报

5

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2013-7-12
在线时间
0 小时
 楼主| 发表于 2013-7-14 18:55:49 | 显示全部楼层
回复【2楼】ST-FAE-SALE:

你是说没开启中断,中断就直接进入了嘛?

---------------------------------
回复 支持 反对

使用道具 举报

5

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2013-7-12
在线时间
0 小时
 楼主| 发表于 2013-7-14 18:56:34 | 显示全部楼层
回复【4楼】火狐:
---------------------------------
他这一个按键扫描函数为什么没有用到
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-17 11:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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