金牌会员
 
- 积分
- 1126
- 金钱
- 1126
- 注册时间
- 2014-8-24
- 在线时间
- 146 小时
|
5金钱
这两天在实验 st的图形化IDE,cubeIDE。
使用下来感觉确实方便,勾勾画画,generate 一键生成代码。
主要是冲着很多协议栈不用再自己移植了去的。
没想到建立第一个工程就卡了一周,我是准备做一个最简单的 FreeRTOS + 串口的实验。
没想到线程里 printf 浮点数一直无法正常输出。
主要有两个问题:
1、使用了printf的线程必须给比较大的任务堆栈,默认的128word居然不够,否则进HardFault_Handler --------- 为什么printf要用这么大空间?
2、在线程中的printf输出浮点始终有些异常,有时候不能输出完整 ---------- 已经做了重定向,已经勾选了系统菜单里的使用浮点
重定向是这么写的:
#if 1
#include "stdio.h"
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
HAL_UART_Transmit(&huart1, (uint8_t*)&ch,1,HAL_MAX_DELAY);
return ch;
}
#endif
|
最佳答案
查看完整内容[请看2#楼]
爬了一周出坑,原来是官方的SDK有问题。
可以选择打一个第三方补丁。
详情看这个
http://www.nadler.com/embedded/newlibAndFreeRTOS.html
cubeIDE,怎么说呢,挺有潜力的,就是需要打磨。
|