1.cubemx设置
1.1基本设置
1.2 打开DMA和中断
2.代码实现
HAL_UART_Transmit_DMA(&huart1,(uint8_t*)str,strlen(str));
HAL_Delay(500);
Free的串口打印函数
QueueHandle_t lock;
/*
含有临界资源保护的printf 添加一个互斥锁保护临界资源
*/
void init_lock(void)
{
lock = xSemaphoreCreateRecursiveMutex();
}
int fputc(int ch, FILE *f)
{
xSemaphoreTakeRecursive(lock,portMAX_DELAY );
HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,100); //huart1需要根据实际配置
xSemaphoreGiveRecursive(lock);
return ch;
}