高级会员

- 积分
- 850
- 金钱
- 850
- 注册时间
- 2015-12-8
- 在线时间
- 176 小时
|
5金钱
现在项目上要求用串口读取传感器上的数据,要求串口在每次发送读取命令给传感器之前,先根据传感器的类型来重新设置串口的参数,即每次读取传感器的时候都更新一次串口的设置。我的设置代码是这样的[mw_shl_code=c,true]//更新串口配置
void uart_update(USART_NO usart_no,u32 bound,u16 WordLength,u16 StopBits,u16 Parity)
{
USART_TypeDef* USARTx;
USART_InitTypeDef USART_InitStructure;
switch(usart_no)
{
case USART_1:
//RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); //使能USART1
USARTx=USART1;
break;
case USART_2:
//RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); //使能USART2
USARTx=USART2;
break;
case USART_3:
//RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); //使能USART3
USARTx=USART3;
break;
case USART_4:
//RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4, ENABLE); //使能USART4
USARTx=UART4;
break;
case USART_5:
//RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART5, ENABLE); //使能USART5
USARTx=UART5;
break;
default: break;
}
//USART 初始化设置
USART_Cmd(USARTx, DISABLE); //关闭串口
//USART_DeInit(USARTx); //复位串口
USART_InitStructure.USART_BaudRate = bound;//设置波特率
USART_InitStructure.USART_WordLength = WordLength;//设置字长格式
USART_InitStructure.USART_StopBits = StopBits;//设置停止位格式
USART_InitStructure.USART_Parity = Parity;//设置奇偶校验位格式
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收发模式
USART_Init(USARTx, &USART_InitStructure); //初始化串口
USART_Cmd(USARTx, ENABLE); //使能串口
}[/mw_shl_code]
每次重新操作之后第一个字节都会输出FF,是操作问题吗?有什么方法可以解决?
|
|