你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32Cube HAL 外部中断

[复制链接]
STMCU小助手 发布时间:2022-4-7 16:58
实验内容:通过按键触发外部中断,LED灯电平翻转。

一、原理图

44_Z1A9LZU@Y3W%II%9PCSB.png

二、 CubeMX配置

Step1.打开 STM32CubeMX,点击“New Project”,选择芯片型号,STM32F103VETx。

~H6~EUZBNZQ`7@$S165%P)K.png

Step2.选择时钟源,并配置时钟树。选择Crystal/Ceramic Resonator,并配置系统时钟为72M。

WILJW%HFCD5[V`M1RAK3X(P.png

[QQDV(ZX(GMQZUS77Z6UTNY.png

Step3.配置SYS,我们这里选择的是Serial Wire。(正常情况配置不配置不影响,debug可以使用。但是你不可以把这两个引脚用于其他复用功能,如果用于其他复用功能,debug就不起作用了。)

B)4LO@1GA1FSDJGES]05`C3.png

Step4.  通过搜索框添加我们需要使用的IO口进行简单的配置。然后根据以下步骤到相应栏中进行具体信息配置,主要配置按键引脚PA0为外部中断,上升沿触发,既不上拉也不下拉;PB0为推挽输出,既不上拉也不下拉,低速,默认输出高电平。同时使能外部中断源。

%I1HVNSN2SAQBMQ}MG11H.png

]N7O5[P7YYCZH_SD}WW{5YY.png

6[QD@3~M_C4EGDC9}[2K~]R.png
29ZU4Z)_F{4_E[F7}3$W[Q0.png

到这里关于相关配置基本已经完成,只需要根据之前文章《STM32Cube HAL:GPIO输入/输出(一)》Step4-Step8,设置相关工程参数和生成代码。

三、添加功能代码

在main.c写入中断回调函数:

  1. void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
  2. {
  3.         if(GPIO_Pin==GPIO_PIN_0)//同时多个外部中断时用于区分
  4.         {
  5.                 HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);//输出电平翻转函数
  6.         }
  7. }
复制代码

由于该实验较为简单,只需在配置完CubeMX以后写一个回调函数,就可以实现我们需要的功能。该实验旨在让我们了解配置外部中断的过程。

在使用中断回调函数的时候我们总能看到自带的回调函数用__weak修饰,这属于弱定义的形式。里面的注释“NOTE:…”描述是,“该函数不应被修改,如果需要回调,则可以在用户文件中实现。”也就是说,要在用户文件中重写该函数。

FHDDMKF{TUID}X(4]6@X8B3.png



收藏 评论0 发布时间:2022-4-7 16:58

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版