超声波传感器概述:
利用定时器2计数,将PSC配置为71,这样利用公式计算得出计数一次代表1us
利用定时器2来做一个us级得延时函数,方便使用超声波的触发信号。
以下是主函数代码:
智能垃圾桶项目:
接线:
LED1连接PB8,sg90舵机连接PB9,接线要正确!
函数封装:四个板块,板块1用来给超声波Trig端口至少10us的高电平,板块2利用超声波获得与物体的距离,记得在启动定时器2时将定时器2计数值清零。
板块3是LED灯的函数封装,板块4是舵机的,在初始化舵机时,需要打开定时器4通道4中的PWM功能。
main函数:在while循环外初始化舵机。
加入按键开盖和震动传感器:
在cubeMX软件GPIO设置中设置PA0和PB5为下降沿触发中断
打开外部中断,并且将抢占优先级设置为2,并在main函数中设置滴答定时器优先级,防止在中断服务函数中使用延时函数时卡死。
在main函数中重写中断服务函数,中断线0和5共用一个中断服务函数,双重判断中断源是否来自PA0或者PB5,因为都是下降沿触发中断,所以可以在中断函数里检测PA0或者PB5是否为低电平。
最后在开盖函数中加入蜂鸣器,cubeMX中设置PB4为输出模式,默认高电平。
最后有个小bug,如果一直开盖蜂鸣器会一直响,所以我们在开关盖函数中加入flag标志位,初始化flag为close。