MSP430常见问题之指令系统类

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

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语言编程的话建议把变量申明为全局或者静态。

相关文章
|
10月前
|
算法 安全 程序员
sm2国密算法的纯c语言版本,使用于单片机平台(静态内存分配)
sm2国密算法的纯c语言版本,使用于单片机平台(静态内存分配)
XV-440-10TVB-1-20 规范并创建了通用模块产品理念
XV-440-10TVB-1-20 规范并创建了通用模块产品理念
156 0
XV-440-10TVB-1-20 规范并创建了通用模块产品理念
RK3399平台开发系列讲解(内核入门篇)1.51、platform_get_resource 函数实现细节
RK3399平台开发系列讲解(内核入门篇)1.51、platform_get_resource 函数实现细节
95 0
RK3399平台开发系列讲解(内核入门篇)1.51、platform_get_resource 函数实现细节
|
C语言 Perl
西门子S7-200 SMART位逻辑指令概述及应用实例
本篇文章我们来学习西门子S7-200 SMART的位逻辑指令。
西门子S7-200 SMART位逻辑指令概述及应用实例
|
C语言 Perl
西门子S7-200 SMART位逻辑指令概述及应用举例
本篇文章我来带领大家学习西门子S7-200 SMART的位逻辑指令。位逻辑指令是PLC编程中最基本、使用最频繁的指令,按不同的功能和用途具有不同的形式,总的来说可以分为下述几大类:标准位逻辑指令、置位/复位指令、立即位逻辑指令、其他位逻辑指令。
西门子S7-200 SMART位逻辑指令概述及应用举例
|
Java fastjson 数据库连接
字节码操作框架介绍与实践(以ASM和Javassit为例)
ASM是java字节码操作领域公认的标准,被众多知名的开源框架使用,如cglib、mybatis,fastjson等。通过ASM提供的API,我们可以方便的修改类文件的字节码,并ASM会自动帮我们做很多事情,如维护常量池的索引、计算栈大小max_stack,局部变量表大小max_locals等。ASM提供了两种类型的API,基于事件触发的core api和基于对象的tree api,下面主要介绍基
954 0
字节码操作框架介绍与实践(以ASM和Javassit为例)
硬件开发笔记(九): 硬件开发基本流程,制作一个USB转RS232的模块(八):创建asm1117-3.3V封装库并关联原理图元器件
有了原理图,可以设计硬件PCB,在设计PCB之间还有一个协同优先动作,就是映射封装,原理图库的元器件我们是自己设计的。为了更好的表述封装设计过程,本文描述了一个创建asm1117-3.3V封装,将原理图的元器件关联引脚封装。
硬件开发笔记(九): 硬件开发基本流程,制作一个USB转RS232的模块(八):创建asm1117-3.3V封装库并关联原理图元器件
|
安全 Linux API
ARMv9机密计算架构Realm技术预览
这两天科技新闻区被ARMv9的新闻刷屏了。ARMv9号称十年以来最大重大变革,因此让我们看下ARMv9中机密计算相关的新特性Realm。 注:本文是对[Introducing the Confidential Compute Architecture](https://www.anandtech.com/show/16584/arm-announces-armv9-architecture/
669 0
MIPS R6架构现已可供开放使用
MIPS在继去年年底宣布开源后,MIPS 32位和64位架构的最新版本已于3月28日推出了,在MIPS Open网页可供任何人下载使用。那么,今天在MIPS Open上下载的具体内容是什么?第一个版本包括:32和64位MIPS指令集架构(ISA)的开源版本,版本6MIPS SIMD扩展MIPS DSP扩展MIPS多线程MIPS MCUmicroMIPS代码压缩MIPS虚拟化MIPS Open还提供其第一套“可交付成果”。
2113 0