【发布时间】:2015-05-25 15:42:21
【问题描述】:
刚买了一个 MSP430 启动板
一直在阅读资料,但我无法从所有这些冗长的资料中学习如何将我的 C 程序粘贴到微控制器中。它们不客观(我从里面的手册开始,然后在德州网站上跟踪数百个链接。它们信息量很差)。
记住:
- 我是学生;
- 我的教授帮不上什么忙;
- 我对这个硬件完全陌生。在 C 编程方面也有点新……我们可以说是一年的练习;
- 我认为 KISS 原则是一个很好的实践:我的老师用一个 .c 文件、一个 makefile 和一个 make.exe 完成了一个 LED 烟花,我完全不知道它是什么以及如何工作。
下面,我到目前为止采取的步骤:(他们没有工作。这就是我在这里问的原因。我希望首先有一个非常客观的程序/更正,然后是头脑风暴)
已下载 mspgcc-20120406-p20120911
在 Code::Blocks 上安装,使用 Settings > Compiler - Toolchain Executables 选项卡
(我尝试过 Energia,但似乎不是一个非常正统的 .c 编辑器。我喜欢代码块或 devcpp,或者,作为第三种选择,notepad++ 甚至 Eclipse)
我也试过 CodeComposerStudio。在下载了包并开始了一个完整的项目并回答了无休止的问题后,我仍然不知道如何刷代码。
我什至做了一个简单的程序来让 LED 闪烁:
#include <stdio.h>
#include <msp430f5529.h>
#include <msp430.h>
void ConfigureCpu(void)
{
WDTCTL = 0x5a80;
// ACLK = 32768 Hz
// MCLK = 16000000 Hz
// SMCLK = 16000000 Hz
DCOCTL = 0x74;
BCSCTL1 = 0x0F;
BCSCTL2 = 0x88;
BCSCTL3 = 0x84;
P4DIR = 0xff;
}
void delayms(t)
{
int i, x;
for(i=0;i<=t;i++)
for(x=0;x<16000;x++);
}
int main()
{
ConfigureCpu();
while(1)
{
P4OUT=0x42; //0100 0010 = 0x42
delayms(1000);
P4OUT=0x00;
delayms(1000);
}
}
它不起作用有两个原因:
'DCOCTL' undeclared (first use in this function)|
And if I comment those registers, I get the following:
cannot open linker script file memory.x||No such file or directory|
.
L:\MSP\ 是我与此旅程相关的所有内容的目录
例子:
L:\MSP\GCC
L:\MSP\Flasher\
L:\MSP\Programs //我的 .c 存储在这里
(Code::Blocks 安装在 C: 的根目录下)
我希望有人告诉我我需要学习什么(如果可能的话,一步一步地从一开始到最后——从选择工具到上传到控制器)
【问题讨论】:
-
有些例子可以google。但是,这个问题不适用于stack overflow,因为它与观点相关且过于宽泛。
-
旁注:对于 MSP430,您应该避免使用签名数据类型。这是因为有时需要符号扩展,并且与零扩展(对于无符号)相比,它需要额外的指令。此外,您应该使用
stdint.h数据类型,而不是嵌入式编程的标准 C 类型。此外,延迟循环将被完全优化掉,因为任何体面的编译器都会检测到他们确实注意到了(编译器不知道你的意图)。如果您不想优化变量访问,请熟悉volatile。 这很重要 -
我刚刚被踢出超级用户,因为我的问题是“与编程相关的”。另外,如果你想帮助我,你得慢点:拜托,我在哪里使用了签名数据?这是编译器考虑 DCOCTL 变量的解释吗?为什么我从来没有听说过这个 stdint.h ?我应该使用什么来代替延迟循环(除了易失性解决方案)?
-
Ehm.. 无意冒犯,但如果你真的不知道你使用了有符号变量 (starter),你可能会先了解编程的基础知识,否则你真的很难。只是一个友好的提示。
-
MCU 外设寄存器是变量 - 当然。问题是:这不是初学者的课程或教程网站。而且 - 请理解 - 我没有时间在这里开始。这至少需要几个星期才能获得基础知识,而且我必须为谋生而工作(不是扎克伯格._}。