UART
改写printf函数,输出到UART总线上去
在配置好的文件的main函数中,添加stdio.h的头文件
配置以下函数
int fputc(int c,FILE *stream)
{
HAL_UART_Transmit(&huart1,(uint8_t *)&c,1,HAL_MAX_DELAY);
return c;
}
接收从UART总线上发来的数据
HAL_UART_Receive(&huart1,recv_buf,10,HAL_MAX_DELAY);
printf("%s\n",recv_buf);
注意这里接收的数据数量10,必须严格发送10个,否则需要自己创建一个栈,当栈存满,再进行发送
UART_IT
void HAL_UART_RxCpltCallback (UART_HandleTypeDef * huart)
{
printf("接收中断\n");
recv_flag=1;
}
HAL_UART_Receive_IT(&huart1,recv_buf,10);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
printf("循环中\n");
HAL_Delay(1000);
if(recv_flag==1)
{
printf("recv_buf=%s\n",recv_buf);
recv_flag=0;
HAL_UART_Receive_IT(&huart1,recv_buf,10);
}
//缓冲队列实现传输长度自由
}