stm32学习笔记(2):红外传感器计次,中断配置

由(1)EXTI 基本结构可知:

配置EXTI外部中断,有四个步骤:

1.开启RCC时钟GPIO口和AFIO口的时钟都要打开。由于NVIC属于单片机内核外设,无需打开时钟。

由于GPIOB和AFIO都属于APB2上的外设,所以代码如下:

2.在开启RCC后,配置GPIO口,这个老生常谈,便直接跳过。

3.配置AFIO口,函数:

我们选择PB14作为中断发生的io口

4.配置EXTI和NVIC

和配置GPIO口一样,我们这里同样用结构体的方式配置

我选择14线,下降沿触发的方式(当然也可以是其他的触发的方式)

NVIC配置,选择第二种分组方式,即抢占优先级与响应优先级都为3,选择EXTI15_10这条线。

配置完后,写中断函数,由于我选择的是EXTI14,查找后得到

void EXTI15_10_IRQHandler(void)这个专属的中断函数(10-15线都是这个)

代码如上,先判定是否为14线,然后num++(在程序中要设置一个全局变量num)

之后再写一个num的返回函数:

程序到此为止,差不多完成80%左右了,

接下来就是要到主函数main里面,添加相关头文件,由于较为容易,就不赘述了,代码如下:

最后的现象就是:

每一次用挡光片挡住传感器,oled屏幕上就会+1

PS:

由于硬件存在抖动的情况,所以计次有时会变得很快,为了避免这一现象,可由软件改进。

所有内容均根据b站up江协科技而来,笔记写的比较简单基础,属于32入门,如有错误,欢迎指出。

午安。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值