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

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

[复制链接]
STMCU小助手 发布时间:2021-11-18 22:00
使用stm32 cubx 生成工程后 发现USART1_IRQHandler 中断不能进入。
" ~0 m$ E7 @- m; }, J6 Q0 G
$ ]- S3 Y5 w& B5 W2 V下面这段代码进不去:7 Q4 h& w8 w3 m1 w+ @( l3 b$ Z
: ~, C- d) g" B0 Z4 {# R& R9 ]1 q/ z
  1. void USART1_IRQHandler(void)! y  b2 ~( t6 `  D! a' h% F9 `+ A2 v
  2. {0 H- F+ }, _! N0 Z+ e  D1 g/ `3 `
  3.   /* USER CODE BEGIN USART1_IRQn 0 */
    0 A6 r: [) @4 |& q$ x2 d4 Q3 h

  4. , ?; ^4 ^( ?3 c+ i4 Z' N, z
  5.   /* USER CODE END USART1_IRQn 0 */
    % E0 \, Y. g1 K! y" _: y: J" g7 O4 j9 P9 X
  6.   HAL_UART_IRQHandler(&huart1);8 y6 Z8 b% t' b5 {1 |5 N; |* A
  7.   /* USER CODE BEGIN USART1_IRQn 1 */
    ! l0 K! m# K! e0 K& K
  8.   HAL_UART_Receive_IT(&huart1, recive_buf, 10);
    ! W8 C. C, J6 n' I- H
  9.     HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
    8 {$ D* ^# m6 q4 E& d* l
  10.   /* USER CODE END USART1_IRQn 1 */
    0 {! Y  U# D# P
  11. }
复制代码
: F; E8 T4 q- e9 }
于是添加红色部分,能够进入中断,完成数据接收6 s7 d+ |" L1 b

: b  f5 Z* k  \; A* z
  1. void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
    2 L/ P4 z" o; P2 H6 H  e
  2. {
    - P2 H; K" W0 h2 C$ A; p/ D# h
  3.   GPIO_InitTypeDef GPIO_InitStruct = {0};
    9 h! F1 l5 {: h; ^4 y8 v$ V
  4.   if(uartHandle->Instance==USART1)$ u3 u0 x1 t" W# K4 _
  5.   {
    ; W2 }6 I: h3 b
  6.   /* USER CODE BEGIN USART1_MspInit 0 */" B# l# w; E2 {- s

  7. & b5 B4 W6 T$ s# y/ k' A) q  I
  8.   /* USER CODE END USART1_MspInit 0 */
    2 t; Z1 J" ^& }
  9.     /* USART1 clock enable */  p! j- f6 F  R/ F
  10.     __HAL_RCC_USART1_CLK_ENABLE();3 {7 y5 m9 e: r: a

  11.   H/ v% ?) _3 T9 x1 a
  12.     __HAL_RCC_GPIOA_CLK_ENABLE();
    " U8 ]4 `6 P+ q* Z& ^
  13.     /**USART1 GPIO Configuration    4 d2 b' ~3 D5 b. V" D
  14.     PA9     ------> USART1_TX
    1 ^% q0 F8 ?- _# v5 l+ P
  15.     PA10     ------> USART1_RX
    3 c6 r  U5 h$ K. _  D6 l% Y
  16.     */
    3 _/ G6 E( p7 o9 _
  17.     GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
    & [9 L* m- L' N: x! ~
  18.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;& T8 g" O- H5 ?0 W3 z
  19.     GPIO_InitStruct.Pull = GPIO_NOPULL;
    + K! T/ k) c0 {# N5 @; D1 |
  20.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    + _. a. ?# c: w! B) N4 R
  21.     GPIO_InitStruct.Alternate = GPIO_AF4_USART1;* E- n$ }+ s- X: @3 l" a; a% z6 \! g
  22.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
    # l4 J7 i% ]  F/ X$ K* o& R

  23. + k. W& @' k. g- Y3 c; a" F
  24.     /* USART1 interrupt Init */) c- f8 \* x5 p/ r# G
  25.     HAL_NVIC_SetPriority(USART1_IRQn, 3, 0);8 ~; s' q% O& h6 M7 l$ g" v
  26.     HAL_NVIC_EnableIRQ(USART1_IRQn);
    3 R, A; @* h8 k7 P. I+ Z
  27. //            SET_BIT(USART1->ICR, USART_ICR_TCCF);   /* ȥԽTCע̍ΪԉҪ־ */
    3 N& {( _7 a: b# ]1 X. p% }
  28. //    SET_BIT(USART1->RQR, USART_RQR_RXFRQ);  /* ȥԽRXNEޓ˕Ҫ־ */
    ! r& `2 p. H- D+ ~. C$ ]
  29. //    SET_BIT(USART1->CR1, USART_CR1_RXNEIE); /* ʹŜPE. RXޓ˜א׏ */! A- t  J2 p6 `
  30.   /* USER CODE BEGIN USART1_MspInit 1 */$ j8 `( b" _( u; J. F) V

  31. 7 ], G4 A- Z# T6 ^8 B
  32.   /* USER CODE END USART1_MspInit 1 */
    9 A) P/ h! }6 k9 n  B; V6 Z2 z  R' j
  33.   }& ?/ d) g( z  c" j
  34.   else if(uartHandle->Instance==USART2)
    ' {* ]% E$ i6 e: K+ K) s
  35.   {+ o/ m0 y5 s  t, B0 [' s: y% d! x9 t
  36.   /* USER CODE BEGIN USART2_MspInit 0 */
    ) `. L, b- N) H5 s, Q! u

  37. 8 _. n, h/ ^, r( @- N! E
  38.   /* USER CODE END USART2_MspInit 0 */
    # W0 w" h5 S! r- q  b% @7 b/ J" U) P
  39.     /* USART2 clock enable */
    5 P4 L3 _) w# Q0 G
  40.     __HAL_RCC_USART2_CLK_ENABLE();
    6 \  F; N. Y/ E. S( S( s) K
  41. ) Z0 h$ T1 h3 E, T6 k# h, }  t
  42.     __HAL_RCC_GPIOA_CLK_ENABLE();
    % W! V$ h4 a+ J0 X9 O3 O4 I1 b
  43.     /**USART2 GPIO Configuration    4 Y5 N! W% P; e9 u" R  q6 B
  44.     PA2     ------> USART2_TX
    5 |& Y! y! e  |) N( M
  45.     PA3     ------> USART2_RX
    6 w) s( U( K" C
  46.     */+ `6 v* N% {+ }
  47.     GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
    ( r3 p9 a) k  y  E2 i
  48.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;7 a  [2 U6 Z) i# ]* U4 i8 d! m
  49.     GPIO_InitStruct.Pull = GPIO_NOPULL;
    & X! Q. h) }" D& u) V8 z/ a2 \
  50.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    - s  E; a" E% M9 E
  51.     GPIO_InitStruct.Alternate = GPIO_AF4_USART2;
    ) }2 L& i9 @* V3 ?3 f
  52.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);5 ~( _% l; t' P+ T

  53. 1 A2 G9 _8 E7 V6 {4 @) `$ G/ {
  54.     /* USART2 interrupt Init */
    $ c8 v- h) |: w3 Z% |
  55.     HAL_NVIC_SetPriority(USART2_IRQn, 3, 0);* J9 |" _% G4 q  f9 J' h4 K( X2 `
  56.     HAL_NVIC_EnableIRQ(USART2_IRQn);$ t; C3 O: O8 C6 g
  57.   /* USER CODE BEGIN USART2_MspInit 1 */2 _+ |; x- G. n1 K
  58. - V6 n( U, P2 ?& x( ?0 z6 T
  59.     SET_BIT(USART2->ICR, USART_ICR_TCCF);   /* 清除TC发送完成标志*/% R; S: D5 z6 w  Q/ m7 {: U  a
  60.     SET_BIT(USART2->RQR, USART_RQR_RXFRQ);  /*־清除RXNE接收标志*/1 ?3 W3 i3 t" I' o
  61.     SET_BIT(USART2->CR1, USART_CR1_RXNEIE); /* 使能PERX接收中断*/
    3 e. \- q# {* T5 y% s

  62. & U* k& L# \- W' W* t
  63.   /* USER CODE END USART2_MspInit 1 */! J% m, V: H* h
  64.   }
    ) J+ [" z; Q7 P
  65. }
复制代码

/ @, r, `1 Z# m! X7 i
- ]8 }" Q. n+ r
8 P8 v- w5 ]" \. x! i+ K
97PJUYPAGE[G~YJ6PJ0C`OX.png
收藏 评论0 发布时间:2021-11-18 22:00

举报

0个回答

所属标签

相似分享

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