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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
uint16_t USART_ReceiveData(USART_TypeDef* USARTx)
" t7 j$ E2 N5 w0 |! r{3 b. Q4 Q0 I) x
  /* Check the parameters */
  P% a: S7 N% B4 R) e  assert_param(IS_USART_ALL_PERIPH(USARTx));
0 F6 h3 g% i6 t  S8 O1 T0 c6 E: P; D4 I1 V% ?1 ^
  /* Receive Data */
( u  z! z( f1 z6 C  return (uint16_t)(USARTx->DR & (uint16_t)0x01FF);$ L( [% c- B5 p0 G* ?2 u1 V& ?
}: w) Y8 _$ Y% \8 S. H/ y% T0 F9 r
& D4 T2 |! F8 m/ c# _7 a2 J

8 F0 T1 H0 U! x9 P& W$ ~
5 F1 R  G5 N- @* Z9 ~9 e9 k为什么要返回16位,串口一次接8位呀。用的时候也是用8位,谁帮忙解释一下
1 _# o* d& Y, ^. I! f* _$ _uint8_t     uart_buff[UART_BUFF_SIZE];, n" o) G. [, b% M
uart_buff[uart_p] = USART_ReceiveData(BLT_USARTx);5 k$ A0 N4 ^3 `8 @/ \! w

6 ?/ t. E( P" T0 R$ Z/ `! k% j

该用户从未签到

2#
发表于 2018-7-16 15:34 | 只看该作者
包含校验位时,有9位数据的情况,以下是从官方手册拷贝过来的:
6 p# R! ]% [9 ]  l+ w
& p: y9 Y3 ]* w% p: V2 \5 QDR[8:0]:数据值 (Data value)
, e. i  K+ w9 u包含了发送或接收的数据。由于它是由两个寄存器组成的,一个给发送用(TDR),一个给接收
3 a/ ?' P$ `( h- R6 Y用(RDR),该寄存器兼具读和写的功能。 TDR寄存器提供了内部总线和输出移位寄存器之间的
  _# q9 `6 l1 s' k# ^- \8 Q; Q; _并行接口(参见图248)。 RDR寄存器提供了输入移位寄存器和内部总线之间的并行接口。
1 o+ {0 v$ A$ ~当使能校验位(USART_CR1中PCE位被置位)进行发送时,写到MSB的值(根据数据的长度不: v* C5 _1 A/ _" p2 M5 E4 k4 }1 w
同, MSB是第7位或者第8位)会被后来的校验位该取代。
9 U1 U: Y6 |1 A$ Z( u当使能校验位进行接收时,读到的MSB位是接收到的校验位
& M" T2 O1 n9 |8 _9 A1 @6 r; P: x
你再看一下USART_CR1的M、PCE:
- O# V* g+ @% {4 E) _M:字长 (Word length)
( \: y% @" B; I9 M该位定义了数据字的长度,由软件对其设置和清零
0 f% N! q+ v! ]0:一个起始位, 8个数据位, n个停止位;% `9 M2 {0 E2 }, X9 _+ L' i7 ~
1:一个起始位, 9个数据位, n个停止位。
' V4 h' M3 A1 q, `! q注意:在数据传输过程中(发送或者接收时),不能修改这个位
" q7 m. j0 r( T8 c5 X" k7 b3 W3 O2 Y; _( g
PCE:检验控制使能 (Parity control enable)
; D5 k3 s& j8 @8 @用该位选择是否进行硬件校验控制(对于发送来说就是校验位的产生;对于接收来说就是校验位, n) @; ~3 Q- Z# E3 ^0 o
的检测)。当使能了该位,在发送数据的最高位(如果M=1,最高位就是第9位;如果M=0,最高$ q9 o" n0 X, L
位就是第8位)插入校验位;对接收到的数据检查其校验位。软件对它置’1’或清’0’。一旦设置了
+ u% W) `8 ]& C. S该位,当前字节传输完成后,校验控制才生效。
5 h3 ^. {5 [+ m5 r. M: |& K9 }* _+ {0:禁止校验控制;
. y$ z: n( m$ N& V1:使能校验控制

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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