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

stm32f4串口3提示NE错误

[复制链接]
stary666 发布时间:2018-12-6 16:23
今天在调试时,遇到个棘手的问题,分享解决方法给大家,
! O! i1 |# E3 v" I我使用HAL库,一个让人抓狂的烂库啊,想骂娘,一直骂都不解气的烂库。" E9 V& [) Z3 w* Z% z9 c! m" ~
串口+DMA,官网407的DMA例程移植过来的,不需要过多说明,上代码即可+ w( ^# w7 i) s' L' T
void HAL_UART_MspInit(UART_HandleTypeDef* huart)
1 `  m+ i" f1 S5 p7 I$ B) O{6 q# M7 _! O0 |' w0 ~; @
  GPIO_InitTypeDef GPIO_InitStruct;
. q, h+ |4 z1 E( K0 \. t  
2 r) E! B" n8 v- L% J  if(huart->Instance==USART3)7 _9 N* x0 {8 w/ D7 S( ]+ h( M
  {. H9 R( a- o4 ?  r& J% T
  /* USER CODE BEGIN USART3_MspInit 0 */; M& R4 [* x% {2 Z0 D# B# y5 H
* ^6 B8 F3 H8 ]2 G5 q: i% Q

* b) S& }1 V$ L& |3 E  /* USER CODE END USART3_MspInit 0 */4 V3 B4 a9 b% N' l
    /* Peripheral clock enable */
3 R4 u2 H8 Y) B. U- E& V$ ^) W$ i    __HAL_RCC_USART3_CLK_ENABLE();9 M+ R' }3 ?4 y% l4 L$ q
  9 u  I3 o: ?: S$ U4 Y
    /**USART3 GPIO Configuration   
0 C$ ^) i, \) P) l5 ?& x2 x7 Z    PB10     ------> USART3_TX
" d% v0 M; J$ C0 o) o6 A) ^    PB11     ------> USART3_RX
0 R! `- k- b# k+ e, d    */. w$ [, _6 J! ]; u) J3 ?
    GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11;
& e& {0 L+ A5 ^# m7 B+ M* B% k) U; l    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;$ B+ S0 ^" Q+ {. e* W
    GPIO_InitStruct.Pull = GPIO_PULLUP;6 `, ?  i; V6 \) z- ~7 T1 ?
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
6 Z" ~* v( ]2 F; u" Z/ P    GPIO_InitStruct.Alternate = GPIO_AF7_USART3;+ C3 t3 `+ e( u
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);' G) F! _  ]* g. [9 M% p5 t
* |& |; E  x( o+ u$ Q

; k. m/ U! i7 j6 T' k    /*##-3- Configure the DMA streams ##########################################*/
0 T$ z) q8 m) |( z( R  /* Configure the DMA handler for Transmission process */
+ L1 H0 S' e4 a/ B5 |% i1 z  hdma_usart3_tx.Instance                 = USARTx_TX_DMA_STREAM;$ g- ~9 r8 H/ q# W% \- I6 T
    O( ]# ]  }( a1 }0 t) ]
  hdma_usart3_tx.Init.Channel             = USARTx_TX_DMA_CHANNEL;. x& B% X) w$ d2 S( |; S" ~/ J6 s
  hdma_usart3_tx.Init.Direction           = DMA_MEMORY_TO_PERIPH;  f) i: E; Z6 ?& F. P3 Q
  hdma_usart3_tx.Init.PeriphInc           = DMA_PINC_DISABLE;
. R4 Y5 J$ y  ], }0 ^( H! c( E  hdma_usart3_tx.Init.MemInc              = DMA_MINC_ENABLE;
* i5 g3 P4 [  a0 B# X  hdma_usart3_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;# w4 e" U! {; c! s* m. o  P
  hdma_usart3_tx.Init.MemDataAlignment    = DMA_MDATAALIGN_BYTE;
0 H2 Z2 Q9 {1 |: a  hdma_usart3_tx.Init.Mode                = DMA_NORMAL;% ?6 Y6 h, }& j, e
  hdma_usart3_tx.Init.Priority            = DMA_PRIORITY_LOW;  p, V% ~& d0 V9 t. h0 |  N
  hdma_usart3_tx.Init.FIFOMode            = DMA_FIFOMODE_DISABLE;
2 t+ w* H5 E$ V: ?  hdma_usart3_tx.Init.FIFOThreshold       = DMA_FIFO_THRESHOLD_FULL;
* ]. ^/ \- U! O1 A! ~/ g$ o  hdma_usart3_tx.Init.MemBurst            = DMA_MBURST_INC4;0 B+ f, \, i; R# J3 r
  hdma_usart3_tx.Init.PeriphBurst         = DMA_PBURST_INC4;' [. G" R0 p% c) w' i& f" N) b  K
  
9 D% E( D( D  |' ?0 Y( x. |1 M  HAL_DMA_Init(&hdma_usart3_tx);   + a0 D+ z* x% g/ L5 R5 f- W( }
  
, d8 T# [. y2 K6 X9 N& n5 i  Y$ D9 ^  /* Associate the initialized DMA handle to the UART handle */. Y" j1 B  W. r" o9 M5 Z. \& N& n3 P
  __HAL_LINKDMA(huart, hdmatx, hdma_usart3_tx);* A# n: p: I) r0 d. g, J5 {: ]
  
4 E- Q( B# e( D% w. k  /* Associate the initialized DMA handle to the the UART handle */$ T3 Y: H0 B. H+ {2 f$ i, ~# C
  __HAL_LINKDMA(huart, hdmarx, hdma_usart3_rx);
- C2 o+ y+ N+ s: ~+ I6 N5 z) K    : B# t8 u8 h& d6 D5 b, [( Y
  /*##-4- Configure the NVIC for DMA #########################################*/
, A  l3 B* x) l0 j  /* NVIC configuration for DMA transfer complete interrupt (USARTx_TX) */
) \' ]. v, k1 b- x+ k5 \. X  HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 1);
' L  `& d; H0 d& f: f" I  HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);4 g7 a: y% f3 }) S
$ L" s. X8 [  X# p

  t  J# g+ b% \8 C2 a" Y  /* USER CODE BEGIN USART3_MspInit 1 */3 k/ J- h% G2 b" U) u
    HAL_NVIC_SetPriority(USART3_IRQn, 0, 0);2 t( m9 o6 z8 S  ^7 ]- g
    HAL_NVIC_EnableIRQ(USART3_IRQn);$ M& X  O: p9 B" Y6 ?
    , P! q" S4 j7 c" Z
  /* USER CODE END USART3_MspInit 1 */
2 W! n7 a; r  [3 f4 ?  }
! x3 M( A9 {' P- e: F}0 ]! ], {  b7 e1 z5 o
/* USART3 init function */
4 B0 M- k$ V3 J7 Q1 o  Vstatic void MX_USART3_UART_Init(void)3 T+ A6 E; ^; Q% f0 |6 j
{
0 x7 p7 e: m* z0 J/ j; B' K% r, E: d
" K% g4 b4 i8 T. g. p* n. Y0 X
  huart3.Instance = USART3;
( y7 F. |: k# X% P6 F4 k  huart3.Init.BaudRate = 115200*2;
0 M7 [$ ]- c7 o) d- H  huart3.Init.WordLength = UART_WORDLENGTH_8B;
0 x( B5 p9 S5 ~4 m+ A# @  huart3.Init.StopBits = UART_STOPBITS_1;0 T7 T; A7 k# Z5 n, H# V
  huart3.Init.Parity = UART_PARITY_NONE;
5 A" y7 P2 |+ ?- ~6 {  huart3.Init.Mode = UART_MODE_TX_RX;0 A& N, ^* W8 t
  huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;- R, w1 A3 E( d; b# I2 P
  huart3.Init.OverSampling = UART_OVERSAMPLING_16;( g6 O) C+ s8 {; [4 `" i
  if (HAL_UART_Init(&huart3) != HAL_OK)
5 r7 Q' a1 \, Y6 H' I5 D  {, X7 d6 e' A, I2 P5 c. h
    _Error_Handler(__FILE__, __LINE__);
7 G5 Z/ j2 j! k* v: Y: |  }
8 G: w2 t# g9 M% N! m) @! d# Q; X- F
6 ~* K) e1 c5 i1 D
}/ ?$ s7 L3 X+ S/ R% J3 s

: E# C" n/ E( x2 V, G

; I3 U0 F3 K! \" M9 Z/ N以上是初始化代码# m4 _* u$ T: Y
使用的DMA发送,中断接收,
, M' G: ~* o% |) Y/ i, J. N: p* @8 S串口是和4G模块通讯,具体哪个厂家的就不说了,只能说很low。/ F9 o) e& q5 W* S* B
在配置模块时,出现了如图所示,
& S8 e3 u$ B2 }/ X) i 捕获.JPG 8 I$ \& O" K' q5 q/ z) C

4 j/ E! j" R/ Q6 a* r再次上电没有错误了,就接上f4的串口,开始调试,顿时来个下马威啊,一直在反复进入串口中断,单步跟踪,先是 Framing error,后来一直是 Noise detected flag,Overrun error这2个错误,相当于进入死循环了,急得我直骂娘啊,百度一下,基本没有收获,能知道是硬件问题,就上了示波器,果然是波形出问题了,f4的串口是使用串口助手调试了N遍的,肯定没问题,只能把4G模块的波特率降低一个档次,因为之前使用115200(出厂默认值)一直没出问题,果然是没问题,又再次把波特率升到230400,直到在调试软件上没有任何错误,反复测试都OK,才放心大胆的使用,果然,一切正常了,权当发个水贴,给大家分享一下经验了。- x! D) ^( u4 v, X. B! Y) h+ g8 D
% h8 T7 h  v8 w9 m! M7 y

/ V- G  |) Y+ ?0 B% J2 D% Q. @1 f3 `3 p3 r$ U1 x! ]2 T
收藏 评论4 发布时间:2018-12-6 16:23

举报

4个回答
zero99 回答时间:2018-12-6 17:23:50
谢谢分享啊
stary666 回答时间:2018-12-7 00:16:49
客气了
五哥1 回答时间:2018-12-7 02:27:08
这个库各种出错,唉,不能提,怎么办,只有在错误中前行,收获也很大。
stary666 回答时间:2018-12-8 16:13:24
是啊,库里问题太多

所属标签

相似分享

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