新手上路
- 积分
- 32
- 金钱
- 32
- 注册时间
- 2017-9-23
- 在线时间
- 5 小时
|
10金钱
问题描述:STM32L151,串口3,配置如下//串口配置
void MX_USART3_UART_Init(void)
{
huart3.Instance = USART3;
huart3.Init.BaudRate = 115200;
huart3.Init.WordLength = UART_WORDLENGTH_8B;
huart3.Init.StopBits = UART_STOPBITS_1;
huart3.Init.Parity = UART_PARITY_NONE;
huart3.Init.Mode = UART_MODE_TX_RX;
huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;//ó2¼tá÷¿ØÖÆ
huart3.Init.OverSampling = UART_OVERSAMPLING_16;//1y2éÑùéèÖÃ
if (HAL_UART_Init(&huart3) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
}
//IO配置
if(huart->Instance==USART3)
{
GPIO_InitStruct.Pin = LOG_TX3_Pin|LOG_RX3_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;//íÆíêêä3ö
GPIO_InitStruct.Pull = GPIO_PULLUP;//éÏà-
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;//Ëù¶è
GPIO_InitStruct.Alternate = GPIO_AF7_USART3;//¸′óÃ
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
//串口中断
void USART3_IRQHandler(void)
{
unsigned int timeout=0;
HAL_UART_IRQHandler(&huart3);
timeout=0;
while (HAL_UART_GetState(&huart3) != HAL_UART_STATE_READY)//原子方式
{
timeout++;
if(timeout>2000) break;
}
timeout=0;
while(HAL_UART_Receive_IT(&huart3, &Usart3.MidBuffer, 1) != HAL_OK)//原子方式
{
timeout++;
if(timeout>2000) break;
}
}
//中断配置
void MX_NVIC_Init(void)
{
/* TIM2_IRQn interrupt configuration */
HAL_NVIC_SetPriority(TIM2_IRQn, 3, 0);
HAL_NVIC_EnableIRQ(TIM2_IRQn);
/* EXTI1_IRQn interrupt configuration */
HAL_NVIC_SetPriority(EXTI1_IRQn, 2, 0);
HAL_NVIC_EnableIRQ(EXTI1_IRQn);
/* USART1_IRQn interrupt configuration */
HAL_NVIC_SetPriority(USART1_IRQn, 2, 0);
HAL_NVIC_EnableIRQ(USART1_IRQn);
/* USART2_IRQn interrupt configuration */
HAL_NVIC_SetPriority(USART2_IRQn, 2, 1);
HAL_NVIC_EnableIRQ(USART2_IRQn);
/* USART3_IRQn interrupt configuration */
HAL_NVIC_SetPriority(USART3_IRQn, 2, 2);
HAL_NVIC_EnableIRQ(USART3_IRQn);
}
//串口回调:把接受的数据放在数组中,一直接收,一直放入
if(huart->Instance==USART3)
{
Timer1ms.Uart3Count = 0;
Usart3.Data[Usart3.Count] = Usart3.MidBuffer;
Usart3.Count++;
if(Usart3.Count>=USART_BUFFER_LENGTH) Usart3.Count = 0;
}
出现丢数据现象:我发1234567890,可能程序只收到了其中的几个(3-5个),hal新手不知道问题所在,基本配置和标准库方式差不多,希望原子哥看看,谢谢。
|
|