stm32串口接收不到正确数据

三哥他打我 2016-03-25 05:17:14
cc2530通过串口以数组方式发送4个数据,定义地是unsigned char类型
下面是stm32提供的一个串口接接收函数
uint16_t USART_ReceiveData(USART_TypeDef* USARTx)
{
/* Check the parameters */
assert_param(IS_USART_ALL_PERIPH(USARTx));

/* Receive Data */
return (uint16_t)(USARTx->DR & (uint16_t)0x01FF);
}
这个函数自己也尝试着改过,但是总是收不到正确的数据,求大神分析一下,该怎么样处理,这个函数返回的数据形式到底是怎么怎样的,前面的那个强制装换是不是把数据给边失真了,表示C语言小渣渣求大神,包大腿
...全文
2229 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
决狐疑 2016-03-30
  • 打赏
  • 举报
回复
加一句判断接收缓冲区是否为空
goodgooudydst 2016-03-30
  • 打赏
  • 举报
回复
对于接收程序,先判断接收缓冲区为空再接收字符。 while(USART_GetFlagStatus(USARTX, USART_FLAG_RC) == RESET);
goodgooudydst 2016-03-30
  • 打赏
  • 举报
回复
加一句等待发送缓冲区为空就行了 while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
wlb321 2016-03-29
  • 打赏
  • 举报
回复
先判断有无接收到数据再去接收啊
熊歌歌 2016-03-29
  • 打赏
  • 举报
回复
先试下发送,能发送再试接收,如果不能发送说明串口没有配置好。
  • 打赏
  • 举报
回复
设置成无校验试试, stm32设置奇偶校验位的时候比较坑,无校验时数据位是8位,有奇偶校验时数据位要设置成9位, 从其它平台转到STM32 平台时,容易进入这个陷阱.
lr2131 2016-03-28
  • 打赏
  • 举报
回复
废话少说,上示波器图!
「已注销」 2016-03-27
  • 打赏
  • 举报
回复
波特率没有设置好,中断问题
SinoEmbedded 2016-03-27
  • 打赏
  • 举报
回复
这个没有等待接收结束
dceacho 2016-03-26
  • 打赏
  • 举报
回复
收到的是啥?

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧