- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
0272.基于MSP430的防盗报警系统GSM学习笔记.doc
用MSP430F149单片机开发GSM模块变压器报警系统学习笔记
2015年1月29日18:15:20
目录:
GSM模块总是发送信息到串口
按键中断无法退出的问题
Flash写入问题
字符数组和字符串的拼接问题。
字符数组与字符串参考资料
1、GSM模块总是发送信息到串口
发送的数据如下图:
问题的原因是GSM模块频繁的重启导致的,一部分原因可能是电脑的USB接口电压不稳定,导致的GSM模块工作欠压状态,故而频繁重启。这个需要在后期注意。
2、按键中断无法退出的问题
按键是普通中断,但是却出现了进入中断却无法退出的问题。这个问题,出在了延时函数上,我选择的延时函数是利用定时器的,这个函数可能在中断函数中影响了中断标志,故而无法退出中断。
解决方法是使用普通的延时函数,不使用定时器就好了。
3、Flash写入问题
在对Flash写入时,使用的是别人写好的库函数,这个库函数有个问题,问题就是每次写一位数据,就会相应的将前面的数据都清除掉。
例如:在F0x1000位置写字符“a”,在F0X1001位置写字符“b”,在F0X1002位置写“c”。得到的结果就是“ c”。前面的数据都变成了0X00,被清空了。我们看一下程序:
void Flash_WriteB(uchar *address,uchar data8)
{
//FCTL1 = 0xA500+0x0002; //允许擦除
FCTL3 = 0xA500; //解锁
//*address = 0; //启动擦除
FCTL1 = 0xA500+0x0040; //允许写
*address = data8; //写入数据
FCTL1 = 0xA500;
FCTL3 = 0xA500+0x0010; //锁定
}
原因是开启了擦除指令,擦除指令把原来的数据都给擦除了。按理说,这个擦除指令应该只是擦除一个位置的数据,但是,却对其他位置的数据都给擦除了。所以,修改原函数,将原函数中的内容禁止擦除,这样,就解决了其他问题数据再写入新数据时被擦掉了。
4、字符数组和字符串的拼接问题。
首先,怎样拼接一个字符串?
我使用的方法是 (先包含一下string.h头文件)
定义一个足够长度的字符串空间,uchar test1[11];
Uchar *set=”SET”;
Uchar *read=”READ”;
strcpy(test1,set);
strcat(test1,read);
第一条语句是把set字符串的内容复制到test1当中去,然后,利用第二条指令,就是把第二个字符拼接到第一个字符串中去,拼接时,自动去掉第一个字符串末尾的‘\0’,并在重新拼接的字符串后面添加一个‘\0’。
当我把set部分换成是一个字符串数组时,即uchar set[11];时,使用同样的方法拼接字符串,得到的结果还是相似,但是却无法使用字符串发送函数(即以‘\0’为末尾识别的函数)。
因为字符数组的默认是不包含‘\0’的。我们定义一个字符数组uchar set[3]={‘s’,‘e’,‘t’};,这种定义并赋值方式,和uchar set[3];这种定义方式,实际的有效数据就是3,而字符数组的长度也是3.这个字符数组的末尾,没有‘\0’。故而导致发送函数出错。
我们应该如何定义字符数组呢?我们应该让字符数组的最后一位多一个‘\0’,这样发送函数才会不至于出错。我们可以这样定义:
uchar set[4]=;
我们多给字符数组了一位空间,这个空间,就是字符数组用来存放\0的。而我们在定义的时候,给字符数组赋值成了一个空的字符串,这样,每一个字符串的末尾都必定是\0,所以,我们的字符数组set[3]的数据就一定是\0,只要我们在后期处理函数中,不把这位数据给修改掉,这样,我们得到的最新字符数组的末尾就有了\0,可以用于字符串的拼接和发送了。
当然,拼接的时候,还需要一次强制转换。如下:
strcpy((char *)at_phone, (const char *)at_phone1);
strcat((char *)at_phone,(const char *)PHONEBUFF2);
strcat((char *)at_phone, (const char *)at_phone3);
UART_PutStr(0,(char *)at_phone);
下面是字符数组与字符串参考资料:
c语言字符数组与字符串的使用详解
本篇文章是对c语言中字符数组与字符串的使用进行了详细的分析介绍,需要的朋友参考下
1、字符数组的定义与初始化字符数组的初始化,最容易理解的方
您可能关注的文档
最近下载
- JB_T 10295-2014 深松整地联合作业机.pdf
- 清产核资审计报告模板(范文).pdf
- 教育部2024年专项任务项目(高校辅导员研究)申请评审书《大学生“社恐”现象的心理机制与有效应对研究 》.docx VIP
- GB∕T 15115-2024 压铸铝合金GB∕T 15115-2024 压铸铝合金.pdf
- 第六届(2024年)“信用电力”知识竞赛活动总试题库-上(单选题汇总).docx
- 庄子(最完整的版本).pdf
- 《我爱这土地》PPT课件.ppt
- 雷雨-剧本原文-高中语文雷雨剧本原文.docx VIP
- 国家开放大学《人体解剖生理学》形考任务1-4附参考答案.pdf VIP
- 瑜伽社团总结PPT.pptx VIP
文档评论(0)