初级会员

- 积分
- 71
- 金钱
- 71
- 注册时间
- 2012-4-20
- 在线时间
- 0 小时
|

楼主 |
发表于 2012-10-24 23:18:34
|
显示全部楼层
原子哥。谢谢你提醒我有想法先自己实践。下面是我实践用的程序。证明我的想法是正确的。
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure; //定义一个中断结构体
// EXTI_InitTypeDef EXTI_InitStructure;
uint32_t tmp=0x40010400;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
/*
EXTI_InitStructure.EXTI_Line = EXTI_Line0; //外部中断0,
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //中断请求
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
*/
EXTI->IMR &= ~(uint32_t)0x00001;
EXTI->EMR &= ~(uint32_t)0x00001;
EXTI->RTSR &= ~(uint32_t)0x00001;
EXTI->FTSR &= ~(uint32_t)0x00001;
*(__IO uint32_t *) tmp |= (uint32_t)0x00001;
*(__IO uint32_t *) (tmp+0x0c) |= (uint32_t)0x00001;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC优先级分组方式。
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; //外部中断1,HSYNC
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //先占优先级1
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //从占优先级2
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //打开中断
NVIC_Init(&NVIC_InitStructure); //初始化
GPIO_Write(GPIOC,0xffff);
while(1)
{
if( flag==1 )
GPIO_Write(GPIOC,0X0000);
}
} |
|