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

【经验分享】STM32L0 串口uart通讯 USART1_IRQHandler

[复制链接]
STMCU小助手 发布时间:2021-11-18 22:00
使用stm32 cubx 生成工程后 发现USART1_IRQHandler 中断不能进入。
3 U$ a) V& D# |' ^
% l, f" _* B4 B下面这段代码进不去:
0 H1 E' U4 E  }* L+ }3 m* j  G: f4 g( Z% Q: l. l' `3 c. Q3 s
  1. void USART1_IRQHandler(void)
    - `- Y1 b. D, v. z! O3 ~. W
  2. {' U0 |& O& Z7 c: K
  3.   /* USER CODE BEGIN USART1_IRQn 0 */% O, D  b, Q8 l: v, n4 d
  4. % Z4 ?4 I* g1 s
  5.   /* USER CODE END USART1_IRQn 0 */2 f- Q0 w' O9 C6 K4 t' a  c
  6.   HAL_UART_IRQHandler(&huart1);
    6 Q9 c  e5 c1 t& h( _# w2 P
  7.   /* USER CODE BEGIN USART1_IRQn 1 */
    # K' m, U3 q* I' M7 \1 D1 Q
  8.   HAL_UART_Receive_IT(&huart1, recive_buf, 10);
    + `1 E( Y9 F0 ^' ~% F* r  {
  9.     HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);) |! s& d5 ^& F0 C7 _
  10.   /* USER CODE END USART1_IRQn 1 */
    0 @( a$ g0 m# J+ s& q
  11. }
复制代码
: y6 T: _0 s$ ?  c
于是添加红色部分,能够进入中断,完成数据接收
0 D7 I& Y* m. E+ j3 |9 h4 b  N: P  ^9 x
  1. void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)6 D1 ?5 U, v8 l- @( p4 v7 S* c
  2. {9 L/ m4 C- l% J; f; s4 \8 {* d
  3.   GPIO_InitTypeDef GPIO_InitStruct = {0};
    9 @3 L' w5 d9 |, \  Z
  4.   if(uartHandle->Instance==USART1)
    7 m3 ^6 K% x6 C! w0 S: `
  5.   {
    2 c) N$ }: B" ^% B% R) |+ p
  6.   /* USER CODE BEGIN USART1_MspInit 0 */% Q( k4 Y) h: F" G7 n3 @

  7. 0 a; Y  o9 p5 h/ v% d+ Q
  8.   /* USER CODE END USART1_MspInit 0 */
    ! X9 g; F8 G% q/ y# D& ]
  9.     /* USART1 clock enable */
    & F( o% J+ Q& {2 Q! `; h; |
  10.     __HAL_RCC_USART1_CLK_ENABLE();
    ) X& b# v5 ~: f& m3 }* c

  11. 6 F4 R- v- x, }1 z/ i/ _
  12.     __HAL_RCC_GPIOA_CLK_ENABLE();
    ! `) _5 c7 c( d2 [
  13.     /**USART1 GPIO Configuration   
    ) h6 T- f/ n0 A8 O1 A8 T
  14.     PA9     ------> USART1_TX$ i6 h% f' U) B: U) N. R! N: D$ M
  15.     PA10     ------> USART1_RX ( _) c; {3 R* T' t2 k' V
  16.     */
    2 ]; j2 Z# H9 t3 x$ F* p3 c
  17.     GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;$ M8 i* {" H+ I9 [- ^6 i4 j
  18.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    : B& Q. Q0 }, L/ R) o
  19.     GPIO_InitStruct.Pull = GPIO_NOPULL;7 ?7 X$ P( F  b2 |9 B3 f
  20.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    . g5 V4 {1 w3 P) g' {9 k4 G+ V8 v
  21.     GPIO_InitStruct.Alternate = GPIO_AF4_USART1;# }1 w1 m+ N' g0 N% o# J
  22.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);, S1 _5 U4 T2 U

  23. 5 w7 i+ ~$ m5 r, ]3 T: }3 M/ P
  24.     /* USART1 interrupt Init */
    4 L6 {: w3 C# w
  25.     HAL_NVIC_SetPriority(USART1_IRQn, 3, 0);
    ! \1 R; J8 O  n0 C
  26.     HAL_NVIC_EnableIRQ(USART1_IRQn);7 X* g1 u8 L8 x1 a$ s; N
  27. //            SET_BIT(USART1->ICR, USART_ICR_TCCF);   /* ȥԽTCע̍ΪԉҪ־ */7 p3 M* t, o/ c9 f: n, c1 \
  28. //    SET_BIT(USART1->RQR, USART_RQR_RXFRQ);  /* ȥԽRXNEޓ˕Ҫ־ */. E. V! K4 ^+ ^2 ~
  29. //    SET_BIT(USART1->CR1, USART_CR1_RXNEIE); /* ʹŜPE. RXޓ˜א׏ */
    , n; }/ e; k& J- R4 p
  30.   /* USER CODE BEGIN USART1_MspInit 1 */
    % h' k7 k4 Q& h2 N

  31. ) S+ K# |$ T: J5 r, t8 \
  32.   /* USER CODE END USART1_MspInit 1 */  Z. c" f  I! j. G( u6 I& f6 e
  33.   }
    4 I3 x! N/ @( g* e  j% t. U% u0 Z
  34.   else if(uartHandle->Instance==USART2)
    : G/ j/ L+ J! M5 Z. f
  35.   {; _0 n/ ]! g" B3 Z( q/ K
  36.   /* USER CODE BEGIN USART2_MspInit 0 */
    4 t4 U8 N2 j& Y, L0 `6 V5 X

  37. & m' U% x' ]  X, ~* f
  38.   /* USER CODE END USART2_MspInit 0 */
    0 G4 p3 ?; g% S
  39.     /* USART2 clock enable */
    ! J# |; j9 q: I
  40.     __HAL_RCC_USART2_CLK_ENABLE();& r5 O5 S( l  I+ N8 `% a
  41. ) A! M2 x- ~' L& _; j# X6 n
  42.     __HAL_RCC_GPIOA_CLK_ENABLE();1 F. |$ i9 P# p5 T. f* \
  43.     /**USART2 GPIO Configuration    # g7 I0 w+ D; B4 ?9 u+ Y- L
  44.     PA2     ------> USART2_TX
    1 K$ N" O2 B9 l8 Y$ e. a
  45.     PA3     ------> USART2_RX , B, C$ `1 _4 C3 k* n
  46.     */
      A& S  x" G7 {( K+ D0 C
  47.     GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
    + V+ e+ p6 q" K& w1 P8 U
  48.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    ; ]* ^6 p  r% X5 b/ o: o
  49.     GPIO_InitStruct.Pull = GPIO_NOPULL;  k" `! o) }& K2 T
  50.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;, e0 J0 Z0 }9 r2 J( F
  51.     GPIO_InitStruct.Alternate = GPIO_AF4_USART2;, a' S  Y) T8 j+ r3 ~% q8 }* X: R
  52.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
    / q0 c* u" E+ ^( ~  M$ z

  53. * ]6 T2 T8 W% d9 ~
  54.     /* USART2 interrupt Init */
    ( X$ v# ^  r2 e: L( s. g, I9 g
  55.     HAL_NVIC_SetPriority(USART2_IRQn, 3, 0);0 e; S' v6 L4 R, a
  56.     HAL_NVIC_EnableIRQ(USART2_IRQn);$ l! @6 |- ?+ k/ O
  57.   /* USER CODE BEGIN USART2_MspInit 1 */5 ~& R+ `+ b+ ~) j2 R' K* y4 i( T

  58. ) e3 Q# m" K* ]6 @* x5 K
  59.     SET_BIT(USART2->ICR, USART_ICR_TCCF);   /* 清除TC发送完成标志*/% `# d- {, a0 l
  60.     SET_BIT(USART2->RQR, USART_RQR_RXFRQ);  /*־清除RXNE接收标志*/, q( @. e; K. D: ?! v* C
  61.     SET_BIT(USART2->CR1, USART_CR1_RXNEIE); /* 使能PERX接收中断*/7 K1 ^3 A) H7 C3 X; p0 p) o3 e
  62. 6 m& y. T* I/ v& I( ~- I; [
  63.   /* USER CODE END USART2_MspInit 1 */: N* b/ p8 L0 V2 \+ f) {
  64.   }
    $ h4 m9 }2 j8 }/ m# [# A3 Y
  65. }
复制代码

' g2 v; a; U) g( [5 f, [) G  T( o) U6 F8 l# a

/ w4 D$ ?9 g7 s5 d  ?$ x
97PJUYPAGE[G~YJ6PJ0C`OX.png
赞 收藏 评论0 发布时间:2021-11-18 22:00

举报

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