STM32CubeMX的外部中断的使用

啥是中断?中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。举个例子:类比一下在实际的代码中,hal库的中断处理较为复杂:startup_stm32f103xb.s通过汇编注册了中断处理函数exti1_irqhandler(),在stm32f1xx_it.c中,exti_irqhandler()引用了hal库的处理函数hal_gpio_exti_irqhandler(),其功能主要为判断具体的中断原因,并调用对应的中断回调函数:hal_gpio_exti_callback()。用户可以自己重声明中断回调函数(hal_gpio_exti_callback()),在其中写入自己的用户逻辑,不出意外的话,你这时候可能会有点懵。上图!中断处理函数写在exti_irqhandler()或hal_gpio_exti_callback()皆可,不过hal_gpio_exti_callback()需要重新声明,比如:void hal_gpio_exti_callback(uint16_t gpio_pin){ if(hal_gettick()-t>30) { if(gpio_pin == gpio_pin_1) { duty_cycle=duty_cycle+100; __hal_tim_setcompare(&htim1,tim_channel_4,duty_cycle); } if(gpio_pin == gpio_pin_2) { duty_cycle=duty_cycle-100; __hal_tim_setcompare(&htim1,tim_channel_4,duty_cycle); } } t=hal_gettick();}对于代码的意思不必理会,只需知道这些是自己按需求写的,下面开始连接硬件:以下是实操工程:1,配置引脚2,使能外部中断3,点击右上角generate code生成代码
hal_gpio_togglepin()这个函数可以反转引脚电平,以控制小灯亮灭,多加的那几行代码用来做一个简单的消抖,然后编译,下载。如果没出问题的话,每按一次按键,灯都会改变一次亮灭状态,上面用的是xxxit.c中的handler函数,下面试一试callback函数,注释掉刚才加的代码,在main.c中添加如下代码:
编译,下载,运行,效果应该跟刚才一样,下面试一下tim。
搞完后,小灯应该每秒闪烁5次。注意:中断里不要使用延时函数hal_delay()tim中断要手动开启(hal_tim_base_start_it())
数据泄露对企业公司的危害
PCB和半导体封装载板市场未来几年的发展怎样
针尖穿刺力测试仪怎么用
苹果13 pro max256g售价多少人民币
详解交换机与路由器的配置,如何配置静态路由
STM32CubeMX的外部中断的使用
一维X向压电纳米定位台的特点、应用及参数
华为电视产业受到半导体元件供应影响?
高品质小体积2.4G无线通信模块,上万用户共同选择!
全球半导体科技公司财报失利,英伟达能否力挽狂澜?
技术前沿:熔模铸造中航空发动机、燃气轮机用特种陶瓷产品
AMD突如其来给大家一个惊喜,正式推出RX 590显卡
51单片机对16×16点阵显示屏的控制设计
中国光刻机实现90nm制程芯片生产
黑科技满满的智能魔镜,它能完美展现你的美
TP-Link命令注入漏洞警报
“光积电”户外电源让您的旅途更加便利
IMAX Enhanced分享会震撼来袭,海信电视U7共铸客厅影音新体验
植物叶绿素测定仪的检测原理是怎样的
细胞手术机器人代表了医疗机器人发展的前沿