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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
uint16_t USART_ReceiveData(USART_TypeDef* USARTx)0 P# z9 {% L8 b# w3 B8 G- p
{
0 Y  _  w. }. S7 G7 e) g$ C: l2 i  /* Check the parameters */; F* r, B- x/ h, {. U
  assert_param(IS_USART_ALL_PERIPH(USARTx));
: P1 Z; o8 [4 X9 A3 E
' d  _( L3 X. E- v* J# M  /* Receive Data */: m" q! v+ W; }- l
  return (uint16_t)(USARTx->DR & (uint16_t)0x01FF);! T5 S( t  N( o, A
}2 p! p% X7 m- {2 a, X3 `
0 M4 ~9 i8 w# U2 J
7 h0 l+ i& m( G* }

* c# b+ \! m9 h' s' \; Z0 d- \0 T为什么要返回16位,串口一次接8位呀。用的时候也是用8位,谁帮忙解释一下
7 z& V9 S% b, s" O* muint8_t     uart_buff[UART_BUFF_SIZE];
5 K, V, u/ m0 i  o: duart_buff[uart_p] = USART_ReceiveData(BLT_USARTx);/ U( ?, M" G( n) K- `$ U0 D

# ~4 h2 n3 W0 v, \$ k: p+ @

该用户从未签到

2#
发表于 2018-7-16 15:34 | 只看该作者
包含校验位时,有9位数据的情况,以下是从官方手册拷贝过来的:/ o" |' V) v8 q+ D
! k3 a6 V, v' w
DR[8:0]:数据值 (Data value)% M: B5 o* K3 j6 j* L- Y9 _4 X
包含了发送或接收的数据。由于它是由两个寄存器组成的,一个给发送用(TDR),一个给接收4 t% X3 ?) r3 O6 d4 F) c- \  k
用(RDR),该寄存器兼具读和写的功能。 TDR寄存器提供了内部总线和输出移位寄存器之间的
1 D- m  K! w6 E1 d1 H; |并行接口(参见图248)。 RDR寄存器提供了输入移位寄存器和内部总线之间的并行接口。/ W* \$ o0 R  {9 A& j, I- d
当使能校验位(USART_CR1中PCE位被置位)进行发送时,写到MSB的值(根据数据的长度不' X. S& e- z8 I' x# a
同, MSB是第7位或者第8位)会被后来的校验位该取代。4 q1 u8 \5 {6 G
当使能校验位进行接收时,读到的MSB位是接收到的校验位
( W9 K8 i" O& ^9 m
' R! r4 u* D/ a$ ^2 [) r1 x$ H# n你再看一下USART_CR1的M、PCE:
4 R( I1 w. n0 E: [1 `6 OM:字长 (Word length)
. Q% K6 q. c) N! M! z6 d; ^该位定义了数据字的长度,由软件对其设置和清零" n7 z; L2 Q: t6 @% T$ s
0:一个起始位, 8个数据位, n个停止位;4 o- m# h2 |% b, }
1:一个起始位, 9个数据位, n个停止位。* ?/ G  [7 U" m( j# I
注意:在数据传输过程中(发送或者接收时),不能修改这个位& o" D6 B8 s+ A" I3 W6 l  b3 q

8 l5 U1 g# i# y7 `9 [& }) }/ u  LPCE:检验控制使能 (Parity control enable)7 C9 V+ |  J! O6 _* r
用该位选择是否进行硬件校验控制(对于发送来说就是校验位的产生;对于接收来说就是校验位
" j7 Q8 s1 S7 H, J* m. |的检测)。当使能了该位,在发送数据的最高位(如果M=1,最高位就是第9位;如果M=0,最高
# V5 C! @3 C; f位就是第8位)插入校验位;对接收到的数据检查其校验位。软件对它置’1’或清’0’。一旦设置了9 L3 P& J6 I3 m0 \
该位,当前字节传输完成后,校验控制才生效。
/ ?6 X  b9 _+ _0:禁止校验控制;5 E; ^0 \9 O& ~4 O$ N
1:使能校验控制

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 16:48 , Processed in 0.234375 second(s), 24 queries , Gzip On.

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

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

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