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

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

[复制链接]
STMCU小助手 发布时间:2021-11-18 22:00
使用stm32 cubx 生成工程后 发现USART1_IRQHandler 中断不能进入。
* w; p+ `$ P( n6 u6 a6 q) k+ L% Q( \/ q# E3 c: l
下面这段代码进不去:4 K5 w2 p/ S. G* H4 B9 `2 ]
7 a9 H' j  o9 `7 d8 v
  1. void USART1_IRQHandler(void)
    4 r" A) @8 S( R- b1 C
  2. {
    ) }* Z/ _! M  `. T* d; v
  3.   /* USER CODE BEGIN USART1_IRQn 0 */
    7 _2 a, {7 ~( K7 x& _1 g7 v. y
  4. , Y+ h* W' w5 H: _
  5.   /* USER CODE END USART1_IRQn 0 */
    , y) a$ f) ~6 z
  6.   HAL_UART_IRQHandler(&huart1);" X4 |8 i' K2 J2 h/ J: t; I
  7.   /* USER CODE BEGIN USART1_IRQn 1 */
    ( p8 e2 T4 I' k; x1 s! B! x
  8.   HAL_UART_Receive_IT(&huart1, recive_buf, 10);1 A5 b# r% U9 z: M8 g
  9.     HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);: y4 k, T) _1 w
  10.   /* USER CODE END USART1_IRQn 1 */
    ; p5 H) w3 \% g2 @' F3 s
  11. }
复制代码

9 ~9 i3 [& t2 Y于是添加红色部分,能够进入中断,完成数据接收1 x* Q7 \. L1 [7 L
5 ?; z9 j9 w  K7 Q% K9 {% h
  1. void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)& o4 w' n1 v: z' G* ^" `" }3 y- {
  2. {7 J  ?) A1 t% w; Q
  3.   GPIO_InitTypeDef GPIO_InitStruct = {0};
    $ f4 K8 }  w9 l6 c9 z
  4.   if(uartHandle->Instance==USART1)
    - n, ~) o2 I  {) L
  5.   {
    ( D8 C& R  g& z6 k7 }- _
  6.   /* USER CODE BEGIN USART1_MspInit 0 */
    0 e# A# K: q8 P. e5 t- e

  7. " U8 r/ O$ R8 U4 B: P
  8.   /* USER CODE END USART1_MspInit 0 */- l" T7 x, b. d2 P
  9.     /* USART1 clock enable */" c! ]5 ?! O$ A0 @4 D
  10.     __HAL_RCC_USART1_CLK_ENABLE();2 y2 P5 o$ D3 Q9 y; H2 t% K
  11. + y# Y1 `( d% Z" \5 ?2 Q" J# j
  12.     __HAL_RCC_GPIOA_CLK_ENABLE();5 t  \, p+ d% m7 Q
  13.     /**USART1 GPIO Configuration    . o% J9 c- Q3 k/ b9 n
  14.     PA9     ------> USART1_TX* G" T4 _1 a. z1 t( [2 m
  15.     PA10     ------> USART1_RX 9 T, S6 @: L- T
  16.     */0 U5 q: r% B* y  Q/ M1 ]$ R
  17.     GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
    + X1 }8 e- r; J, X* w2 L+ y
  18.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;( j. A. p. m) o  h; J$ n; c: R2 L1 `
  19.     GPIO_InitStruct.Pull = GPIO_NOPULL;, m8 y! v' W# E$ D
  20.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;2 S& F1 @2 m6 [, A9 e
  21.     GPIO_InitStruct.Alternate = GPIO_AF4_USART1;
    + c9 C+ ]6 x' w$ K: n9 m
  22.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);3 r: y, X, B: N- j9 V2 j  x

  23. ) q  ?( m# n0 D/ b8 J4 c
  24.     /* USART1 interrupt Init */# U; F7 j- t0 d& y% _0 Y
  25.     HAL_NVIC_SetPriority(USART1_IRQn, 3, 0);
    - `# x8 A+ I% F0 [4 j
  26.     HAL_NVIC_EnableIRQ(USART1_IRQn);2 M, j; Y9 }0 x/ ~6 ~
  27. //            SET_BIT(USART1->ICR, USART_ICR_TCCF);   /* ȥԽTCע̍ΪԉҪ־ */
    % K9 t: K; e- j( G/ T
  28. //    SET_BIT(USART1->RQR, USART_RQR_RXFRQ);  /* ȥԽRXNEޓ˕Ҫ־ */8 u5 E$ s' ]% J
  29. //    SET_BIT(USART1->CR1, USART_CR1_RXNEIE); /* ʹŜPE. RXޓ˜א׏ */
    " x+ c  |, K/ e) S2 C/ K1 \
  30.   /* USER CODE BEGIN USART1_MspInit 1 */1 @1 _3 D  H0 ?6 g, t& m. i

  31. % H1 F7 O, A: j* ~
  32.   /* USER CODE END USART1_MspInit 1 */9 D9 p' `/ C' n2 z
  33.   }# w8 N; Q# m  P3 H& Q: V' [1 T
  34.   else if(uartHandle->Instance==USART2)
    8 A2 U" r' E5 V7 n3 z
  35.   {
    # V2 Z3 d' |& n) N9 S
  36.   /* USER CODE BEGIN USART2_MspInit 0 */
    ' c* j% m0 b) V

  37. 7 m0 O- G4 l' ~0 x
  38.   /* USER CODE END USART2_MspInit 0 */
    . a# N3 Z7 H) s, K# `
  39.     /* USART2 clock enable */
    ! t; R1 x8 b* e% ~. y
  40.     __HAL_RCC_USART2_CLK_ENABLE();
    ! T6 A1 H+ Y: u

  41. * N9 k4 ^$ D3 k# S
  42.     __HAL_RCC_GPIOA_CLK_ENABLE();# j3 i- d4 x2 O, a
  43.     /**USART2 GPIO Configuration    . z/ r5 N! W* s4 I% L
  44.     PA2     ------> USART2_TX
    : L8 ^7 t$ H! Z+ z- m
  45.     PA3     ------> USART2_RX
    ! l0 b- G* n) Y% a1 n
  46.     */
    : P+ @# f6 z- X4 ^8 [" ?7 I
  47.     GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;  [1 Y. g) m0 T( s
  48.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;% }4 Y5 T2 J" [- a
  49.     GPIO_InitStruct.Pull = GPIO_NOPULL;, X' [6 Q% |: `  n6 d
  50.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    9 c% b$ x9 f& d9 J
  51.     GPIO_InitStruct.Alternate = GPIO_AF4_USART2;
    & }5 @; D1 E, b! ]1 b' _
  52.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
    + O! K& l3 H# n6 l

  53. 6 v" F& s- [; S0 h
  54.     /* USART2 interrupt Init */
    # j2 W) j1 G+ H/ P9 @8 e" v7 K
  55.     HAL_NVIC_SetPriority(USART2_IRQn, 3, 0);. L* b$ T4 C' h  P+ m
  56.     HAL_NVIC_EnableIRQ(USART2_IRQn);
    . c1 E; h- n7 O! A  W4 ]
  57.   /* USER CODE BEGIN USART2_MspInit 1 *// e) i8 {6 u4 t/ r( ?
  58. - j, e! T. R/ B
  59.     SET_BIT(USART2->ICR, USART_ICR_TCCF);   /* 清除TC发送完成标志*/) d( M) }* b7 o1 x6 G8 \) x1 H4 z- H
  60.     SET_BIT(USART2->RQR, USART_RQR_RXFRQ);  /*־清除RXNE接收标志*/0 J- f$ j: r6 c
  61.     SET_BIT(USART2->CR1, USART_CR1_RXNEIE); /* 使能PERX接收中断*/* Y* Y) Z6 j  ~7 M1 I/ |

  62. 0 r! r$ B. \% t  S' k
  63.   /* USER CODE END USART2_MspInit 1 */
    + j  Q3 H& `6 G2 F
  64.   }: {2 a+ J$ C2 h! r9 g: E& T; W
  65. }
复制代码

, h- j% i  g8 |. i( X7 `6 V  T" N' w
# c: W' j/ F$ Z0 o( M9 W$ }& j& k9 `1 t  k5 q3 E; F  M0 }% t. R
97PJUYPAGE[G~YJ6PJ0C`OX.png
赞 收藏 评论0 发布时间:2021-11-18 22:00

举报

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