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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
uint16_t USART_ReceiveData(USART_TypeDef* USARTx)
0 k9 d, w, [9 @5 R- }; p8 R{/ R( @; @4 q' c' i* {- W
  /* Check the parameters */+ S9 n+ n  y+ j4 t
  assert_param(IS_USART_ALL_PERIPH(USARTx));; W. s! T; C% X" }* V- s

$ }1 t5 w5 M" g! X$ c4 }  /* Receive Data */. _2 V7 J$ O) j* B7 y) O
  return (uint16_t)(USARTx->DR & (uint16_t)0x01FF);4 r' m0 }6 ]. z+ ?9 c
}2 t2 S3 W* @# T' u1 o/ g
$ Q: ~7 }& j4 |

4 Y* x- `/ j# k
% x' U/ X( I3 v) ~1 S4 \为什么要返回16位,串口一次接8位呀。用的时候也是用8位,谁帮忙解释一下4 E3 N9 d1 ^4 ~# \2 M
uint8_t     uart_buff[UART_BUFF_SIZE];
4 m. N4 T- I$ ]% v3 \2 cuart_buff[uart_p] = USART_ReceiveData(BLT_USARTx);1 Y  J4 K, s: L/ f2 Q* x

& ?4 T; Y5 Q4 l! m, L0 ~" t

该用户从未签到

2#
发表于 2018-7-16 15:34 | 只看该作者
包含校验位时,有9位数据的情况,以下是从官方手册拷贝过来的:
) ?  @' N* d, |
5 c$ i# ]; o4 h) y7 HDR[8:0]:数据值 (Data value)
- u8 n0 D$ p" s4 l* i4 S  q包含了发送或接收的数据。由于它是由两个寄存器组成的,一个给发送用(TDR),一个给接收0 P3 l. S8 K; m; V* r
用(RDR),该寄存器兼具读和写的功能。 TDR寄存器提供了内部总线和输出移位寄存器之间的% y0 _# Y# u& o+ r( q4 Y
并行接口(参见图248)。 RDR寄存器提供了输入移位寄存器和内部总线之间的并行接口。5 F4 X2 q' Q) n% R# o
当使能校验位(USART_CR1中PCE位被置位)进行发送时,写到MSB的值(根据数据的长度不
6 r2 `! R3 x0 ]8 |* @: t% Z# z- N同, MSB是第7位或者第8位)会被后来的校验位该取代。# x) Z+ V8 |4 Q2 _0 a; X
当使能校验位进行接收时,读到的MSB位是接收到的校验位
! {, J; _( M  T7 ]0 z5 c# Y
# K. L& q- s: i& v5 f# h& [9 A2 N- z你再看一下USART_CR1的M、PCE:
. t+ c/ b$ q  c/ P0 ^) ]9 p4 r* iM:字长 (Word length)
+ O4 n& }# u, ?" M  W( ?) R该位定义了数据字的长度,由软件对其设置和清零
4 i% w: L% Q1 r# {0:一个起始位, 8个数据位, n个停止位;
& ~$ ^  E# a0 s: E! j# q) Y' `1:一个起始位, 9个数据位, n个停止位。
  e$ Y1 Z0 C. }& _1 C注意:在数据传输过程中(发送或者接收时),不能修改这个位
9 J3 e9 V; w9 Y. d
+ W. m' _7 q6 }0 ]PCE:检验控制使能 (Parity control enable)
" w3 v) K' A6 Q$ G4 ]  ^5 |用该位选择是否进行硬件校验控制(对于发送来说就是校验位的产生;对于接收来说就是校验位- N3 d! x2 r" z$ q3 {5 i# J
的检测)。当使能了该位,在发送数据的最高位(如果M=1,最高位就是第9位;如果M=0,最高
4 ]- m- R) ~- r/ X2 F; h1 }7 p, I位就是第8位)插入校验位;对接收到的数据检查其校验位。软件对它置’1’或清’0’。一旦设置了
4 ?9 J" k# p2 ^* Y* x该位,当前字节传输完成后,校验控制才生效。
8 Y$ j- K# v2 s" \% d+ I$ ~0:禁止校验控制;
1 C7 Z2 ^/ t8 M& O/ t6 v9 c1:使能校验控制

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-21 03:04 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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