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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
uint16_t USART_ReceiveData(USART_TypeDef* USARTx)9 Q2 ?( f" K) ?0 @
{
! k7 R7 B& y0 e& T* l  /* Check the parameters */0 Y( |. s$ w: `5 Y9 Z3 o) h
  assert_param(IS_USART_ALL_PERIPH(USARTx));
/ ?  M7 o/ ^  Z* w/ |" M8 u4 D8 n* s: c  X3 O
  /* Receive Data */, r* K# @: U, v( M& y" m" ?# r
  return (uint16_t)(USARTx->DR & (uint16_t)0x01FF);
5 t3 l& H; }. }: e, P2 D4 d) j8 X}
; n. M) h% \6 C8 @% b$ _
" f$ p" ~, W6 E
7 s) N( `3 h) J3 r5 w! g  D- ^$ e9 d! }- F
为什么要返回16位,串口一次接8位呀。用的时候也是用8位,谁帮忙解释一下: K$ D$ n! Q; q9 L& }  S
uint8_t     uart_buff[UART_BUFF_SIZE];
3 n+ L8 H8 a% w. I. p7 ?2 suart_buff[uart_p] = USART_ReceiveData(BLT_USARTx);  {# H& p) K& N! ?) S7 N0 _2 n

0 S1 A* _4 a4 f9 O  f$ j

该用户从未签到

2#
发表于 2018-7-16 15:34 | 只看该作者
包含校验位时,有9位数据的情况,以下是从官方手册拷贝过来的:* N0 ~- y& V/ L, w
# Q( \) M! _8 w4 B( O, n
DR[8:0]:数据值 (Data value)2 a1 T  h& P# d' z5 Q9 \% y  r4 ]. k
包含了发送或接收的数据。由于它是由两个寄存器组成的,一个给发送用(TDR),一个给接收
# j' M/ c# _' ?4 M, |用(RDR),该寄存器兼具读和写的功能。 TDR寄存器提供了内部总线和输出移位寄存器之间的4 O- }* J3 Q! E  R6 }. g
并行接口(参见图248)。 RDR寄存器提供了输入移位寄存器和内部总线之间的并行接口。
+ D/ q" _- [' X) ^' |当使能校验位(USART_CR1中PCE位被置位)进行发送时,写到MSB的值(根据数据的长度不% U2 r4 M5 @4 m: a3 a6 l; c# o# f  a
同, MSB是第7位或者第8位)会被后来的校验位该取代。. r! N9 P) \6 {% l$ F
当使能校验位进行接收时,读到的MSB位是接收到的校验位( l* i1 t( X6 M  q# M
, k; t2 [1 a6 i" M) Z
你再看一下USART_CR1的M、PCE:- \' z; {& k$ ]0 i
M:字长 (Word length)$ m3 j; ~% A- G
该位定义了数据字的长度,由软件对其设置和清零
% d- L( Y5 f8 x: G, U& z$ Z0:一个起始位, 8个数据位, n个停止位;
/ J# B$ t$ E# t9 m* N3 a& L+ ?1:一个起始位, 9个数据位, n个停止位。: n& u: a7 s9 `; o# F
注意:在数据传输过程中(发送或者接收时),不能修改这个位3 j& C; L1 d8 Y
" E! ^' I1 n1 ?3 i
PCE:检验控制使能 (Parity control enable)
% l7 ]" \! ^$ l' T用该位选择是否进行硬件校验控制(对于发送来说就是校验位的产生;对于接收来说就是校验位
" A* C+ j( |& f3 _' i的检测)。当使能了该位,在发送数据的最高位(如果M=1,最高位就是第9位;如果M=0,最高
' B/ L& @) B& {! V; x位就是第8位)插入校验位;对接收到的数据检查其校验位。软件对它置’1’或清’0’。一旦设置了& x4 e% |* A  |
该位,当前字节传输完成后,校验控制才生效。+ k# ]  W6 ^- L$ P5 S2 G& \
0:禁止校验控制;
2 ~- B9 q/ }6 b# e% w7 ?1:使能校验控制

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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