STM32 hal库使用笔记(二)中断—外部中断

目录

一、NVIC与EXTI

 二、HAL库的配置

1.时钟的配置

2.GPIO的配置

3.NVIC配置

三、代码编写

实验目的:利用外部中断控制LED灯的亮灭,进行翻转

实验平台:正点原子精英板

一、NVIC与EXTI

NVIC 即嵌套向量中断控制器,全称 Nested vectored interrupt controller。具有所有中断的总裁权。

EXTI 即是外部中断和事件控制器,它是由 20 个产生事件/中断请求的边沿检测器组成。每
一条输入线都可以独立地配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或
者双边沿都触发)。每个输入线都可以独立地被屏蔽。挂起寄存器保持着状态线的中断请求。

换而言之,中断的来源除了外部之外,大部分来自内部,比如定时器、串口中断等,总结如下图:

 二、HAL库的配置

1.时钟的配置

和前边实验一样,不再重复。

2.GPIO的配置

按键是PE4,所以将按键0复用为外部中断源,来触发中断。

有下图可知,将PE4配置为外部下降沿触发,上拉。

3.NVIC配置

如下图即可,设置为分组2,这样抢占优先级和响应优先级个数均匀,大多数如此选择。

抢占优先级高的,可以打断抢占优先级低的先执行;

抢占优先级相同,响应优先级高的先执行,若已经有低响应优先级的正在执行,则无法打断;

若两个优先级都相等,自然优先级高的先执行。

这里的抢占优先级和响应优先级随便设置即可,只有一个中断。

三、代码编写

HAL库配置完成后,用户只需要自己重定义反馈函数,在里面实现功能即可,中断服务函数以及在it.c里面调用(包括中断标志位清零的操作也已经完成)。

 在gpio.c的用户自定义代码区编写反馈函数

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    if(GPIO_Pin == KEY0_Pin)
    {
        if(HAL_GPIO_ReadPin(KEY0_GPIO_Port, KEY0_Pin)==0)
        {
            HAL_GPIO_TogglePin(LED0_GPIO_Port, LED0_Pin);
        }
   }
}

 欢迎大家交流与指针

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乱码小伙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值