你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
时光虫子 发表于 2017-6-5 14:55 串口缓冲区开大点,接收和读取用环形缓冲区
查看全部评分
avenbbs-241604 发表于 2017-8-8 16:01 int main(void) { ...
Your UAT Feedback is needed within today.
5.18活动板子会不会是STM32L4呢
STM32隐藏
STM32 CUBE软件中找不到STM32L4系列单片机
应用
AAA
tiwen
BBBB
aaa
2222
接收和读取用环形缓冲区
这是关键点,你想明白了就明白。
{
...
HAL_UART_Receive_IT(&huart1, (uint8_t *)&RxByte1, 1);
...
whine(1)
{
...
}
...
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
printf("%c",RxByte1);
HAL_UART_Receive_IT(&huart1, (uint8_t *)&RxByte1, 1);
}
评分
查看全部评分
虽然你把每个数据都打印出来了,看起来RxByte1像是保存了不止一个数据,但实际上RxByte1里只保存1字节数据
评分
查看全部评分
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
//UNUSED(huart);
if(huart->Instance == USART1)
{
//串口发送完数据就中断,立马存到缓冲区,中断比存储要快,所以能存完串口的所有数据
//然后发送完后,继续开启中断接收函数
RxBuffer1[RxCounter1++]=RxTemp1;
RxBuffer1[RxCounter1++]=0;
RxCounter1=0;
HAL_UART_Transmit(&huart3,RxBuffer1,strlen(RxBuffer1),100);
HAL_UART_Receive_IT(&huart1,&RxTemp1,1);
}
if(huart->Instance == USART3)
{
RxBuffer3[RxCounter3++]=RxTemp3;
RxBuffer3[RxCounter3++]=0;
RxCounter3=0;
HAL_UART_Transmit(&huart1,RxBuffer3,strlen(RxBuffer3),100);
HAL_UART_Receive_IT(&huart3,&RxTemp3,1);
}
}