• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

stm32外部中断

皇甫赛奇 2018-01-03 浏览量:886
STM32的每个IO口都可以作为中断输入吗?要把IO口作为外部中断输入怎么操作?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • STM32的每个IO口都可以作为中断输入,要把IO口作为外部中断输入,有一下几个步骤:
    第一步 初始化IO口作为输入
    设置你要作为外部中断输入的IO口的状态,可以设置为上拉/下拉输入,也可以设置为浮空输入,但是浮空的时候一定要带上拉或者下拉电阻,否则可能导致中断不停的触发。在干扰较大的地方,就算使用了上拉/下拉,也建议使用外部上拉/下拉电阻,这样可以一定程度防止外部干扰带来的影响。
    第二步 开启IO口复用时钟,设置IO口于中断线的映射关系
    STM32的IO口与中断线的对应关系需要配置外部中断寄存器(EXTICR),怎样我们要先开启复用时钟,然后配置IO口与中断线的对应关系,才能把外部中断与中断线连接起来。
    第三步 开启与该IO口相对的线上中断/事件,设置触发条件
    我们要配置中断的产生的条件,STM32可以配置成上升沿触发,下降沿触发,或者任意电平触发,但是不能配置成高电平或者低电平触发。这里根据自己的实际情况来配置。
    注:第二步与第三步可以作为一个整体来设置
    第四步 配置中断分组(NVIC),并且使能中断
    这一步,就是配置中断分组,以及使能。对STM32的中断来说,只有配置了NVIC的设置,并开启才能被执行,否则是不会执行到中断服务函数里面去的。
    第五步 编写中断服务函数
    这是中断设置的最后一步,中断服务函数,是必不可少的,如果代码里开启了中断,但是没编写中断服务函数,就可能引起硬件错误,从而导致程序崩溃!所以在开启了某个中断后,一定要记得为改中断编写服务函数。在中断服务函数中编写你要执行的中断后的操作。
    • 发布于 2018-01-03
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了 :颜色不同,可以替换使用,跟客户说明清楚。 DTM04-6P GREY DTM04-6P-E004 黑色 回复

其他答案 数量:5
  • 每个口都可以,要在中断设置那里选择允许某个IO口中断并使能
    • 发布于2018-01-04
    • 举报
    • 评论 0
    • 0
    • 0

  • 不建议全开,否则你的mcu占用太大了,建议将中断平均分配到ABCDE几个端口上各一个,有利于中断入口判断。
    • 发布于2018-01-04
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :不是别称,是两个不同的物料,CWT-3811不是完整型号 回复

  • 都可以,晶振,烧写口不建议使用。
    步骤基本就是1,配置IO,设置中断,中断处理。参考下相应的官方cube包工程,或者硬石的程序,我觉得写的不错
    • 发布于2018-01-04
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :请参考:1844252 回复

  • 每个IO口都行,STM32把所有的外部中断归类为16条中断线,如PA0-PH0为同一组中断线,PA1-PH1为同一组中断线,初始化中断外设就是初始化中断线。

    • 发布于2018-01-04
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :包装图代码不同。以下有截图说明 回复

  • 都是可以的,要把GPIO设置为输入模式,再使用复用功能中的中断功能。
    开GPIO时钟与中断时钟。
    • 发布于2018-01-07
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :原厂没有提供规格书,只有网页版的http://www.sg-micro.com/show-product-585.html 回复

相关问题

问题达人换一批

stm32外部中断