初级会员

- 积分
- 52
- 金钱
- 52
- 注册时间
- 2015-7-31
- 在线时间
- 0 小时
|
5金钱
我这边设置了函数的外部中断,使用PD2 和PC12端口,使用的是寄存器模式的,但是不管怎么样,我这边总是进不去中断的,不知道什么原因,按键是按下低电平。请大家帮我看看。不是说配置外部中断需要配置AFIO寄存器吗?我在原子的例 程中也没有找到关于AFIO的设置的。
还有我在设置AFIO_EXTICRx时,系统提示..\HARDWARE\EXTI\exti.c(45): error: #136: struct "<unnamed>" has no field "EXTICR1"不知道什么原因。求大神解答。
程序:#include "exti.h"
#include "led.h"
#include "key.h"
#include "delay.h"
#include "usart.h"
#include "lcd.h"
//////////////////////////////////////////////////////////////////////////////////
//All rights reserved
//////////////////////////////////////////////////////////////////////////////////
u8 tt;
void EXTI2_IRQHandler(void)
{
delay_ms(10);
if(KEY1==0)
{
tt++;
LCD_LED=1;
}
EXTI-> R=1<<2;
}
void EXTI12_IRQHandler(void)
{
delay_ms(10);
if(KEY2==0)
{
LED0=!LED0;
LED1=!LED1;
}
EXTI-> R=1<<12;
}
//?????????????????ò
//??????PC12,PD2??????????.
void EXTIX_Init(void)
{
RCC->APB2ENR|=1<<4; //????PORTC?±??
RCC->APB2ENR|=1<<5; //????PROTD?±??
AFIO->EXTICR1&=0xf0ff;
AFIO->EXTICR1|=0x0300; //????PD????
AFIO->EXTICR4&=0xfff0; //????PC????
AFIO->EXTICR4|=0xfff2;
GPIOC->CRH&=0XFFF0FFFF;//PC12?è????????
GPIOC->CRH|=0X00080000;
GPIOD->CRL&=0XFFFFF0FF;//PD2 ?è????????
GPIOD->CRL|=0X00000800;
GPIOC->ODR|=1<<12; //PC12 ?è????????
GPIOD->ODR|=1<<2; //PD2 ?è????????
Ex_NVIC_Config(GPIO_C,12,FTIR);//????????·?
Ex_NVIC_Config(GPIO_D,2,FTIR);//????????·?
MY_NVIC_Init(2,3,EXTI2_IRQChannel,2); //????7??×???????2??×é3
MY_NVIC_Init(2,2,EXTI15_10_IRQChannel,2);//????7??×???????1??×é3
}
|
最佳答案
查看完整内容[请看2#楼]
回复【3楼】菜鸟小白:
---------------------------------
不要乱改, AFIO里面那个是一个数组 EXTICR[4], 不是EXTICR1,2,3,4, 当然编译报错
AFIO时钟开启在Ex_NVIC_Config();函数里
还有你这个EXTI2_IRQChannel和EXTI15_10_IRQChannel
现在用的是TIM2_IRQn和 EXTI15_10_IRQn
|