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

stm32中断原理

[复制链接]
flyingstar 发布时间:2025-10-10 19:29
1.搭载STM32的开发环境  k( W* W: x: p, J7 N
1.安装jdk5 ~  T' j( o% j7 @
2.安装STM32CubeMX1 q/ Q9 X5 X9 y# b
安装结果如下
; K% Y- e2 b/ t! X/ E
$ Z6 x# s# \! K 115439zbjz3k7w7jfjwvjw.png 1 T4 K: m3 x/ X* t1 {; h2 m+ d

! \4 R; j5 s9 z, [2 O2 h) Z8 E- M: |1.配置STM32CubeMX:安装HAL库( p* a6 n% @! b: L3 ^
6 P, w" m$ z' q0 m, c2 `+ w5 ^: w
(1)选择自己想要安装的HAL库版本号9 p  I. z1 o; n) {& h+ i: |# m# p4 I

- d/ S: ]" n% s8 n9 n' J, O' _(2)下载HAL库,HAL库环境安装完成6 [1 Y% r! }; ^2 T+ a

7 Z* V$ X* y% y' N) ^安装结果如下
5 o6 i7 V& p' V
9 X: E: N' n  K  ? 115439asjnh1amata0410v.png
+ N6 D" k$ X# l& U3 v1 @! e" z* _3 S* f
0 [, r( R6 g$ Q3.安装MDK5) }4 |3 D& @: [- O: w9 m# p3 j
2.利用HAL库新建keil5工程: n8 p* w" t- C+ o8 S
1.STM32CubeMX建项目+ g* ^: Z* ?" t1 N4 f5 n
1.选择的单片机型号以及点击开始工程项目
: s0 J0 p+ U% @" {* h- l0 E6 l3 U8 G& m- H( h' q
2.配置时钟,进入上面的RCC,有两个时钟,一个是HSE和LSE,将HSE那里设为Crystal/Ceramic Resonator
9 {1 f# z' [% h% s, N" B! m1 D% \0 g6 b5 R
3.进入GPIO选择引脚 并且配置其工作模式:# J8 Y/ S, T' Y7 K+ U9 i
$ [' d; l& B+ Z5 ]) n
选择了三个GPIO:PA0,PA1,PA2设置为了GPIO_output;以及一个PB5设置为外部中断源:
' _! N& G& G) `2 \; _
& Z4 }" Y+ m4 l9 R4 I4.在GPIO界面里面点击PB5,对PB5的进行中断配置:
  L3 _- o+ A% [% I/ }# E/ L6 b9 e
5.在CLK Configuration中,进行时钟配置
4 Y0 p6 o; U( U  V8 C. t2 o3 Z& r) g
6.进入Project Manager,进行工程设置点击生成工程与代码:* y& b9 S; L8 w: e1 @9 c

1 W- A. |! J7 F4 D8 D% _* y4 t2.keil工程编写
* c! w) J" N. r8 n; ~( N1 B2 p1.点击刚刚生成的keil5工程文件,双击main.c文件,在main函数上方进行编写一个中断函数HAL_GPIO_EXTI_Callback()以及自定义一个中断的标识符号flag
3 l. V: b8 @" E) R2 ?( S/ N" c- m8 j* F8 y4 D
输入以下代码2 J% D7 A2 }& Z% c1 d& p
# ^' Q$ @1 j: X6 g
uint32_t flag=0;, `2 x! w! U% x* s
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
9 d3 q. t' p+ W( q4 mif(GPIO_Pin == SWITCH_Pin){# O4 C2 r# }. h. H9 t1 p, ]  V
GPIO_PinState pinState = HAL_GPIO_ReadPin(SWITCH_GPIO_Port,SWITCH_Pin);( Z. ~( E9 E7 q% T
if(pinState==GPIO_PIN_SET)3 |* z5 |4 H, }2 W0 _2 U0 O) e" Y
{! f! p  [( I" g$ X
flag=1;
1 ?; R8 H1 B" X' H# ]1 {}9 ]2 V' d- \9 [5 |/ o: V5 o
0 @9 I4 h! H  }, L, N" L
  else if(pinState==GPIO_PIN_RESET)
' U1 `: p. ^5 n' A6 Q4 I4 t  {, G4 f7 v- w  V6 D$ ~
      flag=0;6 ~3 S8 U) U- [  K3 M3 K7 j, g
  }& r  m9 F% @4 E+ H
  }
. [! ]# S6 K$ P) p/ s: _7 |1 g" [% W: I. h, P) X( }& \

* w* \: E4 ^5 M/ V, @2 ?}
& b6 T! `2 U- i2.在main函数里的while(1)里面写上如下代码:% {& ~  N. r# p7 n

) \: l6 a8 g0 V6 d" t3 {if(flag1)
9 b8 d5 |" j8 U{
' g/ R: ~% W" {% r, p- N' k# }HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET);& H' i# r  C0 x/ @5 m  M$ c
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);; g7 y4 b4 B- l: h0 h! S" Q
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);
; }+ z# m5 t4 fHAL_Delay(1000);
& N7 M5 [9 ]& y' U! W/ rHAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);
. f$ s# b6 ^" KHAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);' K6 U- b+ f, b" Q" q
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);
. o% M" `5 ?' @& [: j3 I0 JHAL_Delay(1000);* q" t- S$ Z" W8 f  q% S3 v5 x
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);
$ R7 J) e2 }+ h2 a5 p7 N0 `/ ZHAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);5 X* X' e0 f7 H0 t+ ]9 ^& h
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET);( y2 c9 T+ p# G% O
HAL_Delay(1000);
- C( X1 B+ d  e' _$ b# M}
: I6 V$ R3 H4 _5 t2 f; yelse if(flag0)8 d- b, R& Y$ {( Y( F& L. n1 |
{
2 n+ N0 s- b. ^, y- AHAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);
" ?$ l3 `) {. O7 A& H, r  R& lHAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);
6 P8 @+ C2 k: v/ sHAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);# \3 ]9 b7 L0 g; Q3 P4 B- }; q
}
4 M( g0 Z/ _1 _  @' L& C3.程序烧录
' b/ E& `/ X( |/ z: i! P4 ]实验结果如下/ X/ Z( D& O! a! U6 o

2 o' d9 \$ X# d, j. p# D* {( p 115439t6vu7tc0tj1p76tt.png ! H9 H% ^- C9 d2 A9 \1 O& L, C
" u, O. h' C: {3 Y8 S, g4 q
(三)proteus仿真
2 j1 V9 f, M  n9 U/ f; z1.搭建固定项目& Q- Q8 ^7 Z, g7 O! q; x
1.新建工程
9 {+ _2 ~+ q( ]5 s% K0 l& X- V9 @& m
结果如下- a3 e6 C2 O. J  T

( h! B$ e5 F- f 115438adjjxj8jndhp8hii.png
3 \- M$ w1 a& a$ r. i' a: }
$ ~  _! v/ ]0 O, `3 H0 t8 s2.绘制系统电路
2 P, Z( X! D) O5 [1.选择发光二极管,选择红、黄、绿三种颜色的led- z5 `7 ~* l, G8 F  \
- b; v' C- }. e$ ?" F
2.分别拖入原理框内,并与对应的端口相连接
" `. D$ ^* A* ]" r$ I5 p/ P2 d4 k( j6 y; Y7 _! s0 K1 S$ d6 M0 B
3.分别给3个LED配置电源3 H: }' |+ M8 h+ T7 p% C( p( A$ A' Z

; G! w2 E) R1 @% O4.将开关拖入原理图内,与设置的外部中断端口相连,并配置电源
. |/ [( E$ ?. V2 H8 @4 e, ]) Z2 h7 Z1 J
结果如下; |) Z1 x( z/ U
6 b1 {! g7 y. M5 t4 K/ H
115438uf67ha7qk5ee6fef.png
- n$ o& E0 i( {; X- }) P2 J
/ _- c7 F9 z% _5 c5 R& j4 f3.仿真运行' G  t3 |1 s6 U; {6 p! |
选对晶振频率,接入电网,开始仿真3 B% |$ k" B& R) |* ^
: Y9 q( b3 i8 N  y
结果如下
% g9 j- p+ `. @/ D  k+ g4 A- y2 d. A; u' J! T4 ~) p
115437jxcgjojgvcgozjxj.png # o+ Q8 y+ ~) i) H0 U6 R

% N* ~6 n5 ]- j3 ~2 W
赞 收藏 评论0 发布时间:2025-10-10 19:29

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版