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

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

[复制链接]
STMCU小助手 发布时间:2021-11-18 22:00
使用stm32 cubx 生成工程后 发现USART1_IRQHandler 中断不能进入。
7 r7 v# O& K6 ~5 M/ F2 r! Z  l& U+ t* ~
下面这段代码进不去:2 }" K3 s3 K( t* }+ D. \& b1 ^  E
5 C, e/ n) G+ p& q8 p5 h
  1. void USART1_IRQHandler(void)3 _+ s/ Z3 ~) e3 Q3 T2 O6 |2 @
  2. {
    & X, |; I; X! x2 G8 \! }
  3.   /* USER CODE BEGIN USART1_IRQn 0 */
    & R8 j( z9 b% I  c! v+ A  s+ ]$ l

  4. . A  z5 X5 X2 T& r% R$ P) B
  5.   /* USER CODE END USART1_IRQn 0 */
    ; O* _8 n* y$ K
  6.   HAL_UART_IRQHandler(&huart1);; p: l( w5 A5 @: c
  7.   /* USER CODE BEGIN USART1_IRQn 1 */4 G) Y, Z1 o. f) ^! ]) Y- m' F
  8.   HAL_UART_Receive_IT(&huart1, recive_buf, 10);, e. z/ A2 ~/ W. Y3 A! n
  9.     HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
    4 \8 Y4 z2 m: t2 D4 S( D% A
  10.   /* USER CODE END USART1_IRQn 1 */- ~/ e8 V0 ~. g0 v! L
  11. }
复制代码

  `* N. ?$ y* b, V( J1 @; P9 D+ e于是添加红色部分,能够进入中断,完成数据接收
  T( x6 X  N; S! n/ |9 p6 C  f. P1 ^3 E
  1. void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)) R" T  y  s- J9 v- ^; G9 b8 V
  2. {
    * d; k) `+ `' x% {% q) r8 ]
  3.   GPIO_InitTypeDef GPIO_InitStruct = {0};
    1 j, I2 a$ c" ^$ E# r' K6 Y9 T
  4.   if(uartHandle->Instance==USART1)) T1 {5 I0 O6 @# N. A* o6 l
  5.   {
    8 I, n! r* T7 O, Q- n1 n$ ]
  6.   /* USER CODE BEGIN USART1_MspInit 0 */2 u- X! d: t6 \3 ~

  7. 8 i) g2 J8 [! b" t! E" V) V
  8.   /* USER CODE END USART1_MspInit 0 */
      k: J- |' B0 m' E8 q7 I3 A
  9.     /* USART1 clock enable */
    ; z' S2 y8 N: \) U" l
  10.     __HAL_RCC_USART1_CLK_ENABLE();9 v5 }2 Q1 S9 }

  11. , A3 |+ p6 V5 \$ Q+ X5 @
  12.     __HAL_RCC_GPIOA_CLK_ENABLE();
    ; Q) s( ~; u0 `5 t" u6 ?. N5 d2 @, f
  13.     /**USART1 GPIO Configuration    7 P% M; l" n7 _' f' r( q1 ~6 N
  14.     PA9     ------> USART1_TX' T- W9 s" E, F( T% ^- n
  15.     PA10     ------> USART1_RX 2 V. Z3 O! Z1 v7 o6 t6 t
  16.     */7 s& n' c; v& t$ }8 L- o% w
  17.     GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;( g' Z6 ^- {9 H3 S* u
  18.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;5 T0 f3 n2 S; t
  19.     GPIO_InitStruct.Pull = GPIO_NOPULL;4 _; H* w2 G( U  e, D: w% T
  20.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    8 J$ z7 {4 F6 O
  21.     GPIO_InitStruct.Alternate = GPIO_AF4_USART1;
    % u! R2 ]* y1 T  O
  22.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);5 d) b% k9 m" f6 }& F

  23. * @& T$ T' J! L$ _8 O. D2 P
  24.     /* USART1 interrupt Init */
      }* ^( @  H" F$ w5 D3 Q
  25.     HAL_NVIC_SetPriority(USART1_IRQn, 3, 0);
    4 k$ c% L3 ~0 E- V9 W
  26.     HAL_NVIC_EnableIRQ(USART1_IRQn);1 `, p: N0 ?9 A! b! \
  27. //            SET_BIT(USART1->ICR, USART_ICR_TCCF);   /* ȥԽTCע̍ΪԉҪ־ */& c6 j5 I5 m3 k% e9 L8 l
  28. //    SET_BIT(USART1->RQR, USART_RQR_RXFRQ);  /* ȥԽRXNEޓ˕Ҫ־ */
    - D1 [) ~. e$ C% A; D
  29. //    SET_BIT(USART1->CR1, USART_CR1_RXNEIE); /* ʹŜPE. RXޓ˜א׏ */  j! t) R  u! L: i
  30.   /* USER CODE BEGIN USART1_MspInit 1 */
    0 }, C' b" @# z. h" M( Z

  31. 4 t3 G$ U8 ?1 v: ?
  32.   /* USER CODE END USART1_MspInit 1 */, q; n0 Q8 }/ Q& v2 m% }
  33.   }
    5 N4 O+ f1 p6 {  G
  34.   else if(uartHandle->Instance==USART2)
    # b! n# B; W* p: q& A
  35.   {8 y' R* \4 d( F" c2 G" Z
  36.   /* USER CODE BEGIN USART2_MspInit 0 */
    2 ~1 \0 n4 |6 t8 |8 c

  37. $ q* r% O' s7 o- m& n$ B
  38.   /* USER CODE END USART2_MspInit 0 */" r* {/ @  X* b, g
  39.     /* USART2 clock enable */
    2 Y) _) S7 f" ~
  40.     __HAL_RCC_USART2_CLK_ENABLE();: o* B# ?, J# a- u
  41. / g9 d/ T/ k( ]7 f6 [8 r
  42.     __HAL_RCC_GPIOA_CLK_ENABLE();
    3 I" ~: y. X, l6 `8 M$ {: W' w# G
  43.     /**USART2 GPIO Configuration    + i) A# d* n3 i% F8 U+ {
  44.     PA2     ------> USART2_TX
    - \. G0 `; p- ]) L. M7 D
  45.     PA3     ------> USART2_RX
    5 b  ?$ r, O0 Y
  46.     */& A: q. ~) Q# X8 B1 G
  47.     GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;' m. S0 Q0 G8 n3 Q+ i& X" O2 x; i
  48.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    ; R0 g4 T4 U" L. b+ O. z' G
  49.     GPIO_InitStruct.Pull = GPIO_NOPULL;
    . i! M" ?, `1 y4 m
  50.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;1 l, ~! `$ j1 w2 |$ ~
  51.     GPIO_InitStruct.Alternate = GPIO_AF4_USART2;
    & t' o- W. J, L. N5 S+ f/ S- v: [/ y
  52.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
    1 {  I$ `- U, ~) i" N, d
  53. 4 }2 u, t/ I' I* p
  54.     /* USART2 interrupt Init */
    % A) u* m: j8 k" Z& u' ^+ M
  55.     HAL_NVIC_SetPriority(USART2_IRQn, 3, 0);6 \8 I5 f7 g8 S* Y6 H& K, }
  56.     HAL_NVIC_EnableIRQ(USART2_IRQn);2 `5 Y) q# m- K' E. R7 X$ R3 P; }
  57.   /* USER CODE BEGIN USART2_MspInit 1 */
    + C3 q2 z% I' A$ r

  58. 4 L1 k% B; |6 U  A/ P
  59.     SET_BIT(USART2->ICR, USART_ICR_TCCF);   /* 清除TC发送完成标志*/
    % K: t9 b, J7 q7 y. Y
  60.     SET_BIT(USART2->RQR, USART_RQR_RXFRQ);  /*־清除RXNE接收标志*/9 N" E8 s  A3 |. A' L2 m  a
  61.     SET_BIT(USART2->CR1, USART_CR1_RXNEIE); /* 使能PERX接收中断*/
    4 e, s" P+ f' M$ x$ P( j+ j
  62. " P9 D( a' \/ N0 H/ n! G
  63.   /* USER CODE END USART2_MspInit 1 */. M; E, V4 e4 R9 v  ^1 f0 |
  64.   }5 L+ F8 k4 g% G
  65. }
复制代码
) j3 j# D% m+ @

: q; Y- V+ |* B9 ]/ N$ L2 \0 c' {, D  t9 i, @2 {
97PJUYPAGE[G~YJ6PJ0C`OX.png
收藏 评论0 发布时间:2021-11-18 22:00

举报

0个回答

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版