STM32F407的外部中断设置

发布者:Aningmeng最新更新时间:2018-05-04 来源: eefocus关键字:STM32F407  外部中断设置 手机看文章 扫描二维码
随时随地手机看文章

比如要是使用GPC3作为中断源,上升沿触发

外部中断必须配置好EXTI和NVIC

使用以下函数打开SYSCFG的时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE)


GPIO设置如下

void GPIO_Configuration(void)
{

GPIO_InitTypeDef GPIO_InitStructure;

/* GPIOF Periph clock enable */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);//注意要打开SYSCFG时钟

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOC, &GPIO_InitStructure);

}


因为要用的IO口做中断源,故IO的复用功能必须使能,F4的与F103的有些不同,它的外部中断复用功能是由SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOx,GPIO_PinSourcex);  进行配置的。

void EXTI_Configuration(void)
{
    EXTI_InitTypeDef EXTI_InitStructure;


    //GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource3); //这是以前的F103所用的配置函数
    SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC, EXTI_PinSource3);    //407使用的配置函数
    EXTI_InitStructure.EXTI_Line = EXTI_Line3;
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStructure);

}


设置外部中断源和优先级

void NVIC_Config(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;


  /* Enable the USARTx Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}



中断处理函数


void EXTI3_IRQHandler(void)
{

if(EXTI_GetITStatus(EXTI_Line3) != RESET)
{
do something();
EXTI_ClearITPendingBit(EXTI_Line3);
printf("EXTI3_IRQHandler\r\n");
}
}


关键字:STM32F407  外部中断设置 引用地址:STM32F407的外部中断设置

上一篇:STM32 BootLoader跳转APP跑飞 可能是因为找不到某些中断函数入口
下一篇:STM32的定时器和ADC

推荐阅读最新更新时间:2024-03-16 16:01

stm32f103与stm32f407的引脚复用与重映射
stm32f103的AFIO: stm32f103的AFIO寄存器如下,使用前都要打开AFIO时钟: AFIO_MAPR:配置复用功能重映射 AFIO_EXTICRX:配置外部中断线映射 AFIO_EVCR: 配置EVENTOUT事件输出 只有使用了AFIO的事件控制寄存器、AFIO的重映射功能以及外部中断(EXTI)控制寄存器才需要使用AFIO。 1、当使用外部中断时,需要打开AFIO时钟。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); 然后使用GPIO_EXTILineConfig函数进行挂载。例如: GPIO_EXTILineConfig(GPIO_PortSour
[单片机]
STM32F407之如何选择外设时钟的函数
在STM32F4xx的中文参考手册中的第二章节中就可看到:哪些外设挂载在哪些总线上,就可以在rcc.h的头文件中找到对应的外设时钟使能函数。 在STM32F407的芯片手册中有详细的框图
[单片机]
<font color='red'>STM32F407</font>之如何选择外设时钟的函数
STM32F407 串口接收中断的使用
1 首先,在HAL_UART_MspInit函数当中初始化串口的外设时钟,串口接收中断使能配置,串口IO配置。该函数会由HAL库自行调用。 2 然后,写一个中断入口函数,该函数需要调用HAL库当中的HAL_UART_IRQHandler接口,HAL_UART_IRQHandler中会对中断的标志位进行处理,然后会调用中断回调函数HAL_UART_RxCpltCallback。 3 重写中断回调函数,在该函数当中处理串口缓冲区当中的内容。 4 HAL库的中断使用顺序都大致类似,其它类型的中断处理对坐入号替换就好。
[单片机]
<font color='red'>STM32F407</font> 串口接收中断的使用
STM32F407 之 高级定时器介绍
1、简介: STM32F4 高级定时器(TIM1 和 TIM8)包含一个 16 位自动重载计数器,该计数器由可编程预分频器驱动。 高级定时器可用于各种用途,包括测量输入信号的脉冲宽度(输入捕获),或者生成输出波形(输出比较、PWM、带死区插入的互补PWM)。 使用定时器预分频器和RCC 时钟控制器预分频器,可以将脉冲宽度和波形周期从几微秒调制到几毫秒。并且高级定时器和通用定时器彼此完全独立看,不共享任何资源。它们可以实现同步。 2、TIM1 和 TIM8 的主要特性 TIM1 和 TIM8 定时器具有以下特性: ● 16 位递增、递减、递增/递减自动重载计数器。 ● 16 位可编程预分频器,用于对计数器时钟频
[单片机]
<font color='red'>STM32F407</font> 之 高级定时器介绍
STM32F407——外部中断
1、外部中断流水灯。。 2、正点10-13.。 #外部中断代码 #include exti.h #include delay.h #include led.h #include beep.h #include key.h u8 onoff=0,dir=0,speed=0,change=0,key; u16 time=0; void EXTIX_Init(void) { EXTI_InitTypeDef EXTI_InitStruct; NVIC_InitTypeDef NVIC_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSC
[单片机]
<font color='red'>STM32F407</font>——<font color='red'>外部中断</font>
STM32CubeMX 配置STM32F407 实现HAL库延时微妙方案
先说一下为什么写这篇博客。 不知道大家有没有遇到过这种情况,当你在移植别人的程序的时候,尤其是移植STM32的程序,从标准库移植到HAL库的时候,总是无奈延时微妙函数在HAL库中找不到,delay_us(u8 us); 很多次我都是用毫秒延时代替了, 但是,这样会使得程序的效率大大降低,所以通过参考别人的资料,通过定时器写了延时us函数,延时还是很准确的 1、我所使用的单片机型号及开发环境 **PS**: emmmmm… (这里并不是打广告,只是我个人使用的这个开发板,其他任何的开发板,只要主控芯片一样均可以) 开发环境如图,我是用的Cube+IAR, Keil5也可以的,都一样。 2、使用Cube配置定时器TIM
[单片机]
STM32CubeMX 配置<font color='red'>STM32F407</font> 实现HAL库延时微妙方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved