赞
踩
- #include "stm32f10x.h"
-
- void z_init(void){
-
- //时钟使能
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
-
- //io初始化
- GPIO_InitTypeDef iochu;
- iochu.GPIO_Mode=GPIO_Mode_IPU;//上拉输入模式
- iochu.GPIO_Pin=GPIO_Pin_2;
- iochu.GPIO_Speed=GPIO_Speed_50MHz;
-
- GPIO_Init(GPIOA,&iochu);
-
- //AFIO引脚选择//gpio.h
- GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource2);
-
- //EXTI初始化
- //初始化枚举//exti.h
- EXTI_InitTypeDef extichu;
- extichu.EXTI_Line=EXTI_Line2;//那一条中断线//第二条线
- extichu.EXTI_LineCmd=ENABLE;//启动或禁用//启动
- extichu.EXTI_Mode=EXTI_Mode_Interrupt;//中断模式或事件模式//中断模式
- extichu.EXTI_Trigger=EXTI_Trigger_Falling;//触发方式//下降沿触发
- //初始化函数
- EXTI_Init(&extichu);
-
- //NVIC初始化//misc.h
- //中断分组//整个工程中只能分组一次即可,不可再次改变分组。
- //要确保分组统一
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//分组
-
- //nvic枚举
- NVIC_InitTypeDef nvicchu;
- nvicchu.NVIC_IRQChannel=EXTI2_IRQn;//中断通道
- nvicchu.NVIC_IRQChannelCmd=ENABLE;//使能
- nvicchu.NVIC_IRQChannelPreemptionPriority=1;//抢占优先级值
- nvicchu.NVIC_IRQChannelSubPriority=1;//响应优先级值
- //初始化
- NVIC_Init(&nvicchu);
-
- }
- void EXTI2_IRQHandler(void){//中断函数不用声明//exti.h下面的函数
- if(EXTI_GetITStatus(EXTI_Line2)==SET){//判断中断是否被设置
-
- EXTI_ClearITPendingBit(EXTI_Line2);//清除标志
- }
- }

- #include "stm32f10x.h" // Device header
- #include "zd.h"
- int main(void)
- {
- z_init();
- while (1)
- {
-
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。