系列目录
第一章 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。
总结
没有总结