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

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

[复制链接]
STMCU小助手 发布时间:2021-11-18 22:00
使用stm32 cubx 生成工程后 发现USART1_IRQHandler 中断不能进入。( g2 J0 {! T+ s4 |0 V! ^

$ k5 {2 i" E7 g: v. ~下面这段代码进不去:
+ n& Z# d6 C& z
6 T6 |" i# {" \" v. K) n
  1. void USART1_IRQHandler(void)
    : ?* M- `# W$ s: `9 g
  2. {
    ) |3 ~( f( Z% J3 v% a
  3.   /* USER CODE BEGIN USART1_IRQn 0 */
    & c5 x2 b) q  z8 P7 M

  4. 8 y+ Y8 }6 p+ k, @& _6 r2 F
  5.   /* USER CODE END USART1_IRQn 0 */" L: v6 i+ @3 f7 N) m, \
  6.   HAL_UART_IRQHandler(&huart1);
    / {+ e# T" |, b; y: K: l1 i' C/ k0 U
  7.   /* USER CODE BEGIN USART1_IRQn 1 */# O2 E+ A- q) p. I4 g
  8.   HAL_UART_Receive_IT(&huart1, recive_buf, 10);# k4 k+ F& i5 H$ ?4 z" e% y+ [! u
  9.     HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);- Q5 [( H" \, o2 A3 d# ?  }4 F
  10.   /* USER CODE END USART1_IRQn 1 */
    4 x% e  K4 \* a
  11. }
复制代码
1 W) Z. o5 z  M1 {. _
于是添加红色部分,能够进入中断,完成数据接收
9 w& ~3 f/ J  K% D6 y
' l2 i$ y6 n4 ^' D+ ]$ ~
  1. void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
    ' P( R0 w- o, Q7 @6 M4 `
  2. {
    0 ]& i- M6 z# `0 z
  3.   GPIO_InitTypeDef GPIO_InitStruct = {0};
    / P1 T/ ~( B4 `' z" |5 ~; \: ^
  4.   if(uartHandle->Instance==USART1)* p0 `' m4 p9 U: ?2 C
  5.   {
    ' t. f" a0 |( z8 L+ o. M& W& R
  6.   /* USER CODE BEGIN USART1_MspInit 0 */) H; p" t) @; o+ Z. Q1 g& P7 l, G
  7. 9 @$ d: s. m" S& B9 n5 C: _
  8.   /* USER CODE END USART1_MspInit 0 */# M* X% i# g  S3 R* X- T
  9.     /* USART1 clock enable */
    1 ]/ i3 i) ^( o
  10.     __HAL_RCC_USART1_CLK_ENABLE();& W& x8 ]2 x% q5 r! t' i
  11. " D% M9 _, }! |+ }* `# |, J
  12.     __HAL_RCC_GPIOA_CLK_ENABLE();
    2 D5 A+ e( Z( H* i2 N- I0 u
  13.     /**USART1 GPIO Configuration   
    ) r  G' b* g- M, O% K% v/ i
  14.     PA9     ------> USART1_TX! W" K6 b. ^2 L6 I% A
  15.     PA10     ------> USART1_RX
    9 U1 S1 v/ s1 u, h3 {2 p7 m
  16.     */
    ( G: w% D7 G# V, ^8 n( s9 p3 J1 i
  17.     GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;3 |! @8 I6 O8 L0 x
  18.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    2 [6 c3 {8 L: c+ [$ q2 z8 V; }
  19.     GPIO_InitStruct.Pull = GPIO_NOPULL;5 m; S& J' ?3 [4 {' i
  20.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    , a- \' j+ H4 B- D
  21.     GPIO_InitStruct.Alternate = GPIO_AF4_USART1;* T) ^; w% G7 u8 b
  22.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
    1 {; f: L/ f- t9 D" c
  23. ! _' v! R: B5 Y, x) v1 a. a
  24.     /* USART1 interrupt Init */: q4 n) [5 y$ x  T4 [! A
  25.     HAL_NVIC_SetPriority(USART1_IRQn, 3, 0);
    # v) b1 u4 z+ d; s; z
  26.     HAL_NVIC_EnableIRQ(USART1_IRQn);
    $ V# p9 X) }) C( A
  27. //            SET_BIT(USART1->ICR, USART_ICR_TCCF);   /* ȥԽTCע̍ΪԉҪ־ */
    4 g5 {* }2 b: T$ X1 S
  28. //    SET_BIT(USART1->RQR, USART_RQR_RXFRQ);  /* ȥԽRXNEޓ˕Ҫ־ */
    3 `7 `- I: s+ X4 B) L
  29. //    SET_BIT(USART1->CR1, USART_CR1_RXNEIE); /* ʹŜPE. RXޓ˜א׏ */
    # K# f2 t3 R5 U1 l# C; \1 x
  30.   /* USER CODE BEGIN USART1_MspInit 1 */. U1 G0 e  z) L6 d! W0 X; r- o

  31. 3 b; H# C% L/ H4 {0 l4 X
  32.   /* USER CODE END USART1_MspInit 1 */
    1 i$ B7 Z  _+ ^' u+ Z: f
  33.   }6 J' |, w1 W6 S/ E/ Y) x* S
  34.   else if(uartHandle->Instance==USART2)
    - l8 l6 T9 z! r- k0 y1 R' V
  35.   {+ w3 g/ {/ ], X; n
  36.   /* USER CODE BEGIN USART2_MspInit 0 */, ?* [9 r+ l; i& Y9 ]+ }  {! P2 @
  37. 8 Y$ d! x+ r7 V1 q0 u" C/ H
  38.   /* USER CODE END USART2_MspInit 0 */
    : o/ p# b: c- R9 d
  39.     /* USART2 clock enable */) W9 K) k. P" J# s( E# V3 q
  40.     __HAL_RCC_USART2_CLK_ENABLE();
    $ d6 Y6 o  e' e. g

  41. % t" T% @( \. t& Z
  42.     __HAL_RCC_GPIOA_CLK_ENABLE();9 P' B& N% J" ~* {$ L
  43.     /**USART2 GPIO Configuration    % S1 p6 @) v# z# \
  44.     PA2     ------> USART2_TX
    ) T  O" s( Z$ |; E. h
  45.     PA3     ------> USART2_RX
    / c5 J6 N% n: `, w+ g
  46.     */) P; l* M4 a) ^8 Y1 h7 \/ H+ u
  47.     GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
    2 T! i9 e# j; X- S; u2 S0 `1 Q; T, b
  48.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    3 n$ x+ G7 S0 [$ [
  49.     GPIO_InitStruct.Pull = GPIO_NOPULL;
    8 h, G' Y* B, ^4 g% Z% @5 f
  50.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;0 F( U7 w9 E0 I+ o2 s/ W% s
  51.     GPIO_InitStruct.Alternate = GPIO_AF4_USART2;/ q1 |, y' _# W3 g- D/ J  I
  52.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);2 G# X# g6 x: I+ I
  53. 9 S* ^+ ]9 Z# M! u
  54.     /* USART2 interrupt Init */
    ) [( p+ V( y* ^8 f, ~
  55.     HAL_NVIC_SetPriority(USART2_IRQn, 3, 0);
    - t. a8 z9 W" V% ~* j
  56.     HAL_NVIC_EnableIRQ(USART2_IRQn);8 {. @! R  f7 W. d3 K
  57.   /* USER CODE BEGIN USART2_MspInit 1 */" W+ a$ U0 O$ t0 ?: |0 m3 o

  58. + Z/ d; E4 e- J8 E3 G
  59.     SET_BIT(USART2->ICR, USART_ICR_TCCF);   /* 清除TC发送完成标志*/- W, l0 m  v9 t- t/ g+ G% f
  60.     SET_BIT(USART2->RQR, USART_RQR_RXFRQ);  /*־清除RXNE接收标志*/7 c) J& u1 ~+ K5 ~0 i6 K% Y
  61.     SET_BIT(USART2->CR1, USART_CR1_RXNEIE); /* 使能PERX接收中断*/
    3 w, z7 T. x: s9 |/ t; O1 `* S5 {

  62. 6 _; a, ^3 [: s/ l4 o& [
  63.   /* USER CODE END USART2_MspInit 1 */1 W+ R# C0 V% a' ]4 L0 m) n
  64.   }
      Y- r3 N& {. e( M: ?' T8 f
  65. }
复制代码

8 J, A$ c6 G) o! w3 j3 y$ M
6 |' f1 M( \: L4 F7 q: D6 U, K( w: u  a
97PJUYPAGE[G~YJ6PJ0C`OX.png
收藏 评论0 发布时间:2021-11-18 22:00

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版