从品牌网站建设到网络营销策划,从策略到执行的一站式服务
STM32-Printf如何用DMA方式输出,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
创新互联公司作为成都网站建设公司,专注成都网站建设、网站设计,有关企业网站制作方案、改版、费用等问题,行业涉及成都护栏打桩机等多个领域,已为上千家企业服务,得到了客户的尊重与认可。
1.简单的printf打印,把底层的fputc重写就行
int fputc(int ch, FILE *f) { while (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_TC) == RESET) {} HAL_UART_Transmit(&huart1, (uint8_t*) &ch,1,0xFF); return ch; }
2.通过DMA打印
void Usart1DmaPrintf(const char *format,...) { uint16_t len; va_list args; va_start(args,format); len = vsnprintf((char*)UartTxBuf,sizeof(UartTxBuf)+1,(char*)format,args); va_end(args); HAL_UART_Transmit_DMA(&huart1, UartTxBuf, len); }
里面的UartTxBuf可以申请为全局变量,长度合适就行。或者用动态分配内存,然后再DMA发送完成中断里回收内存。如果在函数内申请的局部变量的话可能会被回收后被其他地方用,造成其他影响。
关于STM32-Printf如何用DMA方式输出问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图