[开发工具] keil 下如何使用printf

[复制链接]
658|11
 楼主| bestwell 发表于 2023-3-30 17:44 | 显示全部楼层 |阅读模式
使用微库(平台式keil-MDK)

1、点击“魔术棒” Target标签下有个Use MicroLIB---勾选。

2、包含头文件:#include "stdio.h"

3、printf重定向,修改fputc()函数的内容~

  1. int fputc(int ch, FILE *f)

  2. {

  3.         USART_SendData(DEBUG_USART, (unsigned char) ch);

  4.        

  5.         while (!(DEBUG_USART->SR & USART_FLAG_TXE));

  6.        

  7.         return (ch);

  8. }



  9. 这里的:USART_SendData(DEBUG_USART, (unsigned char) ch);



  10. while (!(DEBUG_USART->SR & USART_FLAG_TXE));


就是往串口发送一个字节的代码,修改相应的串口,初始化。

  1. 不使用微库(那么就要强调不使用半主机(no semihosting)模式)

  2. 1、在调用printf的文件中#include "stdio.h"

  3. 2、重写fputc,但需要先加点东西:
  4. #include "stdio.h"
  5. #pragma import(__use_no_semihosting)
  6. struct __FILE
  7. {  
  8.         int handle;
  9. };
  10. FILE __stdout;

  11. FILE __stdin;

  12. //int _sys_exit(int x)
  13. void _sys_exit(int x)
  14. {
  15.         x = x;
  16. }

  17. int fputc(int ch, FILE *f)
  18. {
  19.   /* Place your implementation of fputc here */
  20.   /* e.g. write a character to the USART */
  21.   USART_SendData(Open_USART, (uint8_t) ch);
  22.   /* Loop until the end of transmission */
  23.   while (USART_GetFlagStatus(Open_USART, USART_FLAG_TC) == RESET){}

  24.   return ch;
  25. }


原文链接:https://blog.csdn.net/u011011827/article/details/119136359

周半梅 发表于 2024-2-5 08:03 | 显示全部楼层

整流器或功率开关管与每个电容端的连线长度和宽度都要一样
Pulitzer 发表于 2024-2-5 09:06 | 显示全部楼层

不要根据不同的参数类型走不同的代码逻辑
Pulitzer 发表于 2024-2-5 09:06 | 显示全部楼层

不要根据不同的参数类型走不同的代码逻辑
童雨竹 发表于 2024-2-5 11:02 | 显示全部楼层

其他的信号和地要与这些高压引线和它的散热部分隔开
Clyde011 发表于 2024-2-5 13:08 | 显示全部楼层

每个Strategy交由Spring管理,并在构造后注册
Clyde011 发表于 2024-2-5 13:08 | 显示全部楼层

每个Strategy交由Spring管理,并在构造后注册
公羊子丹 发表于 2024-2-5 14:01 | 显示全部楼层

变压器隔离拓扑中,变压器有多少个绕组
万图 发表于 2024-2-5 15:04 | 显示全部楼层

使用Optional简化if判空
Uriah 发表于 2024-2-5 16:07 | 显示全部楼层

不同的代码逻辑就代表了不同的策略
帛灿灿 发表于 2024-2-5 18:03 | 显示全部楼层

通过对判断条件取反,代码在逻辑表达上会更加清晰
您需要登录后才可以回帖 登录 | 注册

本版积分规则

65

主题

1991

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部