使用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
- void USART1_IRQHandler(void)! y b2 ~( t6 ` D! a' h% F9 `+ A2 v
- {0 H- F+ }, _! N0 Z+ e D1 g/ `3 `
- /* USER CODE BEGIN USART1_IRQn 0 */
0 A6 r: [) @4 |& q$ x2 d4 Q3 h
, ?; ^4 ^( ?3 c+ i4 Z' N, z- /* USER CODE END USART1_IRQn 0 */
% E0 \, Y. g1 K! y" _: y: J" g7 O4 j9 P9 X - HAL_UART_IRQHandler(&huart1);8 y6 Z8 b% t' b5 {1 |5 N; |* A
- /* USER CODE BEGIN USART1_IRQn 1 */
! l0 K! m# K! e0 K& K - HAL_UART_Receive_IT(&huart1, recive_buf, 10);
! W8 C. C, J6 n' I- H - HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
8 {$ D* ^# m6 q4 E& d* l - /* USER CODE END USART1_IRQn 1 */
0 {! Y U# D# P - }
复制代码 : F; E8 T4 q- e9 }
于是添加红色部分,能够进入中断,完成数据接收6 s7 d+ |" L1 b
: b f5 Z* k \; A* z- void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
2 L/ P4 z" o; P2 H6 H e - {
- P2 H; K" W0 h2 C$ A; p/ D# h - GPIO_InitTypeDef GPIO_InitStruct = {0};
9 h! F1 l5 {: h; ^4 y8 v$ V - if(uartHandle->Instance==USART1)$ u3 u0 x1 t" W# K4 _
- {
; W2 }6 I: h3 b - /* USER CODE BEGIN USART1_MspInit 0 */" B# l# w; E2 {- s
& b5 B4 W6 T$ s# y/ k' A) q I- /* USER CODE END USART1_MspInit 0 */
2 t; Z1 J" ^& } - /* USART1 clock enable */ p! j- f6 F R/ F
- __HAL_RCC_USART1_CLK_ENABLE();3 {7 y5 m9 e: r: a
H/ v% ?) _3 T9 x1 a- __HAL_RCC_GPIOA_CLK_ENABLE();
" U8 ]4 `6 P+ q* Z& ^ - /**USART1 GPIO Configuration 4 d2 b' ~3 D5 b. V" D
- PA9 ------> USART1_TX
1 ^% q0 F8 ?- _# v5 l+ P - PA10 ------> USART1_RX
3 c6 r U5 h$ K. _ D6 l% Y - */
3 _/ G6 E( p7 o9 _ - GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
& [9 L* m- L' N: x! ~ - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;& T8 g" O- H5 ?0 W3 z
- GPIO_InitStruct.Pull = GPIO_NOPULL;
+ K! T/ k) c0 {# N5 @; D1 | - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ _. a. ?# c: w! B) N4 R - GPIO_InitStruct.Alternate = GPIO_AF4_USART1;* E- n$ }+ s- X: @3 l" a; a% z6 \! g
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
# l4 J7 i% ] F/ X$ K* o& R
+ k. W& @' k. g- Y3 c; a" F- /* USART1 interrupt Init */) c- f8 \* x5 p/ r# G
- HAL_NVIC_SetPriority(USART1_IRQn, 3, 0);8 ~; s' q% O& h6 M7 l$ g" v
- HAL_NVIC_EnableIRQ(USART1_IRQn);
3 R, A; @* h8 k7 P. I+ Z - // SET_BIT(USART1->ICR, USART_ICR_TCCF); /* ȥԽTCע̍ΪԉҪ־ */
3 N& {( _7 a: b# ]1 X. p% } - // SET_BIT(USART1->RQR, USART_RQR_RXFRQ); /* ȥԽRXNEޓ˕Ҫ־ */
! r& `2 p. H- D+ ~. C$ ] - // SET_BIT(USART1->CR1, USART_CR1_RXNEIE); /* ʹŜPE. RXޓ˜א */! A- t J2 p6 `
- /* USER CODE BEGIN USART1_MspInit 1 */$ j8 `( b" _( u; J. F) V
7 ], G4 A- Z# T6 ^8 B- /* USER CODE END USART1_MspInit 1 */
9 A) P/ h! }6 k9 n B; V6 Z2 z R' j - }& ?/ d) g( z c" j
- else if(uartHandle->Instance==USART2)
' {* ]% E$ i6 e: K+ K) s - {+ o/ m0 y5 s t, B0 [' s: y% d! x9 t
- /* USER CODE BEGIN USART2_MspInit 0 */
) `. L, b- N) H5 s, Q! u
8 _. n, h/ ^, r( @- N! E- /* USER CODE END USART2_MspInit 0 */
# W0 w" h5 S! r- q b% @7 b/ J" U) P - /* USART2 clock enable */
5 P4 L3 _) w# Q0 G - __HAL_RCC_USART2_CLK_ENABLE();
6 \ F; N. Y/ E. S( S( s) K - ) Z0 h$ T1 h3 E, T6 k# h, } t
- __HAL_RCC_GPIOA_CLK_ENABLE();
% W! V$ h4 a+ J0 X9 O3 O4 I1 b - /**USART2 GPIO Configuration 4 Y5 N! W% P; e9 u" R q6 B
- PA2 ------> USART2_TX
5 |& Y! y! e |) N( M - PA3 ------> USART2_RX
6 w) s( U( K" C - */+ `6 v* N% {+ }
- GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
( r3 p9 a) k y E2 i - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;7 a [2 U6 Z) i# ]* U4 i8 d! m
- GPIO_InitStruct.Pull = GPIO_NOPULL;
& X! Q. h) }" D& u) V8 z/ a2 \ - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- s E; a" E% M9 E - GPIO_InitStruct.Alternate = GPIO_AF4_USART2;
) }2 L& i9 @* V3 ?3 f - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);5 ~( _% l; t' P+ T
1 A2 G9 _8 E7 V6 {4 @) `$ G/ {- /* USART2 interrupt Init */
$ c8 v- h) |: w3 Z% | - HAL_NVIC_SetPriority(USART2_IRQn, 3, 0);* J9 |" _% G4 q f9 J' h4 K( X2 `
- HAL_NVIC_EnableIRQ(USART2_IRQn);$ t; C3 O: O8 C6 g
- /* USER CODE BEGIN USART2_MspInit 1 */2 _+ |; x- G. n1 K
- - V6 n( U, P2 ?& x( ?0 z6 T
- SET_BIT(USART2->ICR, USART_ICR_TCCF); /* 清除TC发送完成标志*/% R; S: D5 z6 w Q/ m7 {: U a
- SET_BIT(USART2->RQR, USART_RQR_RXFRQ); /*־清除RXNE接收标志*/1 ?3 W3 i3 t" I' o
- SET_BIT(USART2->CR1, USART_CR1_RXNEIE); /* 使能PERX接收中断*/
3 e. \- q# {* T5 y% s
& U* k& L# \- W' W* t- /* USER CODE END USART2_MspInit 1 */! J% m, V: H* h
- }
) J+ [" z; Q7 P - }
复制代码
/ @, r, `1 Z# m! X7 i
- ]8 }" Q. n+ r
8 P8 v- w5 ]" \. x! i+ K |