- 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、字符数组的定义与初始化字符数组的初始化,最容易理解的方
您可能关注的文档
- (CTICallCenter)系统技术简介-呼叫中心系统.doc
- (GPS)簡介.doc.doc
- (2分)A.-舟山教育学院.ppt
- (培训课件1).ppt-番禺区总工会.ppt
- '光华'轮的-中国国际海运网.ppt
- 02288自动控制原理与系统考纲-上海交通大学-成人高等教育.doc
- 05汉字.ppt.ppt
- 06演算法與資料結構.doc
- 06级高一生物《遗传与进化》期中考练习4.doc
- (T5D06)電路學(1010312初版)增補資料.doc
- 2024年锦州师范高等专科学校招聘笔试真题及参考答案详解1套.docx
- 2024年长春东方职业学院招聘笔试真题及完整答案详解1套.docx
- 2024年重庆艺术工程职业学院招聘笔试真题及参考答案详解.docx
- 2024年重庆青年职业技术学院招聘笔试真题及参考答案详解.docx
- 2024年重庆青年职业技术学院招聘笔试真题及参考答案详解一套.docx
- 2024年重庆青年职业技术学院招聘笔试真题参考答案详解.docx
- 2024年重庆科技大学招聘笔试真题及答案详解1套.docx
- 2024年重庆科创职业学院招聘笔试真题参考答案详解.docx
- 2024年重庆科创职业学院招聘笔试真题含答案详解.docx
- 2024年重庆科技职业学院招聘笔试真题及答案详解一套.docx
文档评论(0)