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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
uint16_t USART_ReceiveData(USART_TypeDef* USARTx)! q2 I1 D! z/ q7 x  i. g
{" L$ n/ l* [" b; B7 T
  /* Check the parameters */0 l9 n9 X: [3 R  P9 Z- i
  assert_param(IS_USART_ALL_PERIPH(USARTx));6 D1 Y, i2 [6 K4 a( ?2 m% c

& V" p3 k: j' f1 X9 z& [  t  /* Receive Data */9 X) [2 A% |6 v. Q2 v) U1 @0 N3 B
  return (uint16_t)(USARTx->DR & (uint16_t)0x01FF);
/ M& T) @/ _5 z( t& l}7 I  @: ]% i  M% b

9 M# j! A3 U6 o  O- M9 j* A/ `$ V" Q1 m) f3 j
( f2 H: M" p: u, ~- |% P2 X
为什么要返回16位,串口一次接8位呀。用的时候也是用8位,谁帮忙解释一下
% O# U3 P/ H: d% |9 w5 E4 tuint8_t     uart_buff[UART_BUFF_SIZE];
& f3 y! K6 n$ h; L& Juart_buff[uart_p] = USART_ReceiveData(BLT_USARTx);
) P5 B, x, a$ h* R
+ g4 V* N, t2 d. W6 P

该用户从未签到

2#
发表于 2018-7-16 15:34 | 只看该作者
包含校验位时,有9位数据的情况,以下是从官方手册拷贝过来的:
1 V9 o' L6 M" F+ z' Z9 i& v( l, f% D% {/ W' p2 Y
DR[8:0]:数据值 (Data value)
5 i7 r2 g9 P1 l( h4 Y( P$ f包含了发送或接收的数据。由于它是由两个寄存器组成的,一个给发送用(TDR),一个给接收$ \4 d6 k4 b" V* D6 F; t  K6 W
用(RDR),该寄存器兼具读和写的功能。 TDR寄存器提供了内部总线和输出移位寄存器之间的- z  I$ v& R8 ~  q- J8 T! n) G, K- ~
并行接口(参见图248)。 RDR寄存器提供了输入移位寄存器和内部总线之间的并行接口。$ e+ d& {2 o1 A3 I' J3 K
当使能校验位(USART_CR1中PCE位被置位)进行发送时,写到MSB的值(根据数据的长度不, ~) S/ E8 y5 {8 d, ?- o
同, MSB是第7位或者第8位)会被后来的校验位该取代。
& g  y# y+ ^7 p  i  D* O/ I当使能校验位进行接收时,读到的MSB位是接收到的校验位9 `: x9 ^/ U1 w- C& p
, ~- B  t: p8 \
你再看一下USART_CR1的M、PCE:( n( n$ a4 O1 ?. k( {% X
M:字长 (Word length)
+ T& a7 I; m1 V' L9 U该位定义了数据字的长度,由软件对其设置和清零
4 P& ~/ m2 i# t8 y8 j% f: C6 f0:一个起始位, 8个数据位, n个停止位;
$ k# P2 g2 i" q2 k' x( r/ ?9 R& ?1:一个起始位, 9个数据位, n个停止位。& B- G. n1 b$ M+ m8 d( ]
注意:在数据传输过程中(发送或者接收时),不能修改这个位
; P7 J" W& {( y
& i. `) F4 c4 E( F; MPCE:检验控制使能 (Parity control enable)% H9 D& E" D) e
用该位选择是否进行硬件校验控制(对于发送来说就是校验位的产生;对于接收来说就是校验位' s9 G5 `- R, Q+ [/ s% |5 V
的检测)。当使能了该位,在发送数据的最高位(如果M=1,最高位就是第9位;如果M=0,最高
. D; A- k7 B- K/ S位就是第8位)插入校验位;对接收到的数据检查其校验位。软件对它置’1’或清’0’。一旦设置了
( t  `4 \$ k8 H  H该位,当前字节传输完成后,校验控制才生效。
4 M4 b. E* H  h' f1 k: z. {5 B4 X0:禁止校验控制;% j# g1 l2 E9 @- @& m' l
1:使能校验控制

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 20:42 , Processed in 0.171875 second(s), 23 queries , Gzip On.

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

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

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