为了混口饭吃,现在是化工厂的一名电工,想转行嵌入式。今后开始分享自己的学习过程,与君共勉。
STM32支持19个外部中断和事件请求,其中线0~15映射对应IO口的输入中断。每个线同时最多只能映射一个IO口。
![d93f8952e8ff566084aa39c705bd817e.png](https://i-blog.csdnimg.cn/blog_migrate/81592811112355a8551254f965305e0e.jpeg)
而中断服务函数只有7个。线5-9共用一个,10到15共用一个。
![cf878e2509123a5b224c2ec904726c37.png](https://i-blog.csdnimg.cn/blog_migrate/7373edd5fcba899a1cd7d0d6b9ea41c2.jpeg)
下面是配置步骤。
![352318d85dfb26a2fcef42f9f9cad652.png](https://i-blog.csdnimg.cn/blog_migrate/eb25f9801f92a4dfd19198d04c71cd05.jpeg)
开始自己编写一个程序,通过两个按键的按下来触发中断,一个按键接地,端口设置为上拉状态,触发模式为下降沿触发;另一个按键接VCC,端口设置为下拉状态,触发模式为上升沿触发。然后在中断服务函数中编写触发中断后要执行的函数。一个为切换LED的亮灭状态,另一个控制蜂鸣器的通断。
![89919b7c0b0c837fe908234bd0186699.png](https://i-blog.csdnimg.cn/blog_migrate/48054f8606afc24edb63c25568ed3ad5.jpeg)
![96f9724a2e741e7824c46ea50ff245f9.png](https://i-blog.csdnimg.cn/blog_migrate/2e6e02fb366ad185371f093524b713b6.jpeg)
![3377dc86ce309ee827c2c9b767c22890.png](https://i-blog.csdnimg.cn/blog_migrate/42d9372eb40dc0fd0ef01f24d3e9ee8b.jpeg)
![2bb4be9f703ed571d54f41d4ca1d2feb.png](https://i-blog.csdnimg.cn/blog_migrate/aa951d93ea89ab349d9ad56dc48898cd.jpeg)
在调试过程中,出现了按键按下但会偶尔失灵,既不触发中断的现象,经过半个小时的找原因,发现因为粗心,将接地按键的触发模式设置为下降沿,而将接VCC按键的触发模式设置为上升沿,导致功能不正常,改正后测试正常。
知乎视频www.zhihu.com