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

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

[复制链接]
STMCU小助手 发布时间:2021-11-18 22:00
使用stm32 cubx 生成工程后 发现USART1_IRQHandler 中断不能进入。8 T" Y& k. r1 e. k+ ^8 k

2 A# y6 \8 _+ }7 B3 X9 n+ X6 T下面这段代码进不去:
( Z# v3 {- l( p# X# i8 T
9 J7 e, X; ^- `5 y3 t0 I
  1. void USART1_IRQHandler(void)
    - r% k' k3 V) r4 G! T; A
  2. {4 G/ j: K$ g6 S/ I% ]6 b1 W, W, n
  3.   /* USER CODE BEGIN USART1_IRQn 0 */
    + N8 c8 Y  ~  T2 {; w
  4. # b: ^& I9 {. o. B! w; d9 l4 ~  m; X
  5.   /* USER CODE END USART1_IRQn 0 */
    ' d9 H, ]0 D6 \" d+ J
  6.   HAL_UART_IRQHandler(&huart1);
    3 i0 H+ {  L2 [1 e/ T' x  x/ Z
  7.   /* USER CODE BEGIN USART1_IRQn 1 */- L1 g' x) h1 y; j) ~* q
  8.   HAL_UART_Receive_IT(&huart1, recive_buf, 10);0 S8 h/ T4 w5 P
  9.     HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);2 l! Q/ ]& x6 W) f$ F
  10.   /* USER CODE END USART1_IRQn 1 */
    . v5 Z- K8 Q$ j6 i/ ^0 z/ d0 q
  11. }
复制代码

# k. J5 ?7 ]  d( @: ?! j于是添加红色部分,能够进入中断,完成数据接收. Z( l# e  O1 L  A# h

7 i) y( n& a5 ^6 L! m9 K
  1. void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
      D& B' [. F$ W9 u8 S5 R1 ]
  2. {- f, n! R1 g6 H6 Z
  3.   GPIO_InitTypeDef GPIO_InitStruct = {0};
    , W" H. {$ R0 S
  4.   if(uartHandle->Instance==USART1)6 S+ c& s0 H& ]0 Z
  5.   {2 g2 F/ N* H' o' {/ }
  6.   /* USER CODE BEGIN USART1_MspInit 0 */
    * W( t; o% W& Q% Z0 F; e) X

  7.   g& D! `& I) x0 ^5 E, n0 D0 a
  8.   /* USER CODE END USART1_MspInit 0 */
    4 e$ [8 b$ D2 g* i
  9.     /* USART1 clock enable */6 c5 r2 h6 q. {
  10.     __HAL_RCC_USART1_CLK_ENABLE();
    - n; s- V3 a: c

  11. 8 ?  T6 Y4 `* [" e) ^* X
  12.     __HAL_RCC_GPIOA_CLK_ENABLE();8 X5 d0 A: y# c0 V  i
  13.     /**USART1 GPIO Configuration    * o# D" [. M# F( @6 q
  14.     PA9     ------> USART1_TX
    ( m) P- L8 D: K" K" b( ^& H
  15.     PA10     ------> USART1_RX
    3 ~' e! ^8 f  T+ Q0 X! ~
  16.     */  o6 x3 m' L+ p0 v9 X7 [4 y
  17.     GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
    * |6 J. c  b" k9 r
  18.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;+ [. P7 M7 M- _/ Q
  19.     GPIO_InitStruct.Pull = GPIO_NOPULL;
    / c$ x# U& q4 j# d
  20.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;* a+ G9 X& @4 e1 v
  21.     GPIO_InitStruct.Alternate = GPIO_AF4_USART1;  n! ]) a/ q# V& a
  22.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);3 S- Q) I+ j& {( x
  23. ! U" e& b- `2 \5 f4 g, {0 F6 v
  24.     /* USART1 interrupt Init */
    ; ?: y& a; v& Z! ]7 w" o' ?5 o
  25.     HAL_NVIC_SetPriority(USART1_IRQn, 3, 0);" Y' {7 h$ Z9 q: I
  26.     HAL_NVIC_EnableIRQ(USART1_IRQn);4 H* {# \/ D( }8 q6 |
  27. //            SET_BIT(USART1->ICR, USART_ICR_TCCF);   /* ȥԽTCע̍ΪԉҪ־ */5 L! [4 r' m! {
  28. //    SET_BIT(USART1->RQR, USART_RQR_RXFRQ);  /* ȥԽRXNEޓ˕Ҫ־ */2 v1 W' d, {; ^7 Z9 N/ f3 g
  29. //    SET_BIT(USART1->CR1, USART_CR1_RXNEIE); /* ʹŜPE. RXޓ˜א׏ */9 M5 A1 B9 }' x/ `
  30.   /* USER CODE BEGIN USART1_MspInit 1 */) r0 s6 O. E5 a! |7 F3 N

  31. - I  Y; {0 d/ w8 W  J" }* Y, H
  32.   /* USER CODE END USART1_MspInit 1 */9 A  L6 j1 Z1 i5 `" w1 B" L2 g; b
  33.   }
    / \2 X/ C: N3 {# R
  34.   else if(uartHandle->Instance==USART2)# A2 ~4 M6 h2 X2 p4 O$ t
  35.   {
    . n& F7 x7 f0 M6 b
  36.   /* USER CODE BEGIN USART2_MspInit 0 */
    9 z, m( F5 |9 t' m/ j& s+ ?% G: |

  37. - b) F- b% h+ ]$ w- v7 x
  38.   /* USER CODE END USART2_MspInit 0 */5 F- x& w2 X- N) |' F' P
  39.     /* USART2 clock enable */5 }" ?& T+ x  `7 G' z6 ^0 n- Z
  40.     __HAL_RCC_USART2_CLK_ENABLE();
    1 ], V2 H+ y" l: k5 c, v5 R

  41. , y+ q2 F3 T/ y" |
  42.     __HAL_RCC_GPIOA_CLK_ENABLE();4 ]- n9 ~& J# m, P7 d  v* C% W. c
  43.     /**USART2 GPIO Configuration    ; U9 S' n9 i: V  m* }2 R! o
  44.     PA2     ------> USART2_TX
    6 {% J. s& k) r4 l& N
  45.     PA3     ------> USART2_RX
    8 l: G9 p) X' _4 H7 R
  46.     */
    7 _' P6 J/ ~" M" q! ?; d1 l- }+ \
  47.     GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
    % z9 U  ^9 Y. c4 M& X2 V- ?
  48.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;( o: z% q' i% N! M/ s. u/ M' G/ Y
  49.     GPIO_InitStruct.Pull = GPIO_NOPULL;
    7 b3 F6 ?6 ?" {& a/ a  i: i- u
  50.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;5 N  ^. h) \0 d- T/ T
  51.     GPIO_InitStruct.Alternate = GPIO_AF4_USART2;
    ) \% `3 ]2 A) S/ P0 ]' V
  52.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
      i" |* _+ n) `) U5 ]; r
  53. 4 a0 e, H+ }' T9 i0 V) [- Z. b6 H8 E
  54.     /* USART2 interrupt Init */4 j& g- o: C0 j3 }% e2 X( G5 r
  55.     HAL_NVIC_SetPriority(USART2_IRQn, 3, 0);" [+ _' p: x3 j/ r8 n% `
  56.     HAL_NVIC_EnableIRQ(USART2_IRQn);
    6 t) @) T9 ?* J5 q
  57.   /* USER CODE BEGIN USART2_MspInit 1 */
    3 {; y( _% p; S" f% |! n& n
  58. * W) t4 N- \* T0 D
  59.     SET_BIT(USART2->ICR, USART_ICR_TCCF);   /* 清除TC发送完成标志*/
    4 ^1 H/ P5 C% {. J& r1 r
  60.     SET_BIT(USART2->RQR, USART_RQR_RXFRQ);  /*־清除RXNE接收标志*/
    6 ~% D3 S7 V. [' z5 l+ ~
  61.     SET_BIT(USART2->CR1, USART_CR1_RXNEIE); /* 使能PERX接收中断*/
    3 A' Y; w2 N" ?, J: Z3 r6 O

  62. , R5 ]9 i* A( J. b
  63.   /* USER CODE END USART2_MspInit 1 */2 R- C3 g8 N* N. T3 v# q# v
  64.   }
    9 ?! X6 m  z5 \/ @+ I) W2 Z
  65. }
复制代码

# {+ |" z0 m$ E2 L, v2 M
+ `  ^: W) ~& Q1 K) B5 b5 v6 Y' |  X. O
4 z9 _- y2 a* k* w
97PJUYPAGE[G~YJ6PJ0C`OX.png
收藏 评论0 发布时间:2021-11-18 22:00

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版