使用stm32 cubx 生成工程后 发现USART1_IRQHandler 中断不能进入。
7 r7 v# O& K6 ~5 M/ F2 r! Z l& U+ t* ~
下面这段代码进不去:2 }" K3 s3 K( t* }+ D. \& b1 ^ E
5 C, e/ n) G+ p& q8 p5 h
- void USART1_IRQHandler(void)3 _+ s/ Z3 ~) e3 Q3 T2 O6 |2 @
- {
& X, |; I; X! x2 G8 \! } - /* USER CODE BEGIN USART1_IRQn 0 */
& R8 j( z9 b% I c! v+ A s+ ]$ l
. A z5 X5 X2 T& r% R$ P) B- /* USER CODE END USART1_IRQn 0 */
; O* _8 n* y$ K - HAL_UART_IRQHandler(&huart1);; p: l( w5 A5 @: c
- /* USER CODE BEGIN USART1_IRQn 1 */4 G) Y, Z1 o. f) ^! ]) Y- m' F
- HAL_UART_Receive_IT(&huart1, recive_buf, 10);, e. z/ A2 ~/ W. Y3 A! n
- HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
4 \8 Y4 z2 m: t2 D4 S( D% A - /* USER CODE END USART1_IRQn 1 */- ~/ e8 V0 ~. g0 v! L
- }
复制代码
`* N. ?$ y* b, V( J1 @; P9 D+ e于是添加红色部分,能够进入中断,完成数据接收
T( x6 X N; S! n/ |9 p6 C f. P1 ^3 E
- void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)) R" T y s- J9 v- ^; G9 b8 V
- {
* d; k) `+ `' x% {% q) r8 ] - GPIO_InitTypeDef GPIO_InitStruct = {0};
1 j, I2 a$ c" ^$ E# r' K6 Y9 T - if(uartHandle->Instance==USART1)) T1 {5 I0 O6 @# N. A* o6 l
- {
8 I, n! r* T7 O, Q- n1 n$ ] - /* USER CODE BEGIN USART1_MspInit 0 */2 u- X! d: t6 \3 ~
8 i) g2 J8 [! b" t! E" V) V- /* USER CODE END USART1_MspInit 0 */
k: J- |' B0 m' E8 q7 I3 A - /* USART1 clock enable */
; z' S2 y8 N: \) U" l - __HAL_RCC_USART1_CLK_ENABLE();9 v5 }2 Q1 S9 }
, A3 |+ p6 V5 \$ Q+ X5 @- __HAL_RCC_GPIOA_CLK_ENABLE();
; Q) s( ~; u0 `5 t" u6 ?. N5 d2 @, f - /**USART1 GPIO Configuration 7 P% M; l" n7 _' f' r( q1 ~6 N
- PA9 ------> USART1_TX' T- W9 s" E, F( T% ^- n
- PA10 ------> USART1_RX 2 V. Z3 O! Z1 v7 o6 t6 t
- */7 s& n' c; v& t$ }8 L- o% w
- GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;( g' Z6 ^- {9 H3 S* u
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;5 T0 f3 n2 S; t
- GPIO_InitStruct.Pull = GPIO_NOPULL;4 _; H* w2 G( U e, D: w% T
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
8 J$ z7 {4 F6 O - GPIO_InitStruct.Alternate = GPIO_AF4_USART1;
% u! R2 ]* y1 T O - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);5 d) b% k9 m" f6 }& F
* @& T$ T' J! L$ _8 O. D2 P- /* USART1 interrupt Init */
}* ^( @ H" F$ w5 D3 Q - HAL_NVIC_SetPriority(USART1_IRQn, 3, 0);
4 k$ c% L3 ~0 E- V9 W - HAL_NVIC_EnableIRQ(USART1_IRQn);1 `, p: N0 ?9 A! b! \
- // SET_BIT(USART1->ICR, USART_ICR_TCCF); /* ȥԽTCע̍ΪԉҪ־ */& c6 j5 I5 m3 k% e9 L8 l
- // SET_BIT(USART1->RQR, USART_RQR_RXFRQ); /* ȥԽRXNEޓ˕Ҫ־ */
- D1 [) ~. e$ C% A; D - // SET_BIT(USART1->CR1, USART_CR1_RXNEIE); /* ʹŜPE. RXޓ˜א */ j! t) R u! L: i
- /* USER CODE BEGIN USART1_MspInit 1 */
0 }, C' b" @# z. h" M( Z
4 t3 G$ U8 ?1 v: ?- /* USER CODE END USART1_MspInit 1 */, q; n0 Q8 }/ Q& v2 m% }
- }
5 N4 O+ f1 p6 { G - else if(uartHandle->Instance==USART2)
# b! n# B; W* p: q& A - {8 y' R* \4 d( F" c2 G" Z
- /* USER CODE BEGIN USART2_MspInit 0 */
2 ~1 \0 n4 |6 t8 |8 c
$ q* r% O' s7 o- m& n$ B- /* USER CODE END USART2_MspInit 0 */" r* {/ @ X* b, g
- /* USART2 clock enable */
2 Y) _) S7 f" ~ - __HAL_RCC_USART2_CLK_ENABLE();: o* B# ?, J# a- u
- / g9 d/ T/ k( ]7 f6 [8 r
- __HAL_RCC_GPIOA_CLK_ENABLE();
3 I" ~: y. X, l6 `8 M$ {: W' w# G - /**USART2 GPIO Configuration + i) A# d* n3 i% F8 U+ {
- PA2 ------> USART2_TX
- \. G0 `; p- ]) L. M7 D - PA3 ------> USART2_RX
5 b ?$ r, O0 Y - */& A: q. ~) Q# X8 B1 G
- GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;' m. S0 Q0 G8 n3 Q+ i& X" O2 x; i
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
; R0 g4 T4 U" L. b+ O. z' G - GPIO_InitStruct.Pull = GPIO_NOPULL;
. i! M" ?, `1 y4 m - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;1 l, ~! `$ j1 w2 |$ ~
- GPIO_InitStruct.Alternate = GPIO_AF4_USART2;
& t' o- W. J, L. N5 S+ f/ S- v: [/ y - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
1 { I$ `- U, ~) i" N, d - 4 }2 u, t/ I' I* p
- /* USART2 interrupt Init */
% A) u* m: j8 k" Z& u' ^+ M - HAL_NVIC_SetPriority(USART2_IRQn, 3, 0);6 \8 I5 f7 g8 S* Y6 H& K, }
- HAL_NVIC_EnableIRQ(USART2_IRQn);2 `5 Y) q# m- K' E. R7 X$ R3 P; }
- /* USER CODE BEGIN USART2_MspInit 1 */
+ C3 q2 z% I' A$ r
4 L1 k% B; |6 U A/ P- SET_BIT(USART2->ICR, USART_ICR_TCCF); /* 清除TC发送完成标志*/
% K: t9 b, J7 q7 y. Y - SET_BIT(USART2->RQR, USART_RQR_RXFRQ); /*־清除RXNE接收标志*/9 N" E8 s A3 |. A' L2 m a
- SET_BIT(USART2->CR1, USART_CR1_RXNEIE); /* 使能PERX接收中断*/
4 e, s" P+ f' M$ x$ P( j+ j - " P9 D( a' \/ N0 H/ n! G
- /* USER CODE END USART2_MspInit 1 */. M; E, V4 e4 R9 v ^1 f0 |
- }5 L+ F8 k4 g% G
- }
复制代码 ) j3 j# D% m+ @
: q; Y- V+ |* B9 ]/ N$ L2 \0 c' {, D t9 i, @2 {
|