GD32F103的EXTI中断和EXTI事件

文章介绍了GD32F103的EXTI功能,包括其触发源、中断和事件信号的配置,以及Cortex-M3的WFI/WFE/SEV和WIC在低功耗模式下如何通过EXTI唤醒处理器。
摘要由CSDN通过智能技术生成

GD32F103的EXTI可以产生中断,也产生事件信号。 

GD32F03的EXTI触发源:

1、I/O管脚的16根线;

2、内部模块的4根线(包括LVD、RTC闹钟、USB唤醒、以太网唤醒)。


通过配置GPIO模块的AFIO_EXTISSx寄存器,所有的GPIO管脚都可以被选作EXTI的触发源。因此,EXTI可以产生中断,也产生事件信号。

//函数功能:初始化ExternalInterrupt3
void ExternalInterrupt3_Init(void)
{
	//NVIC_PRIGROUP_PRE4_SUB0:抢占优先级为4bit(取值为0~15),子优先级为0bit(没有响应优先级)
	//NVIC_PRIGROUP_PRE3_SUB1:抢占优先级为3bit(取值为0~7),子优先级为1bit(取值为0~1)
	//NVIC_PRIGROUP_PRE2_SUB2:抢占优先级为2bit(取值为0~3),子优先级为2bit(取值为0~3)
	//NVIC_PRIGROUP_PRE1_SUB3:抢占优先级为1bit(取值为0~1),子优先级为3bit(取值为0~7)
	//NVIC_PRIGROUP_PRE0_SUB4:抢占优先级为0bit(没有抢占优先级),子优先级为3bit(取值为0~15)
	nvic_priority_group_set(NVIC_PRIGROUP_PRE4_SUB0);//设置系统中断优先级"抢占优先级为4bit,子优先级为0bit"
  nvic_irq_enable(EXTI3_IRQn, 2U, 0U);//设置EXTI3_IRQn的中断优先级,抢占优先级为2,子优先级为0

	rcu_periph_clock_enable(RCU_GPIOE);//使能GPIOE时钟,enable GPIO clock
	rcu_periph_clock_enable(RCU_AF);   //外部中断,需要使能复用功能时钟

	gpio_init(GPIOE, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_3);//将GPIOE3设置为浮空输入

	gpio_exti_source_select(GPIO_PORT_SOURCE_GPIOE, GPIO_PIN_SOURCE_3);
	//设置GE3引脚为外部中断源,select GPIO pin exti sources
  exti_init(EXTI_3, EXTI_INTERRUPT, EXTI_TRIG_FALLING);
	//配置外部中断线使用外部中断3(EXTI_3)
	//中断模式为外部中断(EXTI_INTERRUPT)
	//中断触发方式为下降沿中断(EXTI_TRIG_FALLING)
	exti_interrupt_flag_clear(EXTI_3);//清除外部中断3标志
	exti_interrupt_enable(EXTI_3);//使能外部中断3(EXTI_3)
	exti_event_enable(EXTI_3);//使能外部事件3(EXTI_3)
}

除了EXTI中断,EXTI还可以向处理器提供事件信号。

Cortex-M3内核完全支持等待中断(WFI),等待 事件(WFE)和发送事件(SEV)指令。芯片内部有一个唤醒中断控制器(WIC),用户可以放心的让 处理器和NVIC进入功耗极低的省电模式,由WIC来识别中断和事件以及判断优先级。当某些预 期的事件发生时,EXTI能唤醒处理器及整个系统,例如一个特定的I/O管脚电平翻转或者RTC 闹钟动作。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值