PIC 串口打印指南:使用 printf () 替代 Serial.println ()(XC8 + MCC,附调试技巧)
在 MPLAB XC8 开发环境中,可直接调用 <stdio.h> 库中的 printf() 函数。本指南将介绍如何通过 PIC16F13145 Curiosity 开发板,向 MPLAB 终端窗口打印数据。
内容概览
- 基于 MCC 配置并启用 UART 外设(含图形化配置示例)
- 分配 UART 外设对应的 I/O 引脚
- 将
printf()输出流重定向至 UART 接口 - 在主函数中实现数据发送
void main(void){
SYSTEM_Initialize(); // MCC generated code
while(1){
printf("Hello World!\r\n");
}
}
最后更新时间:2025 年 12 月 1 日
图 1:COM4 端口已成功连接,终端窗口持续打印 “Hello World!”
技术小贴士: 务必为 UART 分配对应的引脚。若串口功能异常,这是首要排查的步骤。个人建议在 TX(发送引脚)和 RX(接收引脚)上外接 LED 逻辑探针,通过可视化反馈简化故障排查流程。
UART 配置步骤
图 2 展示了完整的图形化配置流程:
- 在 MCC 应用构建器中添加 UART 外设。
- 将波特率设置为 9600。
- 将
printf()输出流重定向至 UART 接口(对应界面中的蓝色滑块选项)。
完成配置后,生成 MCC 对应的 .h 头文件与 .c 源文件,即可通过如下代码向串口打印数据:
printf("Hello World!");
图 2:UART 波特率配置及 printf() 输出流重定向设置
MCC 相关文档在哪里?
MPLAB 的 MCC 工具可生成轻量级的外设封装函数,用户可在主函数中直接调用这些标准化接口。如需查看详细文档,点击项目资源区的问号图标即可(对应 图 3 左上角位置)。
相关应用示例可参考本文中介绍的毫秒级回调函数实现方案。
图 3:点击问号图标,查看 MCC 外设封装函数的详细文档
技术小贴士: 请勿修改 MCC 自动生成的文件。建议在主函数中调用这些封装函数,这样在后续重新配置单片机外设时,用户代码不会被 MCC 覆盖。
随着开发经验的积累,你可以将 MCC 生成的寄存器配置代码迁移至主函数中。高阶开发者通常会摒弃 MCC 的抽象层,直接参考单片机数据手册,手动配置外设寄存器。
总结
在单片机应用中,printf() 函数存在代码体积大、执行效率低的缺点。相比之下,通过查表法在紧凑循环中直接操作 UART 硬件寄存器,能够实现更快的传输速度,且占用更少的闪存空间。
但对于新手而言,printf() 仍是入门串口打印的优选方案 —— 你可以借助数十年积累的 C 语言教程和在线调试工具快速上手。代码执行效率的优化,可以留到后续阶段再进行。
相关文章推荐
若你觉得本文对你有帮助,也可参考以下相关技术文章:


