找回密码
 注册
关于网站域名变更的通知
查看: 682|回复: 2
打印 上一主题 下一主题

stm32库函数串口接收和发送函数返回为啥是16位

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-7-14 10:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
uint16_t USART_ReceiveData(USART_TypeDef* USARTx)
( V8 J* X# a4 M{5 b0 A4 ]8 d- \# J
  /* Check the parameters */; i' h- K  ?3 \/ @
  assert_param(IS_USART_ALL_PERIPH(USARTx));' U% w2 o& g& @8 Q& Y: @& N- N7 W

; S9 J& |4 C# G4 g4 h  /* Receive Data */
5 D1 v$ J+ d- M7 P9 @8 `$ U  return (uint16_t)(USARTx->DR & (uint16_t)0x01FF);* @0 |! q! a- O5 t
}
3 w5 I" a6 U- I/ W- c  p! r0 h8 P3 H  f

( b1 ^/ f9 N) F$ c3 o3 |8 b  }2 }+ V" @# P( B! d; G' e
为什么要返回16位,串口一次接8位呀。用的时候也是用8位,谁帮忙解释一下! G; j1 N' w- @6 [9 y' k, O$ J' t. d
uint8_t     uart_buff[UART_BUFF_SIZE];
$ h# E, V: d8 s) Wuart_buff[uart_p] = USART_ReceiveData(BLT_USARTx);3 |9 ~9 K1 }# `" U. C' [4 \. e

. d2 G1 A' ~3 ^: J

该用户从未签到

2#
发表于 2018-7-16 15:34 | 只看该作者
包含校验位时,有9位数据的情况,以下是从官方手册拷贝过来的:1 k  V9 ^4 W- h/ [. y
/ o- K' y3 \; l4 Y! o7 c* \
DR[8:0]:数据值 (Data value)
+ c5 y5 B5 M2 N1 H( Y) L包含了发送或接收的数据。由于它是由两个寄存器组成的,一个给发送用(TDR),一个给接收, G3 x7 N6 P! l7 r- Y( \
用(RDR),该寄存器兼具读和写的功能。 TDR寄存器提供了内部总线和输出移位寄存器之间的* Q$ g- B* E3 s1 e& W9 c
并行接口(参见图248)。 RDR寄存器提供了输入移位寄存器和内部总线之间的并行接口。3 o  z  w6 Z) T6 A$ h
当使能校验位(USART_CR1中PCE位被置位)进行发送时,写到MSB的值(根据数据的长度不: u' o8 F; L3 @
同, MSB是第7位或者第8位)会被后来的校验位该取代。
1 k2 r- O, ?+ \' t0 {( a2 Z当使能校验位进行接收时,读到的MSB位是接收到的校验位$ y, ?2 k  `, @" e% p* |
! P; L; H8 `% n, P
你再看一下USART_CR1的M、PCE:
  m, H/ h( G2 |2 W* w/ I3 {M:字长 (Word length)
2 b0 I5 _: f2 E5 Y, g( J  ~( U9 n3 _该位定义了数据字的长度,由软件对其设置和清零
( X  Z& P+ [6 W# i0 G( R0:一个起始位, 8个数据位, n个停止位;$ \9 ~- X% F; P9 V! C* V  H
1:一个起始位, 9个数据位, n个停止位。; A/ T6 `3 v( k' b% T9 c3 _/ [5 ?. W
注意:在数据传输过程中(发送或者接收时),不能修改这个位
# p; p, c( m: u
& R9 q  a4 u7 a/ JPCE:检验控制使能 (Parity control enable): G" R$ k- j3 Z- M( Z+ x
用该位选择是否进行硬件校验控制(对于发送来说就是校验位的产生;对于接收来说就是校验位* Y9 S1 ^8 Z  W5 g
的检测)。当使能了该位,在发送数据的最高位(如果M=1,最高位就是第9位;如果M=0,最高
% R  e+ E0 R4 |+ n0 Y- l: T3 t位就是第8位)插入校验位;对接收到的数据检查其校验位。软件对它置’1’或清’0’。一旦设置了' [" K( E  `  f8 R% R$ z+ a
该位,当前字节传输完成后,校验控制才生效。
/ [1 D: _8 d4 P/ W0 _0:禁止校验控制;, D( y3 t" y6 E
1:使能校验控制

该用户从未签到

3#
发表于 2018-7-16 15:36 | 只看该作者
你可以到ST官网下载“STM32参考手册”,讲得很详细。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 12:59 , Processed in 0.156250 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表