串口编程问题:
当来的数据是一个字符流的时候,截取需要的一串字符的处理 (stm32):
#include "bsp_usart.h"
uint8_t RxBuffer1[COM1_Rx_length]={0};
uint8_t RxBuffer2[COM2_Rx_length]={0};
uint8_t TxBuffer1[COM1_Tx_length]={0};
uint8_t TxBuffer2[COM2_Tx_length]={0};
extern uint8_t flag;
USART_TypeDef COM1,COM2; //bsp_usart.c中的全局变量,在stm32f10x.h的结构体定义中增加了两个变量UsartRecvBufReadIndex UsartRecvBufWriteIndex;
/***************************************************************************************************
*\Function Usart_GPIO_config
*\Description 配置函数
*\Parameter void
*\Return void
*\Note
*\Log 2014.05.28 Ver 1.0
* 创建函数。
***************************************************************************************************/
void Usart_GPIO_config()
{
/*
USART2
TXD2----- PA2-US2-TX
RXD2----- PA3-US2-RX
USART1
PA9 --tx
PA10 --rx
速率:9600,n,8,1
*/
GPIO_InitTypeDef GPIO_Structure;
GPIO_Structure.GPIO_Speed = GPIO_Speed_50MHz;
// GPIO_Structure.GPIO_Pin=GPIO_Pin_9;
// GPIO_Structure.GPIO_Mode=GPIO_Mode_AF_PP;
// GPIO_Init(GPIOA,&GPIO_Structure);
// GPIO_Structure.GPIO_Pin=GPIO_Pin_10;
// GPIO_Structure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
// GPIO_Init(GPIOA,&GPIO_Structure);
GPIO_Structure.GPIO_Pin=GPIO_Pin_3;
GPIO_Structure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO_Structure);
GPIO_Structure.GPIO_Pin=GPIO_Pin_2;
GPIO_Structure.GPIO_Mode=GPIO_Mode_AF_PP;;
GPIO_Init(GPIOA,&GPIO_Structure);
}
/***************************************************************************************************
*\Function void Usart_Initlocal(int8_t port)
*\Description Usart 时钟使能
*\Parameter port 使能端口 (1或2)
*\Return void
*\Note
*\Log 2014年7月4日
* 创建函数。
***************************************************************************************************/
void Usart_RCC_Initlocal(int8_t port)
{
if(port==1)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
if(port==2)
RCC_APB1PeriphClockCmd( RCC_APB1Periph_USART2,ENABLE);
}
/*************