社区导航

 
查看: 580|回复: 5

[求助] 哪位大侠解释一下这段代码是啥意思啊

[复制链接]

10

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2017-12-7 16:00:00 | 显示全部楼层 |阅读模式
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);
}

此帖出自stm32/stm8论坛


回复

使用道具 举报

3196

TA的帖子

0

TA的资源

版主

Rank: 6Rank: 6

发表于 2017-12-7 16:47:16 | 显示全部楼层
第一段是个宏函数,调试的时候用到。
关于dr第九位数据,你看看手册上有说。
多数情况没有用。


回复

使用道具 举报

1万

TA的帖子

15

TA的资源

版主

Rank: 6Rank: 6

发表于 2017-12-7 19:22:45 | 显示全部楼层
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);
}

说得很明白了,第一个是断言,第二个是收数据
http://shop34182318.taobao.com/


回复

使用道具 举报

3478

TA的帖子

11

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

发表于 2017-12-8 10:20:30 | 显示全部楼层
assert_param,检查你传递给函数的参数是否正确。
return (uint16_t)(USARTx->DR & (uint16_t)0x01FF); 读取串口接收数据寄存器的值。并返回该值。去看串口部分的寄存器说明,不难理解。


回复

使用道具 举报

10

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2017-12-8 11:03:37 | 显示全部楼层
ienglgge 发表于 2017-12-8 10:20
assert_param,检查你传递给函数的参数是否正确。
return (uint16_t)(USARTx->DR & (uint16_t)0x01FF);  ...

那是返回uint16_t这种类型的值么?

点评

是的,(USARTx->DR & (uint16_t)0x01FF),算完的值,强制转成uint16_t,返回。  详情 回复 发表于 2017-12-8 17:14


回复

使用道具 举报

3478

TA的帖子

11

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

发表于 2017-12-8 17:14:22 | 显示全部楼层
mr940427 发表于 2017-12-8 11:03
那是返回uint16_t这种类型的值么?

是的,(USARTx->DR & (uint16_t)0x01FF),算完的值,强制转成uint16_t,返回。


回复

使用道具 举报