如果我调用C,数学库中的数学函数“trunc”定义为:
extern double trunc _PARAMS((double));
在我的主要档案里叫它:
int i = (int)trunc(2.5);
很好,没问题。但如果我想被动地通过双关,就像:
double d = 2.5;
int i = (int)trunc(d);
不管用?!?在我的微处理器STM32F4 IDE中,它以调试器模式进入:
Infinite_Loop:
b Infinite_Loop
然后它就卡在那里了。我也改变了双,并尝试浮动,int,unit8_t,.没人不工作。另外,其他数学函数也可以正常工作,我这样
我有一段时间没有在linux上使用stm32f4了。自从我上次安装工具链以来,似乎发生了很多变化。
首先,在我安装了GNU插件之后,我意识到那里有对C++的支持。我说的对吗?他们是否在stm32的C++版本库上创建了一些HAL?
第二。我已经安装了代码库编译器。我在eclipse项目设置中选择了正确的工具链。但它给了我这个错误。
arm-none-eabi-g++: error: nano.specs: No such file or directory
我可以看到在链接器脚本中有神秘的(对我来说)行。
specs=nano.specs
所以我读过关于规格标志的文章。在这个规范中,编译器应该有
有什么明智的办法来解决这个问题吗?
uint32_t a = 16637510;
uint32_t b = 45627362;
uint32_t c = 0;
c = a * 100000 / b //overflows
c = (a * 100/b)*1000 //gives 36000
我需要得到结果c= 36463或更高36464。并且需要快速、非浮点操作。CPU是stm32f4
更新:
接受的答案是将100000转换为100000ULL (64位),但正如@PeterJ所建议的(并删除了他的答案),使用stm32f4 FPU比64除法操作更快。
Timer t;
int i;
t.st
我是stm32新手,我在linux上编程。
每次我看手臂gcc的例子,我都会看到很多gcc的旗帜。我想知道如何为特定类型的板确定这些标志(例如,stm32f10x)。或者我应该说我应该检查哪些文档来获取这些信息。或者这些旗帜对于不同的棋盘基本上是一样的?
下面是我在中找到的一个makefile示例,我不知道像-mcpu、-mfpu这样的标志是关于什么的。
# Put your stlink folder here so make burn will work.
STLINK=~/stlink.git
# Put your source files here (or *.c, etc)
SRC