|
|
前往: |
| 为什么定义的数组超过60,会溢出呢? |
| 发表人 | 内容 | |
|---|---|---|
| 2011/10/30 13:48 |
|
|
|
[楼主位] zhuosifan
等级:
注册时间:![]() 2011/03/22 22:50 文章: 87 离线 |
做了两个星期的GSM,感谢群里的一个网友提供的51GSM温度报警器,我想实现的的功能可远不止这些,我想在他的框架里面做一个GSM+NRF24L01的远程无线控制器,可以接收手机发过来的信息,然后根据命令来选择哪个继电器的开关,控制哪个房间的电器等,现在温度报警器已经基本完成,现在遇到的问题是 修改里面定义的
char RxBuf[RxBuf_N]; //定义串口接收数据缓冲区 uchar RxPoint; //Rx缓冲区指针 #define RxBuf_N 60 //定义接收缓冲区大小为50bytes //问题出在这里,为什么不能定义超过60的数据缓冲器呢? 如果不改的话,发送过来的短信可能会接收不完全,这样就读取不了结束的字符 OK了, 下面的这个函数返回的值是要查找的值吗?请各位大哥回答下,谢谢,小弟C语言不太行,只能做基本的 比如我要在LookFor_Str(RxBuf, "OK"),在RxBuf里面查找OK,返回的值是OK吗? 我能否在这样判断if(p=="OK") 然后返回一个数值呢? //查找字符串,在s中查找t
//返 回 值: s_temp(t在s中的位置)成功 0失败
char *LookFor_Str(uchar *s, uchar *t)
{
uchar *s_temp;
uchar *m_temp;
uchar *t_temp;
if (s == 0 ||t == 0) return 0;
for (s_temp = s; *s_temp != '\0'; s_temp++)
{
m_temp = s_temp;
for (t_temp = t; *t_temp == *m_temp; t_temp++, m_temp++);
if (*t_temp == '\0') return s_temp;
}
return 0;
}
在贴上源码 这篇文章被编辑了 1 次. 最近一次更新是在 2011/10/30 13:51 |
|
|
||
| 2011/10/30 13:52 |
|
|
|
[1楼] zhuosifan
等级:
注册时间:![]() 2011/03/22 22:50 文章: 87 离线 |
![]() 图片 这篇文章被编辑了 1 次. 最近一次更新是在 2011/10/30 13:54 |
|
|
||
| 2011/10/30 13:53 |
|
|
|
[2楼] Tardis
等级:
注册时间:![]() 2011/07/17 14:35 文章: 621 离线 |
因为你没把数组放flash里,加code了放flash里,例如:unsigned char code shit[]={};
|
|
|
Time And Relative Dimension In Space. |
||
|
||
| 2011/10/30 13:54 |
|
|
|
[3楼] zhuosifan
等级:
注册时间:![]() 2011/03/22 22:50 文章: 87 离线 |
Tardis 这么快就回复了,谢谢
|
|
|
||
| 2011/10/30 13:55 |
|
|
|
[4楼] zhuosifan
等级:
注册时间:![]() 2011/03/22 22:50 文章: 87 离线 |
我这就试试,能加为你好友吗?小弟今年也毕业了,准备找工作, 大专生
|
|
|
||
| 2011/10/30 14:01 |
|
|
|
[5楼] zhuosifan
等级:
注册时间:![]() 2011/03/22 22:50 文章: 87 离线 |
加了CODE的话就不可以改变里面的值了
|
|
|
||
| 2011/10/30 14:51 |
|
|
|
[6楼] fengye1966
等级:
注册时间:![]() 2011/10/27 15:13 文章: 53 来自: 北京 离线 |
这是STM32开发板配套程序里的问题吗?
这篇文章被编辑了 1 次. 最近一次更新是在 2011/10/30 14:51 |
|
|
||
| 2011/10/30 18:50 |
|
|
|
[7楼] zhuosifan
等级:
注册时间:![]() 2011/03/22 22:50 文章: 87 离线 |
肯定不是的,我用51来搞的,等熟悉了就用STM32来搞,hh
|
|
|
||
| 2011/10/30 20:04 |
|
|
|
[8楼] zhuosifan
等级:
注册时间:![]() 2011/03/22 22:50 文章: 87 离线 |
请原子老大回答下,现在我定义为idata又可增加到100
|
|
|
||
| 2011/10/30 21:41 |
|
|
|
[9楼] 正点原子
等级:
注册时间:![]() 2010/12/02 10:41 文章: 8089 来自: 湖南 在线 |
回复【8楼】 zhuosifan :
--------------------------------- 51我也不太熟. 不过这东西,51就一两百个字节的内存.还要划分一部分作为堆栈.定义数组大了,影响到堆栈区,肯定就死的. 建议使用大内存的51,stc系列的,应该可以.(至少1K内存吧.) idata的说明见:http://wenku.baidu.com/view/341c91c62cc58bd63186bd7c.html |
|
|
我的淘宝小店:http://shop62103354.taobao.com |
||
|
||
| 2011/10/31 00:23 |
|
|
|
[10楼] zhuosifan
等级:
注册时间:![]() 2011/03/22 22:50 文章: 87 离线 |
谢谢老大了!我明天接着弄
|
|
|
||
| 2011/11/09 17:46 |
|
|
|
[11楼] luomcs51
等级:
注册时间:![]() 2011/11/09 17:35 文章: 13 离线 |
我也在解决这个问题,不知兄弟解决了没有, 我修改过定义值 最多就是收个64位,再多就不行
|
|
|
||
| 2012/01/04 21:20 |
|
|
|
[12楼] zhaoxukiller
等级:
注册时间:![]() 2012/01/04 21:11 文章: 1 来自: 吉林 离线 |
请将target中的memory mode改成 PDATA试试,不过启动速度慢
另外咋发图啊 |
|
|
努力学习STM32中 |
||
|
||
|
|
||
|
| 前往: |