使用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
- void USART1_IRQHandler(void) Q+ ]8 U+ G! `$ E
- {
b0 X0 Y, e7 a - /* USER CODE BEGIN USART1_IRQn 0 */
2 V2 f) s0 G! } - ( x( `# [* O/ B/ h- z5 [
- /* USER CODE END USART1_IRQn 0 */3 B" P" I+ X8 v
- HAL_UART_IRQHandler(&huart1);
- q m% ?3 U6 W7 W$ F% ] - /* USER CODE BEGIN USART1_IRQn 1 */: N+ ]6 x: D' M, u5 @ Z
- HAL_UART_Receive_IT(&huart1, recive_buf, 10);
* Q2 c' p) `* H- ]+ S - HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);6 s6 f% Q6 ?* _$ o; L9 k& w8 h
- /* USER CODE END USART1_IRQn 1 */
, f! R% N n5 Z# z - }
复制代码 $ ? R$ g8 _7 z+ u* Y4 R$ D
于是添加红色部分,能够进入中断,完成数据接收$ s1 U) f7 ~% S3 I8 q
/ T$ z o# V* { H: X; f- void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
9 ?; [9 m$ @. H2 l* b - {1 Z' p; e6 H! a$ e9 o3 l' z
- GPIO_InitTypeDef GPIO_InitStruct = {0};
3 r8 ^ t! e" Z( f# I - if(uartHandle->Instance==USART1); Q% Q7 l+ V* H/ [4 {4 x
- {
0 K% q o) c: D) F* C2 c; i - /* USER CODE BEGIN USART1_MspInit 0 */1 V# n* Q% ~4 V3 T. X3 }- U/ F8 c* U
# u) l2 z+ @' y0 o- /* USER CODE END USART1_MspInit 0 */; u- L$ v w9 T% R9 Q( }
- /* USART1 clock enable */6 W' z/ K$ p8 j; J
- __HAL_RCC_USART1_CLK_ENABLE();( A, h- r9 z. E6 j# W; b( l
& s! Z# @4 c' c/ d* X( ?$ E- __HAL_RCC_GPIOA_CLK_ENABLE();
. d% w& j5 n ?) { - /**USART1 GPIO Configuration , ]3 C0 G' P- C9 r3 C6 e) F
- PA9 ------> USART1_TX. X# h3 J" |" M t3 r% S; \
- PA10 ------> USART1_RX 8 V# N& T4 l* ?4 u) I
- */
* j8 F6 Y, i6 ~ - GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
. ^1 @8 [; \$ V9 c' |- ~: s5 p - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
4 s6 l9 |% d+ A) e- k - GPIO_InitStruct.Pull = GPIO_NOPULL;4 {$ I* `, e" }! f$ ~
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
: l) v2 Q+ i; [! D0 L - GPIO_InitStruct.Alternate = GPIO_AF4_USART1;8 R- R, s5 r1 e; a! z; L4 G: U* G8 i
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);2 a$ S3 e# \% U, P7 u% Q2 n
- 7 C! `1 @4 `& k7 ?$ {! F0 E9 a
- /* USART1 interrupt Init *// v- o' U( U2 s1 Y$ H- o7 X' Z9 B! G
- HAL_NVIC_SetPriority(USART1_IRQn, 3, 0);2 |8 S5 [6 y( C5 Y5 u9 r
- HAL_NVIC_EnableIRQ(USART1_IRQn);
9 B. @* O/ @1 A3 U$ D' k! ? - // SET_BIT(USART1->ICR, USART_ICR_TCCF); /* ȥԽTCע̍ΪԉҪ־ */
& T$ ~: Y1 F7 f2 a5 M6 O - // SET_BIT(USART1->RQR, USART_RQR_RXFRQ); /* ȥԽRXNEޓ˕Ҫ־ */
+ P5 V: Q1 J* L. `" s- g. @ - // SET_BIT(USART1->CR1, USART_CR1_RXNEIE); /* ʹŜPE. RXޓ˜א */0 n$ V' V7 a& B+ h' W* h
- /* USER CODE BEGIN USART1_MspInit 1 */% R) n% e% i) l8 r& K/ r" l( n" R
- . o, [) K T' h4 G2 f4 x" b; b
- /* USER CODE END USART1_MspInit 1 */
( S# L; X9 ^/ N' ? - }
% Z# {1 j( i% V, o# n9 [# X - else if(uartHandle->Instance==USART2)
" c! I2 ~0 e' @% L# p - {9 w/ Z. I2 w M$ e; U5 t; i: _
- /* USER CODE BEGIN USART2_MspInit 0 */
: y( _( g& [: G' Q0 _* J0 H - 2 d2 L$ e& ?9 D6 c
- /* USER CODE END USART2_MspInit 0 */% U6 Q/ v+ s, W! X: `( q
- /* USART2 clock enable */
6 M5 H* I2 i$ C. v - __HAL_RCC_USART2_CLK_ENABLE();6 x+ H T/ N8 m& G G! x
- ; E9 z' E* C4 V% B/ m* n6 |
- __HAL_RCC_GPIOA_CLK_ENABLE();
% }6 ~* i) c0 y! e6 T - /**USART2 GPIO Configuration # i+ W# w3 X0 A$ z2 g
- PA2 ------> USART2_TX2 m, t b9 I. ]( ]
- PA3 ------> USART2_RX ' i2 s9 v) I7 H
- */( ^' `. n- s% T4 R/ a
- GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;7 G8 m5 R7 A, B* M/ e" ^
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
9 Z$ L3 B1 Z* t& F3 |; |2 ^ - GPIO_InitStruct.Pull = GPIO_NOPULL;/ ~9 M q, I: c
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
6 h& [- E0 j3 F. z3 w4 c5 U - GPIO_InitStruct.Alternate = GPIO_AF4_USART2;
2 f% S5 M$ S9 D I7 ]% `1 F$ u: I - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
, P( ^7 [4 e3 N7 f; l4 ~
% \- Q2 h; z: d8 h6 v5 t- /* USART2 interrupt Init */; A( Y, L8 w" R) Q0 A, B
- HAL_NVIC_SetPriority(USART2_IRQn, 3, 0);, m* f% a/ l8 A0 u" }
- HAL_NVIC_EnableIRQ(USART2_IRQn);
# i7 ~: ]& z6 `- V. v5 M0 S! K - /* USER CODE BEGIN USART2_MspInit 1 *// F; ^5 y$ a; @- E% k5 E4 [/ o
6 n/ `( w- c, c" ?3 I- SET_BIT(USART2->ICR, USART_ICR_TCCF); /* 清除TC发送完成标志*/
0 X( [3 H! S: y- @9 ~ - SET_BIT(USART2->RQR, USART_RQR_RXFRQ); /*־清除RXNE接收标志*/
7 f. w- R& Z3 @' X - SET_BIT(USART2->CR1, USART_CR1_RXNEIE); /* 使能PERX接收中断*/! i. q2 F) p) N2 \7 H1 `& i. T
- 0 b n& |+ I) y4 {% U" p$ ^
- /* USER CODE END USART2_MspInit 1 */$ q/ l, g% R$ ?( F
- }& x( N0 d0 v" z- }4 g
- }
复制代码 3 I& p! x1 z( R. o/ K
6 ]" j4 V5 o- y" m) M3 `
6 B' P2 p( ~+ Q2 j/ \1 i |