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

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

[复制链接]
STMCU小助手 发布时间:2021-11-18 22:00
使用stm32 cubx 生成工程后 发现USART1_IRQHandler 中断不能进入。6 n7 K7 O( q1 _7 ?1 _9 a( }

" p$ u0 f: ^# Q# _下面这段代码进不去:3 C/ i) O3 i+ l6 m9 |
7 M" ]4 f  v+ C) a5 i* Z! B+ y
  1. void USART1_IRQHandler(void)  Q+ ]8 U+ G! `$ E
  2. {
      b0 X0 Y, e7 a
  3.   /* USER CODE BEGIN USART1_IRQn 0 */
    2 V2 f) s0 G! }
  4. ( x( `# [* O/ B/ h- z5 [
  5.   /* USER CODE END USART1_IRQn 0 */3 B" P" I+ X8 v
  6.   HAL_UART_IRQHandler(&huart1);
    - q  m% ?3 U6 W7 W$ F% ]
  7.   /* USER CODE BEGIN USART1_IRQn 1 */: N+ ]6 x: D' M, u5 @  Z
  8.   HAL_UART_Receive_IT(&huart1, recive_buf, 10);
    * Q2 c' p) `* H- ]+ S
  9.     HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);6 s6 f% Q6 ?* _$ o; L9 k& w8 h
  10.   /* USER CODE END USART1_IRQn 1 */
    , f! R% N  n5 Z# z
  11. }
复制代码
$ ?  R$ g8 _7 z+ u* Y4 R$ D
于是添加红色部分,能够进入中断,完成数据接收$ s1 U) f7 ~% S3 I8 q

/ T$ z  o# V* {  H: X; f
  1. void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
    9 ?; [9 m$ @. H2 l* b
  2. {1 Z' p; e6 H! a$ e9 o3 l' z
  3.   GPIO_InitTypeDef GPIO_InitStruct = {0};
    3 r8 ^  t! e" Z( f# I
  4.   if(uartHandle->Instance==USART1); Q% Q7 l+ V* H/ [4 {4 x
  5.   {
    0 K% q  o) c: D) F* C2 c; i
  6.   /* USER CODE BEGIN USART1_MspInit 0 */1 V# n* Q% ~4 V3 T. X3 }- U/ F8 c* U

  7. # u) l2 z+ @' y0 o
  8.   /* USER CODE END USART1_MspInit 0 */; u- L$ v  w9 T% R9 Q( }
  9.     /* USART1 clock enable */6 W' z/ K$ p8 j; J
  10.     __HAL_RCC_USART1_CLK_ENABLE();( A, h- r9 z. E6 j# W; b( l

  11. & s! Z# @4 c' c/ d* X( ?$ E
  12.     __HAL_RCC_GPIOA_CLK_ENABLE();
    . d% w& j5 n  ?) {
  13.     /**USART1 GPIO Configuration    , ]3 C0 G' P- C9 r3 C6 e) F
  14.     PA9     ------> USART1_TX. X# h3 J" |" M  t3 r% S; \
  15.     PA10     ------> USART1_RX 8 V# N& T4 l* ?4 u) I
  16.     */
    * j8 F6 Y, i6 ~
  17.     GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
    . ^1 @8 [; \$ V9 c' |- ~: s5 p
  18.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    4 s6 l9 |% d+ A) e- k
  19.     GPIO_InitStruct.Pull = GPIO_NOPULL;4 {$ I* `, e" }! f$ ~
  20.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    : l) v2 Q+ i; [! D0 L
  21.     GPIO_InitStruct.Alternate = GPIO_AF4_USART1;8 R- R, s5 r1 e; a! z; L4 G: U* G8 i
  22.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);2 a$ S3 e# \% U, P7 u% Q2 n
  23. 7 C! `1 @4 `& k7 ?$ {! F0 E9 a
  24.     /* USART1 interrupt Init *// v- o' U( U2 s1 Y$ H- o7 X' Z9 B! G
  25.     HAL_NVIC_SetPriority(USART1_IRQn, 3, 0);2 |8 S5 [6 y( C5 Y5 u9 r
  26.     HAL_NVIC_EnableIRQ(USART1_IRQn);
    9 B. @* O/ @1 A3 U$ D' k! ?
  27. //            SET_BIT(USART1->ICR, USART_ICR_TCCF);   /* ȥԽTCע̍ΪԉҪ־ */
    & T$ ~: Y1 F7 f2 a5 M6 O
  28. //    SET_BIT(USART1->RQR, USART_RQR_RXFRQ);  /* ȥԽRXNEޓ˕Ҫ־ */
    + P5 V: Q1 J* L. `" s- g. @
  29. //    SET_BIT(USART1->CR1, USART_CR1_RXNEIE); /* ʹŜPE. RXޓ˜א׏ */0 n$ V' V7 a& B+ h' W* h
  30.   /* USER CODE BEGIN USART1_MspInit 1 */% R) n% e% i) l8 r& K/ r" l( n" R
  31. . o, [) K  T' h4 G2 f4 x" b; b
  32.   /* USER CODE END USART1_MspInit 1 */
    ( S# L; X9 ^/ N' ?
  33.   }
    % Z# {1 j( i% V, o# n9 [# X
  34.   else if(uartHandle->Instance==USART2)
    " c! I2 ~0 e' @% L# p
  35.   {9 w/ Z. I2 w  M$ e; U5 t; i: _
  36.   /* USER CODE BEGIN USART2_MspInit 0 */
    : y( _( g& [: G' Q0 _* J0 H
  37. 2 d2 L$ e& ?9 D6 c
  38.   /* USER CODE END USART2_MspInit 0 */% U6 Q/ v+ s, W! X: `( q
  39.     /* USART2 clock enable */
    6 M5 H* I2 i$ C. v
  40.     __HAL_RCC_USART2_CLK_ENABLE();6 x+ H  T/ N8 m& G  G! x
  41. ; E9 z' E* C4 V% B/ m* n6 |
  42.     __HAL_RCC_GPIOA_CLK_ENABLE();
    % }6 ~* i) c0 y! e6 T
  43.     /**USART2 GPIO Configuration    # i+ W# w3 X0 A$ z2 g
  44.     PA2     ------> USART2_TX2 m, t  b9 I. ]( ]
  45.     PA3     ------> USART2_RX ' i2 s9 v) I7 H
  46.     */( ^' `. n- s% T4 R/ a
  47.     GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;7 G8 m5 R7 A, B* M/ e" ^
  48.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    9 Z$ L3 B1 Z* t& F3 |; |2 ^
  49.     GPIO_InitStruct.Pull = GPIO_NOPULL;/ ~9 M  q, I: c
  50.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    6 h& [- E0 j3 F. z3 w4 c5 U
  51.     GPIO_InitStruct.Alternate = GPIO_AF4_USART2;
    2 f% S5 M$ S9 D  I7 ]% `1 F$ u: I
  52.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
    , P( ^7 [4 e3 N7 f; l4 ~

  53. % \- Q2 h; z: d8 h6 v5 t
  54.     /* USART2 interrupt Init */; A( Y, L8 w" R) Q0 A, B
  55.     HAL_NVIC_SetPriority(USART2_IRQn, 3, 0);, m* f% a/ l8 A0 u" }
  56.     HAL_NVIC_EnableIRQ(USART2_IRQn);
    # i7 ~: ]& z6 `- V. v5 M0 S! K
  57.   /* USER CODE BEGIN USART2_MspInit 1 *// F; ^5 y$ a; @- E% k5 E4 [/ o

  58. 6 n/ `( w- c, c" ?3 I
  59.     SET_BIT(USART2->ICR, USART_ICR_TCCF);   /* 清除TC发送完成标志*/
    0 X( [3 H! S: y- @9 ~
  60.     SET_BIT(USART2->RQR, USART_RQR_RXFRQ);  /*־清除RXNE接收标志*/
    7 f. w- R& Z3 @' X
  61.     SET_BIT(USART2->CR1, USART_CR1_RXNEIE); /* 使能PERX接收中断*/! i. q2 F) p) N2 \7 H1 `& i. T
  62. 0 b  n& |+ I) y4 {% U" p$ ^
  63.   /* USER CODE END USART2_MspInit 1 */$ q/ l, g% R$ ?( F
  64.   }& x( N0 d0 v" z- }4 g
  65. }
复制代码
3 I& p! x1 z( R. o/ K
6 ]" j4 V5 o- y" m) M3 `

6 B' P2 p( ~+ Q2 j/ \1 i
97PJUYPAGE[G~YJ6PJ0C`OX.png
收藏 评论0 发布时间:2021-11-18 22:00

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版