stm32f10x_中断编程框架

中断编程流程

1,初始化NVIC,用于处理中断
2,初始化要连接到EXTI的GPIO
3,初始化EXTI用于产生中断/事件
4,编写中断服务函数
5,main函数

1,初始化NVIC,用于处理中断

1)设置优先级分组
misc.h中void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);
2)配置NVIC初始化结构体,中断源,主优先级,子优先级,使能。
void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);

2,初始化要连接到EXTI的GPIO

1)设置时钟
2)GPIO初始化结构体,输入/输出模式(速度),引脚
3)void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);

3,初始化EXTI用于产生中断/事件

1)时钟APB2总线上的AFIO时钟
2)配置输入线是哪个GPIO的哪个引脚
void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)
3)初始化EXTI结构体,输入线,模式,触发方式,使能
void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);

4)编写中断服务函数

中断服务函数名称:要与启动文件startup_stm32f10x_hd.s中断向量表函数名称相对应,文件中已经有了对应的弱定义中断函数,即如果有相同名称的,执行你自己的函数,如果没有或者名称写错了,执行系统写好的函数,一般是无限循环 ( B . ),注意,名称写错并不会报错!!

中断服务函数写在哪:我们说到,系统已经编写好了中断服务函数的名称了,同时,系统也写好了内核部分的中断服务函数,写在了stm32f10x_it.h文件中,我们可以接在内核部分后面写我们需要的中断服务函数。

5,main函数

例程:PA0连接到EXTI用于产生中断,PA0的电平变化通过按键来控制,产生一次中断,led反转一次。

bsp_exti.c

#include "bsp_exti.h"

void EXTI_NVIC_Config(void)
{
   
	NVIC_InitTypeDef NVIC_InitStruct;
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
	
	NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn;
	NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = KEY1_PreemptionPriority;
	NVIC_InitStruct.NVIC_IRQChannelSubPriority = KEY1_SubPriority;
	NVIC_InitStruct.NVIC_IRQChannelCmd 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值