当前位置: 首页 > news >正文

基于Eclipse下使用arm gcc开发GD32调用printf

系列目录


第一章 xxx

目录

系列目录

文章目录

文章目录

  • 系列文章目录
  • 前言
  • 一、pandas是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结


前言

开发环境:Eclipse代替Keil,IAR

开发平台:GD32

开发编译器:arm-none-eabi-  gcc

基于此环境,调用类似于Keil的printf函数,进行串口打印信息

一、Keil实现串口重映射

int fputc(int ch, FILE *f)
{HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);return ch;
}

此方法仅针对于Keil,且调用了keil自己精简优化过的库文件 ,不适用gcc环境

二、Eclipse+GCC实现串口重映射

标准C库的底层调用的是_write() 函数实现输出,所以要重写write函数

int _write (int fd, char *pBuffer, int size)  
{  for (int i = 0; i < size; i++)  {  usart_data_transmit(USART_PORT, (uint8_t)pBuffer[i]);while(RESET == usart_flag_get(USART_PORT, USART_FLAG_TBE));		}  return size;  
}

仅添加这个重映射并不能直接就使用printf。会有以下报错

undefined reference to  `_sbrk'   `_close'  `_fstat'  `_read' `_write

这个时候需要配置一下eclipse。

右键项目,选择 Properties->GNU Arm Cross Linker->Miscellaneous

勾选红色框图所示

此时即可调用printf及sprintf等。 

注意:使用GCC的libgcc.a进行使用printf,会消耗较大的flash空间。小容量的单片机慎用

对比:同样开启优化

使用GCC printf,程序所用flash

不适用GCC printf,程序所用flash

 仅调用libgcc 的printf,就多出了将近30多KB的Flash。

总结

没有总结

http://www.lryc.cn/news/59634.html

相关文章:

  • 5个降低云成本并提高IT运营效率的优先事项
  • 95-拥塞控制
  • Linux常见操作命令【二】
  • Linux驱动中断和定时器
  • 表达式和函数
  • C#基础复习
  • Windows服务器使用代码SSH免密登录并执行脚本
  • (Deep Learning)交叉验证(Cross Validation)
  • 通俗举例讲解动态链接】静态链接
  • K8S部署常见问题归纳
  • Redis高可用
  • Hyperledger Fabric 2.2版本环境搭建
  • macOS Monterey 12.6.5 (21G531) Boot ISO 原版可引导镜像
  • 【软件设计师13】数据库设计
  • SpringMVC的全注解开发
  • C# | 导出DataGridView中的数据到Excel、CSV、TXT
  • 新规拉开中国生成式AI“百团大战”序幕?
  • 日撸 Java 三百行day31
  • 在线绘制思维导图
  • 月薪20k的性能测试必备技能:发现性能瓶颈掌握性能调优
  • 3、Web前端学习规划:CSS - 学习规划系列文章
  • 城市轨道交通列车时刻表优化问题【最优题解】
  • 常年不卷,按时下班,工作能力强,同事求助知无不言,不扯皮,不拉帮结派,这样的职场清流竟然被裁掉了!...
  • 基于改进多目标灰狼优化算法的考虑V2G技术的风、光、荷、储微网多目标日前优化调度研究(Matlab代码实现)
  • Python 函数、文件与模块
  • 在Spring Boot微服务使用RedisTemplate操作Redis
  • 4月软件测试面试太难,吃透这份软件测试面试笔记后,成功跳槽涨薪30K
  • 人人拥有ChatGPT的时代来临了,这次微软很大方!
  • 【C++11】自动类型推导(Type Inference)
  • 拐点!智能座舱破局2023