总的来说 使用hal还是不太习惯
这里说一点 把tx和rx短接以后 自发自收问题
用hal本身的不好使,改良了 一下, 基本没问题
HAL_StatusTypeDef HAL_UART1_Transmit_Personal(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
{
u32 i=0;
for(i=0;i<Size;i++)
{
HAL_UART_Transmit(huart,&pData
,1,Timeout);
HAL_Delay(1);
HAL_UART_Receive_IT(huart,&RxBuff_Uart1,1);
}
}
另外串口中断中
调用 while (HAL_UART_GetState(&huart1)!=HAL_UART_STATE_READY)//等待就绪
{
timeout++;////超时处理
if(timeout>maxDelay)
{
printf("huart1 error
");
return ;
}
}
timeout=0;
while(HAL_UART_Receive_IT(&huart1,&RxBuff_Uart1,1)!=HAL_OK)//重新配置为下次做准备
{
timeout++; //超时处理
if(timeout>maxDelay)
{
printf("huart1 error
");
return ;
}
}
程序运行时也需要上面操作,
详情可以参考http://www.stm32cube.com/article/75
一周热门 更多>