##############
int fputc(int ch, FILE *f)//FILE 需要头文件 #include <stdio.h> 放在main.h去吧
{
HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1 , 0xffff);
while (huart1.gState != HAL_UART_STATE_READY);//Loop until the end of transmission 每个发送都值得优化
return ch;
}
printf("\r\n%s\r\n",__FUNCTION__);
HAL_Delay(500);
######################
不用做啥 可以直接DMA发送!!
uint8_t aTxBuffer[10]={"123"};
HAL_UART_Transmit_DMA(&huart1,aTxBuffer,strlen((const char*)aTxBuffer));
自动的IT何时出发呢?
金彩文章:https://blog.csdn.net/chounanwang/article/details/80251584
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance==USART1)
printf("\r\n%s\r\n",__FUNCTION__);
}
这就是DMA发送完成以后的回调函数!
使用说明:
1可以在回调函数再次调用发送 变成DMA的循环模式!
2HAL_UART_Transmit_DMA(&huart1,aTxBuffer,2);可以修改长度控制DMA发送数据的个数