Keil 及 IAR 的 printf 重映射到UART的实现方法 IAR 版本小于 9030001的串口 printf重映射实现intputchar(intch){UART_SendData(UART2,(uint8_t)ch);while(RESETUART_GetFlagStatus(UART2,UART_FLAG_TXEMPTY)){}return(ch);}IAR版本大于等于9030001的串口 printf重映射实现#includestddef.h#includeLowLevelIOInterface.hsize_t__write(inthandle,constunsignedchar*buf,size_tbufSize){size_tnChars0;/* Check for the command to flush all handles */if(-1handle){return(0);}/* Check for stdout and stderr (only necessary if FILE descriptors are enabled.) */if((_LLIO_STDOUT!handle)(_LLIO_STDERR!handle)){return(-1);}for(/* Empty */;bufSize0;--bufSize){UART_SendData(UART2,(uint8_t)*buf);while(RESETUART_GetFlagStatus(UART2,UART_FLAG_TXEMPTY)){}buf;nChars;}return(nChars);}Keil 的串口 printf重映射实现intfputc(intch,FILE*f){UART_SendData(UART2,(uint8_t)ch);while(RESETUART_GetFlagStatus(UART2,UART_FLAG_TXEMPTY)){}return(ch);}GCC 的串口 printf重映射实现int_write(intfile,char*ptr,intlen){inti;(void)file;for(i0;ilen;i){UART_SendData(UART2,(uint8_t)ch);while(RESETUART_GetFlagStatus(UART2,UART_FLAG_TXEMPTY)){}}returnlen;}在同一个文件中通过宏定义判断统一实现方法#ifdefined(__ICCARM__)#if(__VER__9030001)/* Files include */#includestddef.h#includeLowLevelIOInterface.h/*********************************************************************************************************************** * brief redefine __write function * note for printf * param handle * param *buf * param bufSize * retval nChars *********************************************************************************************************************/size_t__write(inthandle,constunsignedchar*buf,size_tbufSize){size_tnChars0;/* Check for the command to flush all handles */if(-1handle){return(0);}/* Check for stdout and stderr (only necessary if FILE descriptors are enabled.) */if((_LLIO_STDOUT!handle)(_LLIO_STDERR!handle)){return(-1);}for(/* Empty */;bufSize0;--bufSize){UART_SendData(UART2,(uint8_t)*buf);while(RESETUART_GetFlagStatus(UART2,UART_FLAG_TXEMPTY)){}buf;nChars;}return(nChars);}#else/*********************************************************************************************************************** * brief redefine fputc function * note for printf * param ch * param f * retval ch *********************************************************************************************************************/intputchar(intch){UART_SendData(UART2,(uint8_t)ch);while(RESETUART_GetFlagStatus(UART2,UART_FLAG_TXEMPTY)){}return(ch);}#endif#elifdefined(__GNUC__)/*********************************************************************************************************************** * brief redefine GCC _write function * note for printf * param file * param ptr * param len * retval written length *********************************************************************************************************************/int_write(intfile,char*ptr,intlen){inti;(void)file;for(i0;ilen;i){UART_SendData(UART2,(uint8_t)ch);while(RESETUART_GetFlagStatus(UART2,UART_FLAG_TXEMPTY)){}}returnlen;}#else/*********************************************************************************************************************** * brief redefine Keil fputc function * note for printf * param ch * param f * retval ch *********************************************************************************************************************/intfputc(intch,FILE*f){UART_SendData(UART2,(uint8_t)ch);while(RESETUART_GetFlagStatus(UART2,UART_FLAG_TXEMPTY)){}return(ch);}#endif

相关新闻

最新新闻

如何在同一个文件夹选取多个文件并压缩(送免费压缩软件)

如何在同一个文件夹选取多个文件并压缩(送免费压缩软件)

第一步:按住ctrl键不放,然后数遍左键点击需要选择的文件(如果要全选的话就直接ctrlA) 第二步:右键点击,然后就可以进行操作:WinRAR——四个里面选一个;然后就可以看到压缩成功补充:如果电脑上有…

2026/7/23 19:20:34
OpenWRT软路由上Docker部署青龙面板+Ninja的避坑指南(附常见错误解决方案)

OpenWRT软路由上Docker部署青龙面板+Ninja的避坑指南(附常见错误解决方案)

在OpenWRT软路由上构建Docker化任务管理平台:从青龙面板到Ninja的深度部署与排障实践 对于许多技术爱好者而言,将闲置的硬件资源转化为一个稳定、高效的家庭自动化中心,是一件充满乐趣和成就感的事情。OpenWRT软路由凭借其出色的网络控制能力和丰富的软件生态,成为了实现这…

2026/7/23 19:20:34
斐讯N1盒子刷软路由OpenWrt

斐讯N1盒子刷软路由OpenWrt

title: 斐讯N1盒子刷软路由OpenWrt date: 2022-06-22 14:42:47 最近探索了下 N1 刷成软路由的方式,总算做成了比较满意的版本 软路由 openwrt 系统 一个专门为路由器而定制的开源系统,集成路由器的基本上网功能,并且还提供了处理网络数据的…

2026/7/23 19:20:34
医疗设备全生命周期管理系统+学前领先+智慧医院高效运营的核心助力​

医疗设备全生命周期管理系统+学前领先+智慧医院高效运营的核心助力​

近两年国家相关部门密集发布一些列法律法规及文件,从设备管理、临床使用、质量管理、成本效益分析、档案管理等多方面提出明确监管要求。在当今医疗行业快速发展的时代,医院的医疗设备数量与日俱增,种类愈发繁杂。从基础的听诊器、血压计&…

2026/7/23 19:20:34
WAIC 2026|西部数据揭示AI存储新范式:AI不仅是计算,更是数据

WAIC 2026|西部数据揭示AI存储新范式:AI不仅是计算,更是数据

7月17日至20日,世界人工智能大会(WAIC)在上海世博中心如期举行。在这场全球 AI 领域的年度盛会上,西部数据以"AI 背后的驱动力"为主题,呈现了存储基础设施如何支撑 AI 的规模化发展。西部数据在此次大会上释…

2026/7/23 19:20:34
原神单机版 v6.4/6.5/6.6 免费下载

原神单机版 v6.4/6.5/6.6 免费下载

自己做到,请勿倒卖下载:获取完整客户端(含6.6与6.5最新补丁,下了6.4的包体后找到文件夹里面的补丁拖入即可) 解压:右键解压至任意文件夹(建议关闭杀毒软件)环境:跟随教程…

2026/7/23 19:15:34

月新闻