zoukankan      html  css  js  c++  java
  • MSP430常见问题之指令系统类

    Q1. IAR中怎样描述P2OUT.3脚,#define LCD_cs1 P2OUT.3; 对吗?
    A1:430 不能位寻址,所以一般的位操作,都通过“与”来作用。#define LCD_cs1 (P2OUT&BIT3 )。

    Q2.__intrinsic是什么意思
    A2:本征函数,不是C语言标准库,而是和MSP430汇编直接对应的函数,比如:
    _NOP()
    _EINT()
    LPM0
    引用msp430xxxx.h,默认引用的头文件

    Q3:在程序里循环调用了sprintf函数,当循环了几次后程序就跑飞了,是堆栈大小不够吗?还有sprintf到底需要多大的堆栈,单步走了下,发现它使用堆栈都不是连续的?
    A3:有可能是的sprintf 函数堆栈数据把跳转地址挤掉,可以调开堆栈看一下。

    Q4:数据类型Small,Medium,Large的区别,以及怎么访问大于0X10000的地址空间?数据放在大于0X10000的地址空间中,怎么去访问?同时Small,Medium,Large 在何处可以体现它们的区别?
    A4: 可以访问。值得注意的是option 里的General Option 选项内的数据类型得选择Large,程序大小,RAM使用,运行速度都不一样。
    1.F5XX 430X
    2.选择Large small medium 产生效果是改变指针变量所占字节个数.IAR 中指针变量默认2 个字节,选择large
    占用4 个字节,那么指针就可以访问超过64K范围的地址.
    3.可以采用IAR 内部函数, */
    void __data20_write_char (unsigned long __addr,
    unsigned char __value);
    void __data20_write_short(unsigned long __addr,
    unsigned short __value);
    void __data20_write_long (unsigned long __addr,
    unsigned long __value);
    unsigned char __data20_read_char (unsigned long __addr);
    unsigned long __data20_read_long (unsigned long __addr);

    Q5:浮点数运算问题,既然2.2A编译器能实现64浮点位运算,那么它的运算程序在哪个文档里。
    A5:要使用64位的浮点运算需要设置编译器首先选择project->option->general->target->dou××e floating point size选中"64"再选择project->option->XLINK->include->library->cl430d.r43用c++的朋友要选择dl430d.r43库建议用整型数进行运算,比如像开方,64 位浮点数要用几十毫秒,而整型数随数据大小只要几微秒到几毫秒不等。

    Q6:局部变量的问题,在中断服务程序中开中断响应其他中断,发现中断服务中定义的局部变量老被改动,换成全局变量没问题。想问一下这是啥原因?还想问一下c编程过程中应注意的细节?
    A6:局部变量只是暂存变量,一般编译器会使用通用寄存器来保存这个变量值,汇编编程的话需要圧栈操作,C语言编程的话建议把变量申明为全局或者静态。

  • 相关阅读:
    编码以及⼩知识点补充
    基本数据类型(dict)
    基本数据类型(list,tuple)
    python基础
    Eclipse使用技巧
    条件与(&&)和逻辑与(&)以及条件或(||)和逻辑或(|)区别
    到底怎么样才叫看书?——Tony Zhao's
    Jsp servlet 值传递。。
    (06)odoo报表
    (05)odoo数据库和业务操作
  • 原文地址:https://www.cnblogs.com/lihuidashen/p/3329431.html
Copyright © 2011-2022 走看看