MSP430G2553使用CCS8.0编程注意点总结
[复制链接]
本文总结了在利用MSP430G2553做实验时的一些通用错误及注意点,用的软件为CCS8.0,供大家借鉴,具体工程不再给出,若有相似问题或本文有错误,可留言,我尽量回复。文末附有MSP430的用户手册、数据手册、学习笔记及《从零开启大学生电子设计之路》电子版及相关例程的下载地址,我也会尽量持续总结并更新。
【错误1】:在“UART_Global.h“中已经定义全局变量“extern unsigned int CHANGE_MODE;”,然而编译时仍然出现错误,错误提示为:error #10234-D: unresolved symbols remain。
【解决】:经过在网上查找并对比相关例程发现,在“.h”文件中定义后,仍需在相应的”.c“文件中再次声明,如在本错误中需在” UART_Global.c“中定义“unsigned intCHANGE_MODE=0;”,定义之后,编译成功。
【错误2】:在调试或运行结束后发现程序总是停止在ISR_TRAP.ASM文件中。
【解决】:此类问题出现的原因一般是声明了一个中断并使能,但是并未写该函数的中断处理函数,写上就可以解决该问题。
【错误3】:同时使用“I2C.c”和”UART_Init.c”编译时显示:error #10056: symbol "__TI_int06" redefined: first definedin "./src/I2C.obj"; redefined in "./src/UART_init.obj",查找好久但却找不到错误提示的"__TI_int06"。
【解决】:根据错误提示,“__TI_int06”被重定义,然而自己在编写程序时根本没有定义过该变量。在网上一个不起眼的角落里找到有帖子说“__TI_int04”指的是一个中断向量。结合“__TI_int06”的“TI”可以推测这可能是CCS中自带的头文件中的相关定义,最终查找后发现,这的确代表了一个中断向量!而且该中断向量在不同的文件中定义使用了两次!只需要将其中一个文件中断中的函数放在另一个文件的该中断处理函数中即可。然而在修改时需要注意将相关的变量一并移入另一个文件中,否则会报错。在本工程中,是将”UART_Init.c”中“#pragma vector =USCIAB0TX_VECTOR”相关的内容移入了“I2C.c”的“#pragma vector = USCIAB0TX_VECTOR”中,并用中断标志位判断中断的来源究竟I2C还是UART,并做出相应处理。具体程序可见本工程中的“I2C.c”。
在这里说明一下在CCS程序中搜索的步骤:首先,将待搜索的内容粘贴到程序中,选中该内容,单击右键,选“searchtext”,再选“project”即可进行搜索。
1.在程序的功能无法正常实现而需要调试时,最好将该程序分解为多个实现小功能的模块,使用断点调试或单步调试,在每次调试后观察寄存器和全局变量的值,逐个判断小模块的功能是否正常,最后调试总程序。
2.在涉及到时序配合时,分频系数的选择会在一定程度上影响各个信号的时序关系,应该根据示波器显示的信号时序选择合适的分频系数以保证功能正常。
3.在涉及到多个模块的功能时,一定要特别注意引脚、寄存器、中断向量是否存在同时使用的情况,如果存在,一定要利用软件编程将其分开,这样才能保证正常的功能。
4.在编写程序,尤其是在编写一个较大的工程时,一定要注意存储空间的分配与代码的简洁度问题,不然可能出现存储空间不足的问题。
5.在硬件连接上,我们尤其需要注意各个跳线槽的连接方式是否需要更改,比如在本工程中就需要去掉P1.6的跳线槽,并更改RXD、TXD跳线槽的连接方式,才能实现正常的功能。
6. 再向已有工程添加库函数时,需要点一下src,再点菜单栏的project 选择最下面那个properties;在弹出的界面里选include options 然后找到一个小加号;点击小加号 在弹出的界面点击workplace 然后找到刚才的src 最后一直点ok;这样才能使复制过去的库函数文件有效。
7.当功能不能正常实现时,可以重复下载几次,因为该开发板在跑程序时很容易出现问题;当功能突然不能正常实现时,很有可能重新下载一次程序就好了。
8.CCS中的编译方式和普遍应用的C语言编译方式有很大不同,这就造成了部分我们认为正确的语句在CCS的编译下会报错,这时我们首先去网上搜索一下相关信息,如果没有相关提示,就只好不断地尝试,直到编译通过并可以实现正常功能为止。
MSP430的用户手册、数据手册、学习笔记下载地址:MSP430用户手册、数据手册、学习笔记
《从零开启大学生电子设计之路》电子版及相关例程的下载地址:《从零开启大学生电子设计之路》电子版及相关例程
若有用,就请点个赞哦。
赞赏
1
查看全部赞赏