我用Cubemx 配置STM32F0xx芯片的串口接收接收及发送,发送功能正常,但接收功能不正常,具体如下: 我用电脑串口助手发送 0x00, 结果接收到的是0x80 我用电脑串口助手发送 0x01, 结果接收到的是0xE0 但我查过代码,并未发现错误,我也直接读过RDR寄存器的值,其实和接收到的值相同。 请各位高手大侠指点迷津
评分
查看全部评分
我设置的波特率是9600 ,8N2
发送是对的,所以我认为波特率是对的,不知道我这样理解对不对?
2个停止位?
是的,有问题吗
是的,这样会有问题吗?
串口初始化代码如下:
static void MX_USART2_UART_Init(void)
{
huart2.Instance = USART2;
huart2.Init.BaudRate = 9600;
huart2.Init.WordLength = UART_WORDLENGTH_8B;
huart2.Init.StopBits = UART_STOPBITS_2;
huart2.Init.Parity = UART_PARITY_NONE;
huart2.Init.Mode = UART_MODE_TX_RX;
huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart2.Init.OverSampling = UART_OVERSAMPLING_16;
huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_RXOVERRUNDISABLE_INIT|UART_ADVFEATURE_DMADISABLEONERROR_INIT;
huart2.AdvancedInit.OverrunDisable = UART_ADVFEATURE_OVERRUN_DISABLE;
huart2.AdvancedInit.DMADisableonRxError = UART_ADVFEATURE_DMA_DISABLEONRXERROR;
if (HAL_UART_Init(&huart2) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
//USART_ITConfig(USART2,USART_IT_TXE,ENABLE);
//USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);
//__HAL_UART_ENABLE_IT(&huart2, UART_IT_RXNE);
//__HAL_UART_ENABLE(&huart2);
//_Cmd(USART2,ENABLE);
//USART_ClearFlag(USART2,USART_FLAG_TC);
}
可以改成一个停止位 试试
评分
查看全部评分
我试过了,结果还是一样
你检查下 TTL和232电平有没有搞错了