首页 | 模拟电子 | 单片机 | 电源技术 | 通信/总线 | 工业控制 | 传感器件 | 我要投稿 | 访客留言 | 资料下载 | 内容搜索
>首页 -> 技术文章 -> 单片机

TOP

MSP430F449调试技巧2则
[ 录入者:elitist | 时间:2008-01-23 19:14:26 | 作者: | 来源: | 浏览:31次 ]

堆栈监视
    MSP430F449片内集成2K的RAM、60K的FLASH,对于一般的运用60K的FLASH已经足够,但2K的RAM显然很紧张,因此留给程序堆栈用的RAM就很小,堆栈一旦溢出程序将出现不可预测的错误,一般编译器是无法检测出堆栈的空间是否够用,而专门用于检测堆栈的软件价格非常昂贵,以下是笔者写的一段小汇编程序可以在函数中调用以随时监视程序的堆栈是否溢出。
// int WatchStack(void);
                        RSEG UDATA0
                        RSEG IDATA0
                        RSEG CODE
WatchStack: MOV SP,R12;
                        SUB #(sizeof UDATA0+sizeof IDATA0+200H),R12;
                        RET;
一旦 int WatchStack(void )函数的返回值为负数,则堆栈溢出 . 

程序计数器
    IAR公司的调试软件不提供程序的运行周期监视,我们在调试的过程中往往要知道程序的执行时间。我们可以利用定时器作为周期的监视器。如以下的一段小程序 
unsigned long Cycle;
#define CYCLES (Cycle<<16) + TBR
TBCTL = TBSSEL1 + TBCLR + TBIE;
TBCTL |= MC1;
interrupt [TIMERB1_VECTOR] void GoCycle (void) {
                      TBCTL &= ~TBIFG;
                       Cycle++;
}
这样通过监视“CYCLES”的值便知道程序的执行周期。

[上一篇]单片机硬件系统设计原则 [下一篇]基于单片机的舵机控制

相关栏目

最新文章

热门文章

推荐文章

相关文章

广告位