微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > MSP430F5529 番外(三)一些问题解答及中断系统说明

MSP430F5529 番外(三)一些问题解答及中断系统说明

时间:11-28 来源:互联网 点击:
(1)CCSV5中变量长度。
不同的芯片或者不同的编译环境下,变量长度的定义也是不同的。一般情况下,大家对变量长度也都不是很在意。但是,在做测量或者节约内存的时候,就有必要了,否则很可能造成变量溢出或者浪费空间。下表给出常用的几个变量类型的长度:默认值请看下表:

(2)大家新建工程的时候,有时候会在工程里面一个个添加很多头文件以及相应的源文件。如液晶显示头文件HAL_Dogs102x6.h,这个头文件很坑爹,想要用它,那么就不得不一个个添加十几个相关联的文件。于是,问题就来了,但你头文件添加太多的时候,编译很可能就会报错:“ program will not fit into”,意思大概就是内存不够。内存一般来说不会不够用的。问题可能在于:添加头文件的时候没有设置路径:

或者最简便的方法就是:把官方的LAB例程中的主函数换成你的,其余不变,这样会很方便(不用一个个添加头文件了)。可能依然会出现上述问题,这时候只需要换一个不同编号(1-7)的LAB文件再“偷天换日”就可以了。

(3)MSP430F5529 不是自带LCD Driver的,是通过SPI来控制外部的点阵液晶显示的,并通过P7.6输出PWM来控制液晶背光的。
但是由于,P7.6正好是TB0.4,即定时器TimerB0的4通道,因此使用TB0时,极有可能会更改其CCR0的值。导致输出PWM波周期改变了。其结果就是导致液晶屏屏幕变暗。
(4)对于430而言,存在各种各样的中断。中断有时候确实很方便,但是对于中断使用,我觉得应该尽量少用尤其是中断嵌套的情况,更应该避免发生。因为多中断时,很可能出现一些难以控制和预料的意外。
当同时有多个中断来的时候才有优先级的考虑(优先级顺序可查看下面向量表)。

有中断响应以后自动关闭总中断,这个时候即使来更高优先级的中断都不会响应。
要中断嵌套的话,就必须在中断中打开总中断。

实现中断嵌套需要注意以下几点:

1)430默认的是关闭中断嵌套的,除非你在一个中断程序中再次开总中断EINT;

2)当进入中断程序时,只要不在中断中再次开中断,则总中断是关闭的,此时来中断不管是比当前中断的优先级高还是低都不执行;

3)若在中断A中开了总中断,则可以响应后来的中断B(不管B的优先级比A高还是低),B执行完再继续执行A。注意:进入中断B后总中断同样也会关闭,如果B中断程序执行时需响应中断C,则此时也要开总中断,若不需响应中断,则不用开中断,B执行完后跳出中断程序进入A程序时,总中断会自动打开;

4)若在中断中开了总中断,后来的中断同时有多个,则会按优先级来执行,即中断优先级只有在多个中断同时到来时才起做用!中断服务不执行抢先原则。

5)对于单源中断,只要响应中断,系统硬件自动清中断标志位,对于TA/TB定时器的比较/捕获中断,只要访问TAIV/TBIV,标志位倍被自动清除;

(5)如何将数字转化为对应的字符
大家以后经常会碰到如何将自己得到的一个整形或者浮点型数据显示到LCD上面去,LCD只能识别ASCII码,不能直接识别数字。因此,就要用到将数字转化为ASCII码的。(一位一位转化)
a) 直接按照ASCII码的规则,把十进制数加上0x30就得到了相应的ASCII码;
b) 建一个字符数组CharCode[10]=“0123456789”,
则CharCode[i],就是十进制数字i对应的ASCII码;
c) C语言中stdlib.h头文件中定义的有将数值转化为字符串的函数,可以调用,不过个人不推荐;

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top