U1TX

##############
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发送数据的个数

猜你喜欢

转载自blog.csdn.net/weixin_42381351/article/details/88355095
1U