【问题标题】:Tools and steps on programming MSP430MSP430 编程工具和步骤
【发布时间】: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 外设寄存器变量 - 当然。问题是:这不是初学者的课程或教程网站。而且 - 请理解 - 我没有时间在这里开始。这至少需要几个星期才能获得基础知识,而且我必须为谋生而工作(不是扎克伯格._}。

标签: c msp430 launchpad


【解决方案1】:

盒子里的传单描述了该怎么做。

转到 www.ti.com/launchpad 并下载 Code Composer Studio 4 或 IAR Embedded Workbench 试用版。

TI 页面还包含您可能需要的所有其他信息。

【讨论】:

    【解决方案2】:

    查看我系统上的msp430f5529.h 文件,该芯片似乎没有这些寄存器,或者它们不在标题中。代码只是将寄存器设置为一个幻数,没有解释、注释或计算,所以很难弄清楚目的是什么。 (它可能正在尝试配置时钟。)

    其次,您可能需要芯片的链接器文件,以便编译器(链接器阶段)可以设置正确的内存地址。

    代码实际上看起来像一个闪烁的,但意味着不同的芯片或编译器。它可能会起作用,但您需要为您的设置更改不同的部分(移植它)。这会很有教育意义,但可能不是你想花时间做的事情。

    为了解决这两个问题,我首先要为您拥有的特定芯片/电路板设计一个项目。构建它并查看它是否有效。然后你知道你的编译器和项目工作。您可以继续为您的应用程序修改它。

    【讨论】:

    • 抱歉耽搁了。艰难的一个月。而你,先生,是对的!那些是旧的寄存器。它们被统一时钟系统(slau208n 第 184 页)取代。感谢您指出。我的芯片是msp430F5529。 CCS 有一个更好的闪光灯示例。在他们的例子中,他们只有#inlcude。该库自动加载另一个库,即特定的 msp430F5529。它有效。现在必须学习这个新系统...再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    相关资源
    最近更新 更多