硬件环境:STM32f103
IDE:MDK
固件库:3.5
实现功能:串口接收一串字符串放入定义的缓冲区。当空闲终端发生时,去除字符串中的关键字。
前期遇到问题:
1.接收到的数据再RXNE中断中,逐个存取数组中。再次访问数组时。数组中的数据不见了,并且Rev_Num与实际发送到的字符串个数并不符合。需要连续发送多次,才能正确接收。之后buf[]内的数据又被清除。(没有在其他程序中处理这个数组)
代码如下:
char Rev[250]={0};//数据缓存区
u16 RX_Num=0;
char temp;
char buf[500];
void USART1_IRQHandler(void)
{
char x;
if(USART_GetFlagStatus(USART1, USART_FLAG_ORE) != RESET)
{
USART_ClearFlag(USART2, USART_FLAG_ORE);
x = USART_ReceiveData(USART1);
}
if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
{
USART_ClearITPendingBit(USART1,USART_IT_RXNE);
x=USART_ReceiveData(USART1);
buf[RX_Num]=x;
//USART_SendData(USART1,Rev[RX_Num]);
RX_Num++;
// while(!USART_GetFlagStatus(USART1,USART_FL