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

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

[复制链接]
STMCU小助手 发布时间:2021-11-18 22:00
使用stm32 cubx 生成工程后 发现USART1_IRQHandler 中断不能进入。
# R1 h8 y' |; N0 F' {# }% |# f/ j" P0 T
  y" E- R# W8 k5 M$ N; I下面这段代码进不去:
% w; u0 ^( U6 _1 F; @7 T
1 I* _1 I" p, T' o% ]
  1. void USART1_IRQHandler(void), }7 d2 m4 s2 v2 J$ }
  2. {$ e: G% K8 o0 x5 G1 A/ U9 @
  3.   /* USER CODE BEGIN USART1_IRQn 0 */; A3 r. H$ }) J2 i( q: j
  4. . O3 E/ M+ u/ L5 X' v: n% j1 k
  5.   /* USER CODE END USART1_IRQn 0 */9 v7 F/ D* W; s2 ]! l
  6.   HAL_UART_IRQHandler(&huart1);
    ) i* n9 G. {, }8 m2 l
  7.   /* USER CODE BEGIN USART1_IRQn 1 */
    & h/ L& o4 V1 @. m5 y' G
  8.   HAL_UART_Receive_IT(&huart1, recive_buf, 10);
    # w2 o. W: B% x
  9.     HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);! l3 f& k% w1 z
  10.   /* USER CODE END USART1_IRQn 1 */
    ' }# \* s7 b$ ~( c" U
  11. }
复制代码
" l. K) h8 W3 S% y+ ]$ \4 l$ ~4 K
于是添加红色部分,能够进入中断,完成数据接收
1 c  j$ `) E9 z1 T9 L
- C- ?5 m( m8 R6 ~0 W! s
  1. void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
    ' n  N& h, m& I7 N$ d! s
  2. {
    * n: k9 r4 V4 `6 y- l2 G( v
  3.   GPIO_InitTypeDef GPIO_InitStruct = {0};
    3 Q8 F- T4 g6 s4 K6 ?9 }
  4.   if(uartHandle->Instance==USART1): o( W  z- m; E2 c, V
  5.   {% a& l7 W1 D0 @
  6.   /* USER CODE BEGIN USART1_MspInit 0 */5 Z6 C8 N9 y% g9 v5 m. y* x" e8 K$ @
  7. ' T8 @) N( p) c- @& N
  8.   /* USER CODE END USART1_MspInit 0 */
    / ?5 H9 U: {, D
  9.     /* USART1 clock enable */: B, ]8 _/ L* F" s+ T9 m
  10.     __HAL_RCC_USART1_CLK_ENABLE();& F" C; C5 i7 w% k

  11. ; n8 l+ ?2 T. F! R* ^( L+ y
  12.     __HAL_RCC_GPIOA_CLK_ENABLE();
    # [5 u: g; C- L+ f1 P* W5 N
  13.     /**USART1 GPIO Configuration   
    2 G8 A& p# j  g, _2 Z4 M
  14.     PA9     ------> USART1_TX
    5 Y$ _' u8 h' z4 d) B
  15.     PA10     ------> USART1_RX
    , A2 w8 b7 k8 h, R, k
  16.     */
    ) G9 S! _' W+ J: |) x( O
  17.     GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;# B9 ~- ^6 R. Y' b8 K
  18.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    3 k  U% g! ?% Q
  19.     GPIO_InitStruct.Pull = GPIO_NOPULL;8 s2 b! [9 z! b/ H
  20.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;# h4 ~$ z% z  Y$ e
  21.     GPIO_InitStruct.Alternate = GPIO_AF4_USART1;1 \1 b9 Y% A8 g, ^" r) o3 @
  22.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);& W' Q3 Z3 a$ I7 b; b
  23. 9 a( @( u2 z$ D% D4 M
  24.     /* USART1 interrupt Init */
    2 U1 N! k9 d+ f
  25.     HAL_NVIC_SetPriority(USART1_IRQn, 3, 0);
    8 w$ g; b. A. B, v
  26.     HAL_NVIC_EnableIRQ(USART1_IRQn);# V* l" D( {4 \1 O! [5 a
  27. //            SET_BIT(USART1->ICR, USART_ICR_TCCF);   /* ȥԽTCע̍ΪԉҪ־ */
    + f3 R2 Y, m& K2 u) P
  28. //    SET_BIT(USART1->RQR, USART_RQR_RXFRQ);  /* ȥԽRXNEޓ˕Ҫ־ */
    + B" j$ ?3 F% R7 b4 G; r% v
  29. //    SET_BIT(USART1->CR1, USART_CR1_RXNEIE); /* ʹŜPE. RXޓ˜א׏ */% \4 \2 ]3 K  T: j" W, i! @/ Y
  30.   /* USER CODE BEGIN USART1_MspInit 1 */
    5 c7 J2 V0 N2 o& E

  31. * [+ b+ B6 b' g1 C7 W' S% _
  32.   /* USER CODE END USART1_MspInit 1 */+ e/ h1 Y. ]% x& K
  33.   }- L( o8 j9 I# a) \
  34.   else if(uartHandle->Instance==USART2)4 J7 {% W, [* B6 s2 k
  35.   {
    ( `; H" A' R. `2 Y# O( R
  36.   /* USER CODE BEGIN USART2_MspInit 0 */' M+ s; j0 L% g6 R! [

  37. - s/ z7 {' q4 Y2 K8 l9 f
  38.   /* USER CODE END USART2_MspInit 0 */
    - o& l% G! @; G; {
  39.     /* USART2 clock enable */% }/ L0 b0 X6 T6 Z! X% q3 H1 d
  40.     __HAL_RCC_USART2_CLK_ENABLE();
      Y5 e/ o7 D" w3 t- s. e; ]  P
  41. 0 f; t5 J8 t" d* r; w
  42.     __HAL_RCC_GPIOA_CLK_ENABLE();- }" x, b0 G8 e; u+ [; S
  43.     /**USART2 GPIO Configuration   
    5 m5 M# x1 M8 Y8 ]2 g3 P/ C% V
  44.     PA2     ------> USART2_TX/ [2 J2 W; b/ u0 k3 s
  45.     PA3     ------> USART2_RX . r3 k  G; J- c: l" @
  46.     */( y0 Z0 {! q$ o* q* q
  47.     GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
    ' c6 K2 _' @, y! ^% g, B. b
  48.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;/ A6 x( M! A, G5 X9 P2 u& ?
  49.     GPIO_InitStruct.Pull = GPIO_NOPULL;
    0 M( c( ?; F+ z7 N
  50.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;$ T8 P+ V. M; K3 r) {
  51.     GPIO_InitStruct.Alternate = GPIO_AF4_USART2;+ y9 P+ p; k2 c5 f& _
  52.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);  o; `9 \9 y) z8 r0 ]* C- [
  53. 6 Y% R) R- }: `% \" B2 O: V
  54.     /* USART2 interrupt Init */
    3 I& c: i  e# n0 X, n, p
  55.     HAL_NVIC_SetPriority(USART2_IRQn, 3, 0);
    6 o, C8 Y. f+ b5 C+ A! m: ^5 G
  56.     HAL_NVIC_EnableIRQ(USART2_IRQn);$ e, V1 B! [# E- z7 f
  57.   /* USER CODE BEGIN USART2_MspInit 1 */! j# K$ |8 S2 m5 ]/ a; s2 i
  58. 8 n8 O  J3 F1 r& H
  59.     SET_BIT(USART2->ICR, USART_ICR_TCCF);   /* 清除TC发送完成标志*/5 c" }+ t* Z, d3 W
  60.     SET_BIT(USART2->RQR, USART_RQR_RXFRQ);  /*־清除RXNE接收标志*/: O" X  y3 N/ S& ~- A
  61.     SET_BIT(USART2->CR1, USART_CR1_RXNEIE); /* 使能PERX接收中断*/
    + ^7 n5 U5 D2 ?7 K4 b3 F
  62. & v6 G* o' j/ _! x: |$ f' ^) }+ H
  63.   /* USER CODE END USART2_MspInit 1 */
    ; m- O& d6 ]; U: f! x  ~
  64.   }
    6 m: J" ]9 X  e
  65. }
复制代码
! d! J2 e7 Y/ w) s, j2 T2 }9 {8 G
  R; K4 k+ y  v6 y; C6 u0 N

  f3 A: C8 h) j5 P
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 手机版