OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5164|回复: 8

调用例程给的sim900a模块的程序,我的单片机就不工作了。

[复制链接]

13

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-2-23
在线时间
1 小时
发表于 2014-3-11 15:01:59 | 显示全部楼层 |阅读模式

事情是这样的,我的main函数如下:
int main(void)
{
 Stm32_Clock_Init(9);  //时钟配置72M
 delay_init(72);
 uart_init(72,9600);   //串口1初始化 
    
 LCD_Init();        //初始化LCD
 LED_Init();     //初始化LED  A(8) D(2)

 LCD_Clear(BLACK);     //填充屏幕为黑色
 OINT_COLOR=RED;   //设置字体为红色
 LCD_ShowString(60,50,200,200,16,"Mini STM32"); 
 LCD_ShowString(60,70,200,200,16,"ATOM@ALIENTEK"); 
 
 


  


 
 delay_ms(1200);
 delay_ms(1200);
 LCD_Clear(GREEN);     //填充屏幕为黑色 

 USART2_Init(36,115200);  //初始化串口2  A(2)  A(3)      

 sim900a_init();     //sim900a初始化
// sim900a_send_mms();    //彩信测试
 while(1)
 {


 }
}
我就把这个程序下到mini板中,感觉板子就不工作了。
但是后来我把上面红色那个函数,也就是
sim900a_init();  给屏蔽了,再下载程序就运行正常了。
sim900a_init()的程序是这样的:
void sim900a_init(void)
{
 while(sim900a_send_cmd("AT","OK",100))//检测是否应答AT指令
 {
  LCD_ShowString(40,55,210,16,16,"can't find the divece");
  delay_ms(800);
  LCD_Fill(40,55,210,16,WHITE);
  delay_ms(400); 
 }  
 LCD_ShowString(40,55,200,16,16,"connect success..");

 if(sim900a_send_cmd("AT+CPIN?","OK",200)) 
  LCD_ShowString(40,75,200,16,16,"123456"); 
 else
  LCD_ShowString(40,75,200,16,16,"SIM IS OK");

}
这个函数和原子给的例程差不多。就是改了下。


麻烦大家看下有没有解决办法,,谢啦。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165538
金钱
165538
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-3-11 16:34:41 | 显示全部楼层
回复【楼主位】blatand:
---------------------------------
没反应的时候,屏幕显示了:can't find the divece么?
是不是死在这个里面?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-2-23
在线时间
1 小时
 楼主| 发表于 2014-3-11 18:03:35 | 显示全部楼层
回复【2楼】正点原子:
回复【楼主位】blatand: --------------------------------- 没反应的时候,屏幕显示了:can't find the divece么? 是不是死在这个里面?
---------------------------------
没有反应,就单片机直接不工作了。
不过后来试了下找到问题所在了,原来是我在另外的一个pciture.h和picture.c文件定义了一个数组u8 hua[4051],之后在sim900a.c那个文件中包含了那个picture.h文件。之后我就把那个数组的定义改成const u8 hua[4051]就好了。
后来想了下,这会不会是和keil的内存分配或者编译方式有关?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165538
金钱
165538
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-3-11 23:40:12 | 显示全部楼层
回复【3楼】blatand:
---------------------------------
是堆栈溢出了吧...
是定义的局部变量??
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-2-23
在线时间
1 小时
 楼主| 发表于 2014-3-12 15:45:12 | 显示全部楼层
回复【4楼】正点原子:
回复【3楼】blatand: --------------------------------- 是堆栈溢出了吧... 是定义的局部变量??
---------------------------------
定义的变量属于全局变量吧。
const的作用是告诉编译器我定义的这个数组的内容是不变的。
但是就很神奇的解决了我的问题。想不明白。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165538
金钱
165538
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-3-12 23:18:33 | 显示全部楼层
回复【5楼】blatand:
---------------------------------
在单片机里面,const修饰的内容,会直接存放在flash的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-2-23
在线时间
1 小时
 楼主| 发表于 2014-3-14 10:34:47 | 显示全部楼层
回复【6楼】正点原子:
回复【5楼】blatand: --------------------------------- 在单片机里面,const修饰的内容,会直接存放在flash的。
---------------------------------
恩恩,原来这样。学习了。谢谢。哈哈。
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2015-4-28
在线时间
0 小时
发表于 2015-4-28 19:56:23 | 显示全部楼层
楼主使用的什么型号的单片机控制的SIM900A??
大家共勉~
回复 支持 反对

使用道具 举报

13

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-2-23
在线时间
1 小时
 楼主| 发表于 2015-8-30 10:09:57 | 显示全部楼层
回复【8楼】XWQ_123:
---------------------------------
STM32F103
好久之前做的了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-15 11:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表