中级会员
 
- 积分
- 253
- 金钱
- 253
- 注册时间
- 2021-6-27
- 在线时间
- 36 小时
|
/*接收一串数据*///未成功板--》下面有成功版
uint8_t UART3GetByte( uint16_t * GetData)
{
static uint8_t leng = 0;
uint8_t Length = 0;
// if(USART_GetFlagStatus(USART3, USART_FLAG_RXNE) == RESET)//接收信息标志位,接收到信息自动置1,软件清零
// {
//// leng = 0;
// return 0;//没有收到数据
// }
// else
if((USART_GetFlagStatus(USART3, USART_FLAG_RXNE) != RESET))
{
*GetData = USART_ReceiveData(USART3);
GetData ++;
leng++;
}
else if(USART_GetFlagStatus(USART3,USART_FLAG_IDLE)!=RESET)//接收空闲标志位
{
USART3->SR;//状态位
USART3->DR;//数据位 读操作【读数据】可使RXNE位0
// USART_ClearITPendingBit(USART3,USART_IT_RXNE); //清除接收标志位,每次接收完成都需要清除一下
Length = leng;
leng = 0;
return Length;
}
return 0;//收到数据
}
///*接收一串数据*///成功版本
uint8_t UART3GetByte( uint16_t GetData[15])
{
static uint8_t leng = 0;
uint8_t Length = 0;
// if(USART_GetFlagStatus(USART3, USART_FLAG_RXNE) == RESET)//接收信息标志位,接收到信息自动置1,软件清零
// {
//// leng = 0;
// return 0;//没有收到数据
// }
// else
if((USART_GetFlagStatus(USART3, USART_FLAG_RXNE) != RESET))
{
GetData[leng++] = USART_ReceiveData(USART3);
// leng++;
}
else if(USART_GetFlagStatus(USART3,USART_FLAG_IDLE)!=RESET)//接收空闲标志位
{
USART3->SR;//状态位
USART3->DR;//数据位 读操作【读数据】可使RXNE位0
// USART_ClearITPendingBit(USART3,USART_IT_RXNE); //清除接收标志位,每次接收完成都需要清除一下
Length = leng;
leng = 0;
return Length;
}
return 0;//收到数据
}
备注:求解释,使用指针是为了减少传输内存,以及可以接收不定长度数据,但 GetData ++;没有起到作用似的,测试结果,数据全部存在了第一个地址;换成数组就可以了,但数组与指针是可以相互替换的,为何我用指针就不行了?估计是要把指针设置成静态变量这种类型?
|
|