标签: msp430

microSD卡FAT模块

我最近一直使用GHI Electronics的uALFAT microSD板进行数据记录,但我的可靠性一直存在问题.它的一些函数调用有时需要比我能处理的时间长得多.我目前正在使用MSP430微控制器与uALFAT通信.

我可以使用哪些类似的板而不是希望更可靠的uALFAT?

要么

如果我需要设计自己的接口板来使用MSP430,那么最有利的OEM解决方案是什么?

embedded logging sd-card fat32 msp430

1
推荐指数
1
解决办法
1292
查看次数

多种获取地址的方法

在IAR C/C++编译器手册中,它声明编写优化友好的源代码:

避免使用&运算符获取局部变量的地址.由于两个主要原因,这是低效的.首先,变量必须放在内存中,因此不能放在处理器寄存器中.这会导致代码越来越大.其次,优化器不能再假设局部变量不受函数调用的影响.

还有哪些方法可以获取局部变量的地址?显然我知道,如果我有一个指向该变量的指针,我可以使用它,如果我有一个数组,我可以使用数组名称,但是我不知道任何其他方法来获取局部变量的地址而不是&运营商.

c msp430 iar

1
推荐指数
1
解决办法
99
查看次数

C中for循环中的奇怪指针算法

我用IAR EBW编程msp430.

我的表达式如下:

adres = (uint_fast16_t *) 0x8602 + (0x0200*i);
Run Code Online (Sandbox Code Playgroud)

在for循环中,以便我随着每个循环增加.出于某种原因,它会跳过两个地址中的每一个并给我:

0x8602
0x8A02
0x8E02
Run Code Online (Sandbox Code Playgroud)

等等.因此跳过0x8802,也就是0x8C02等等.

为什么会这样?

////下面是完整代码,请注意我被放置在三个循环中,每个人都给出相同的结果.////还要注意在调试时检查时显示为:1,2,3 ......等

#include "io430.h"
#include <stdint.h>

int main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;

  // Inicjalizuj piny GPIO
  P3OUT &= ~(BIT4+BIT5);        // zeruj warto?ci by zapobiec krótkotrwa?ym impulsom
  P3DIR |= BIT4; // ustaw pin3.4 UCA0TXD oraz piny 3.0 CS, 3.1 SIMO, 3.3 CLK jako wyj?cie
  P3DIR &= ~(BIT5);               // ustaw pin3.5 UCA0RXD oraz …
Run Code Online (Sandbox Code Playgroud)

c pointers pointer-arithmetic msp430 iar

1
推荐指数
1
解决办法
195
查看次数

编译器忽略if语句

这可能是一个简单的问题所以,我希望你能指出我正确的方向.

我正在用C编写一个简单的IO程序.在我的程序中间,我有一个永不执行的if语句.当我试图在if语句中添加一个断点时,我意识到这一点只是为了让它自动删除并向下推过if语句块.进一步深入研究问题,c编译器不会为我的if语句创建任何汇编代码.以下是我的代码片段和程序集输出.

码:

void sendData(unsigned int val1 ){
    P1OUT |= 1;
    if ((val1 & 0x8000 ) == 0x8000)
        wait(T1H);
    else
        wait(T1L);
    P1OUT &= ~(1);
}
Run Code Online (Sandbox Code Playgroud)

*注意:是的,我确实有另一个叫做wait的函数,可以延迟多个周期.

部件:

 13     P1OUT |= 1;
      sendData():
 c0ae:   D3D2 0021           BIS.B   #1,&Port_1_2_P1OUT
 18     P1OUT &= ~(1);
 c0b2:   C3D2 0021           BIC.B   #1,&Port_1_2_P1OUT
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

c compiler-construction assembly if-statement msp430

1
推荐指数
1
解决办法
213
查看次数

在高编译器优化模式下在msp430中定时使用

我在MSP430中使用了具有高编译器优化的定时器A,但发现我的定时器代码在使用高编译器优化时失败.如果没有使用优化,代码工作正常.

此代码用于实现1 ms计时器滴答.timeOutCNT在中断时增加.

以下是代码,

        //Disable interrupt and clear CCR0
        TIMER_A_TACTL = TIMER_A_TASSEL |                        // set the clock source as SMCLK
            TIMER_A_ID |                            // set the divider to 8
            TACLR |                                 // clear the timer
            MC_1;                   // continuous mode
        TIMER_A_TACTL &= ~TIMER_A_TAIE;                         // timer interrupt disabled
        TIMER_A_TACTL &= 0;                             // timer interrupt flag disabled

        CCTL0 = CCIE;                                   // CCR0 interrupt enabled
        CCR0 = 500;
        TIMER_A_TACTL &= TIMER_A_TAIE;              //enable timer interrupt
        TIMER_A_TACTL &= TIMER_A_TAIFG;             //enable timer interrupt
        TACTL = TIMER_A_TASSEL + MC_1 …
Run Code Online (Sandbox Code Playgroud)

c timer msp430

0
推荐指数
1
解决办法
1555
查看次数

内部for循环被忽略

我正在尝试使用Code Composer Studio为MSP-EXP430G2制作一个教程,使LED闪烁.最初,它有一个无限循环闪烁:

   for(;;)
    // This empty for-loop will cause the lines of code within to loop infinitely

        {

            P1OUT ^= 0x01;
    // Toggle P1.0 using exclusive-OR operation (^=)

    // P1OUT is another register which holds the status of the LED.
    // '1' specifies that it's ON or HIGH, while '0' specifies that it's OFF or LOW
    // Since our LED is tied to P1.0, we will toggle the 0 bit of the P1OUT register

            for(i=0; i< 20000; i++);

    // …
Run Code Online (Sandbox Code Playgroud)

c msp430

0
推荐指数
1
解决办法
87
查看次数

如果值已签名或未签名,汇编代码如何知道?

当有时我的代码将某个值视为已签名时,我会感到非常困惑,有时它会在比较值时将其视为无符号值.代码如何知道值是有符号还是无符号?

assembly unsigned signed msp430 texas-instruments

0
推荐指数
1
解决办法
1259
查看次数

什么是tst.b或tst.w指令呢?

我理解它应该是"测试目的地",但究竟是什么意思呢?.w和.b的操作如下:dst + 0FFFFh + 1 dst + 0FFh + 1


embedded assembly msp430

0
推荐指数
1
解决办法
2264
查看次数

为什么在我的 msp430g2553 微控制器中,字符“c”存储为 ff63 而不是 0063?

我在将字符“c”的 ASCII 值转换为十六进制时遇到了差异。根据我的理解,“c”的 ASCII 值是十进制的 99 和二进制的 01100011。但是,当我将此二进制值转换为十六进制时,我预计会得到 0063,但相反,我得到的是 FF63。

在此输入图像描述

c embedded microcontroller computer-science msp430

0
推荐指数
1
解决办法
58
查看次数

错误:在function_name之前预期'=',',',';','asm'或'__attribute__'

这是错误:

msp430-gcc -mmcu=msp430g2553 -Os   -c -o gpio_test.o gpio_test.c
In file included from msp430_lib.h:9:0,
                 from gpio_test.c:4:
gpio_api.h:20:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘gpio_init’
gpio_api.h:27:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘gpio_ioctl_pull_en’
gpio_api.h:35:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘gpio_write’
make: *** [gpio_test.o] Error 1
Run Code Online (Sandbox Code Playgroud)

这是错误来源的头文件(行号不匹配,因为我从文件中删除了所有注释以缩短它):

/* gpio_api.h - General Purpose Input/Output API
*/

#ifndef MSP_GPIO_API_H
#define MSP_GPIO_API_H

#include  <msp430g2553.h>

#define INPUT   0
#define OUTPUT  1
#define DOWN    0
#define UP      1 …
Run Code Online (Sandbox Code Playgroud)

c gcc msp430

-1
推荐指数
1
解决办法
9906
查看次数