stm32中串口接收到的数据怎么存到一个变量或者指针,可以在其他函数里使用

发布网友

我来回答

1个回答

热心网友

1、初始化部分你没给出来,不知道你有没有使能发送中断或串口其他中断什么的。
2、你再中断函数里面多次读取了SR状态寄存器:
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)这里一次,

while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE)==RESET);这里读了不知道多少次,要知道状态寄存器里面有些位你一旦读取了以后就会自动清零了,你可以去查看手册去,因此是不推荐在中断函数中多次读取状态寄存器的。3、从程序上来看,只要进入中断,就肯定会执行USART_TX_Data函数而不管有没有收到数据,这样一来,如果不是因为接收中断而是其他原因的串口中断的话那样就会有问题了。
4、USART_TX_Data里面是怎么写的我们也不知道。

综上,问题既有可能出现在问题2,你要作为数据接收的话建议你这样:
if(USART_GetFlagStatus(USART2,USART_FLAG_RXNE) == SET) //这句已经能判断收到数据了
{
Data = USART_ReceiveData(USART2); //不用清除接收标志位,读取数据就自动清除了
............... //然后在这里做你想做的事情

}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com