我是 Atmel 领域的新手。很久以前,我可以用 Visual Studio 编写和编译C,但是有点不实际。
所以我试图了解微控制器 ATTINY1616 中的内存使用情况。我开了Atmel工作室,创建了一个C可执行项目,然后选择了正确的微控制器。我构建了几乎没有内容的项目,并看到程序存储器为grep -n -B 1 'The user' a.txt # Print each line matching 'The user' and one line preceding it, the -n flag prefixes output with line number
egrep -v '^-' # The use of grep -B causes grep to separate match groups with '--', we want to disregard those lines
sed -r 's/^([0-9]+).*/\1d/' # Extract the line numbers and with them create sed delete commands
sed -f - a.txt # and finally feed those commands to sed, operating on your input file
。这是我的基线。
现在,我尝试添加行154 bytes
,以查看程序内存使用量是否会增加。没有。然后,我尝试在#include <math.h>
中添加float a = 2.000678f;
。建立项目后仍然没有增加。我在这里误会什么?
main
答案 0 :(得分:3)
头文件通常仅包含功能的声明,而不包含定义。
您没有使用math.h中声明的任何函数,因此它们所驻留的库不会链接到您的程序中。如果您使用其中之一,例如float b = sin(a)
,则数学库的内容是必需的并且已链接(假设您将-lm
传递给gcc来这样做)。
答案 1 :(得分:0)
因此,在询问了一些具有微控制器经验的朋友之后,我找到了解决方案。
在Atmel Studio中,您需要转到Project-> Application Properties ---> Toolchain,并将优化更改为无。
然后,它识别我的浮点数并将它们存储在程序内存中,当使用atan()进行计算时,它也用上面的相同代码填充空间。