C编程环境中使用printf的方式

4 篇文章 0 订阅

        由于在日常使用中经常碰到要使用printf的时候,每次都要去上网翻查一下,在此做记录方便查找

 

        C语言中的标准库中所用的标准输出函数,默认的输出设备是显示器,要实现串口或LCD的输出,必须重新定义标准库函数里与输出函数相关的函数。例如:printf输出到串口,需要将fputc里面的输出指向串口(重定向),方法如下:

        只要自己添加一个int fputc(int ch, FILE *f)函数,能够输出字符就可以了

        使用STM32CubeMX配置串口工程后,想直接使用printf需要加以下代码到usart.c的用户代码段:

/* USER CODE BEGIN 1 */
#ifdef __GNUC__
  /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
     set to 'Yes') calls __io_putchar() */
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
/**
  * @brief  Retargets the C library printf function to the USART.
  * @param  None
  * @retval None
  */
PUTCHAR_PROTOTYPE
{
  /* Place your implementation of fputc here */
  /* e.g. write a character to the EVAL_COM1 and Loop until the end of transmission */
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
 
  return ch;
}
/* USER CODE END 1 */

        就这样而不需要宏定义任何内容了,代码中粗暴的printf("hello world")吧~,此方法亲测适用MDK和IAR环境

———————————————————————2020.07.06更新———————————————————————

  • 添加一些神奇的三字母词
  • 在printf的""内打入左侧的三字母,执行后会得到右侧的字符(^U^)ノ~YO
    • ??( ———— [

    • ??) ———— ]

    • ??< ———— {

    • ??> ———— }

    • ??= ———— #

    • ??/ ———— \

    • ??! ———— |

    • ??' ———— ^

    • ??- ———— ~

  • 一些转义字符

    • \ddd ddd表示1~3个八进制数字。这个转义符表示的字符就是给定的八进制数值所代表的字符。

    • \xddd 与上面类似,只是八进制数换成了十六进制数

      • 任何十六进制数都有可能会包含在\xddd序列中,但如果结果值得大小超出了表示字符的范围,其结果就是未定义的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kx_Kevin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值