基于MSP430的防盗报警系统GSM学习笔记

用MSP430F149单片机开发GSM模块变压器报警系统学习笔记2015年1月29日18:15:20目录:1、GSM模块总是发送信息到串口2、按键中断无法退出的问题3、Flash写入问题4、字符数组和字符串的拼接问题。字符数组与字符串参考资料---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---1、GSM模块总是发送信息到串口发送的数据如下图:问题的原因是GSM模块频繁的重启导致的,一部分原因可能是电脑的USB接口电压不稳定,导致的GSM模块工作欠压状态,故而频繁重启。这个需要在后期注意。2、按键中断无法退出的问题按键是普通中断,但是却出现了进入中断却无法退出的问题。这个问题,出在了延时函数上,我选择的延时函数是利用定时器的,这个函数可能在中断函数中影响了中断标志,故而无法退出中断。解决方法是使用普通的延时函数,不使用定时器就好了。---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---3、Flash写入问题在对Flash写入时,使用的是别人写好的库函数,这个库函数有个问题,问题就是每次写一位数据,就会相应的将前面的数据都清除掉。例如:在F0x1000位置写字符“a”,在F0X1001位置写字符“b”,在F0X1002位置写“c”。得到的结果就是“c”。前面的数据都变成了0X00,被清空了。我们看一下程序:voidFlash_WriteB(uchar*address,uchardata8){//FCTL1=0xA500+0x0002;//允许擦除FCTL3=0xA500;//解锁//*address=0;//启动擦除FCTL1=0xA500+0x0040;//允许写*address=data8;//写入数据FCTL1=0xA500;FCTL3=0xA500+0x0010;//锁定}原因是开启了擦除指令,擦除指令把原来的数据都给擦除了。按理说,这个擦除指令应该只是擦除一个位置的数据,但是,却对其他位置的数据都给擦除了。所以,修改原函数,将原函数中的内容禁止擦除,这样,就解决了其他问题数据再写入新数据时被擦掉了。4、字符数组和字符串的拼接问题。首先,怎样拼接一个字符串?---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---我使用的方法是(先包含一下string.h头文件)定义一个足够长度的字符串空间,uchartest1[11];Uchar*set=”SET”;Uchar*read=”READ”;strcpy(test1,set);strcat(test1,read);第一条语句是把set字符串的内容复制到test1当中去,然后,利用第二条指令,就是把第二个字符拼接到第一个字符串中去,拼接时,自动去掉第一个字符串末尾的‘\0’,并在重新拼接的字符串后面添加一个‘\0’。当我把set部分换成是一个字符串数组时,即ucharset[11];时,使用同样的方法拼接字符串,得到的结果还是相似,但是却无法使用字符串发送函数(即以‘\0’为末尾识别的函数)。因为字符数组的默认是不包含‘\0’的。我们定义一个字符数组ucharset[3]={‘s’,‘e’,‘t’};,这种定义并赋值方式,和ucharset[3];这种定义方式,实际的有效数据就是3,而字符数组的长度也是3.这个字符数组的末尾,没有‘\0’。故而导致发送函数出错。我们应该如何定义字符数组呢?我们应该让字符数组的最后一位多一个‘\0’,这样发送函数才会不至于出错。我们可以这样定义:---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---ucharset[4]="";我们多给字符数组了一位空间,这个空间,就是字符数组用来存放"\0"的。而我们在定义的时候,给字符数组赋值成了一个空的字符串,这样,每一个字符串的末尾都必定是"\0",所以,我们的字符数组set[3]的数据就一定是"\0",只要我们在后期处理函数中,不把这位数据给修改掉,这样,我们得到的最新字符数组的末尾就有了"\0",可以用于字符串的拼接和发送了。当然,拼接的时候,还需要一次强制转换。如下:strcpy((char*)at_phone,(constchar*)at_phone1);strcat((char*)at_phone,(constchar*)PHONEBUFF2);strcat((char*)at_phone,(constchar*)at_phone3);UART_PutStr(0,(char*)at_phone);下面是字符数组与字符串参考资料:c语言字符数组与字符串的使用详解本篇文章是对c语言中字符数组与字符串的使用进行了详细的分析介绍,需要的朋友参考下---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?