OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...
查看: 8194|回复: 12

关于STM32读取GSM模块的短信来控制电路的实现

[复制链接]

  离线 

4

主题

9

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2013-5-7
在线时间
0 小时
发表于 2013-5-7 10:53:28 | 显示全部楼层 |阅读模式
通过手机发送短信给GSM模块(sim300模块),STM32读取GSM收到的短信,按照短信来控制电路的灯亮或其他功能,请问该怎么实现,这段程序是实现接收的吗?按照这个写该怎么实现,附件是串口的源文件和GPRS发送短信的源文件,求指导接收短信怎么实现????

#ifdef EN_USART1_RX   //如果使能了接收
//串口1中断服务程序
//注意,读取USARTx->SR能避免莫名其妙的错误  
u8 USART_RX_BUF[64];     //接收缓冲,最大64个字节.
//接收状态
//bit7,接收完成标志
//bit6,接收到0x0d
//bit5~0,接收到的有效字节数目
u8 USART_RX_STA=0;       //接收状态标记  
  
void USART1_IRQHandler(void)
{
u8 res;    
if(USART1->SR&(1<<5))//接收到数据
{  
res=USART1->DR; 
if((USART_RX_STA&0x80)==0)//接收未完成
{
if(USART_RX_STA&0x40)//接收到了0x0d
{
if(res!=0x0a)USART_RX_STA=0;//接收错误,重新开始
else USART_RX_STA|=0x80; //接收完成了 
}else //还没收到0X0D
{
if(res==0x0d)USART_RX_STA|=0x40;
else
{
USART_RX_BUF[USART_RX_STA&0X3F]=res;
USART_RX_STA++;
if(USART_RX_STA>63)USART_RX_STA=0;//接收数据错误,重新开始接收  
}  
}
}       
}    
#endif

gprs.c

721 Bytes, 下载次数: 395

usart.c

2.7 KB, 下载次数: 545

回复

使用道具 举报

  离线 

512

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
133815
金钱
133815
注册时间
2010-12-1
在线时间
1284 小时
发表于 2013-5-7 12:12:23 | 显示全部楼层
回复【楼主位】鹏程万里:
---------------------------------
明天看我们的GSM模块例程吧!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

  离线 

4

主题

9

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2013-5-7
在线时间
0 小时
 楼主| 发表于 2013-5-7 14:50:09 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥我想问下,这个是通过你那个串口程序改的发短信和打电话,但是收短信部分(就上面那段程序)有写,但是主程序里是没那部分功能的,想问下你现在那部分程序有实现的吗?
回复 支持 反对

使用道具 举报

  离线 

4

主题

9

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2013-5-7
在线时间
0 小时
 楼主| 发表于 2013-5-7 15:51:58 | 显示全部楼层
#ifndef __USART_H
#define __USART_H
#include <stm32f10x_lib.h>
#include "stdio.h"  
//串口1初始化    
extern u8 USART_RX_BUF[64];     //接收缓冲,最大63个字节.末字节为换行符 
extern u8 USART_RX_STA;         //接收状态标记

//#define EN_USART1_RX      //使能串口1接收
void uart_init(u32 pclk2,u32 bound);

#endif

这是你的串口程序头文件,为什么红色部分注释掉才行,红色部分加进去就会出现下面这个问题

..\Obj\STM32_SIM300_Lib202.axf: Error: L6200E: Symbol USART1_IRQHandler multiply defined (by usart.o and stm32f10x_it.o).
..\Obj\STM32_SIM300_Lib202.axf: Not enough information to list image symbols.
..\Obj\STM32_SIM300_Lib202.axf: Not enough information to list the image map.
..\Obj\STM32_SIM300_Lib202.axf: Finished: 2 information, 0 warning and 1 error messages.
Target not created



  
回复 支持 反对

使用道具 举报

  离线 

512

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
133815
金钱
133815
注册时间
2010-12-1
在线时间
1284 小时
发表于 2013-5-7 17:58:38 | 显示全部楼层
回复【3楼】鹏程万里:
---------------------------------
我们的包括:电话拨打/接听,短信发送/接收,GPRS数据传输。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

  离线 

28

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
330
金钱
330
注册时间
2012-8-9
在线时间
18 小时
发表于 2013-5-7 21:29:42 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
原子哥,我想问下。。。那个关于读取短信的。我是想读取中文短信,然后显示在T屏幕上面。我做了个码表,UNICODE-GBK的。。用查表法。。。但是无法精确的找出UNICODE码的位置。。就是有用的UNICODE码。。。希望能得到你的帮助与提示,想了好久了。!
回复 支持 反对

使用道具 举报

  离线 

512

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
133815
金钱
133815
注册时间
2010-12-1
在线时间
1284 小时
发表于 2013-5-7 21:33:08 | 显示全部楼层
回复【6楼】117788674:
---------------------------------
我的直接用的FATFS提供的UNIGBK转换表。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

  离线 

28

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
330
金钱
330
注册时间
2012-8-9
在线时间
18 小时
发表于 2013-5-7 21:39:34 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
额,是啊。。我也是用这个!我主要就是识别有效的起始UNICODE码。。。这个不知道该用什么办法!!论坛有人发过帖子,就是问--GSM短信中字符串的识别。。。你也在其中留言了。。但是没说出具体解决办法。。。望赐教。
回复 支持 反对

使用道具 举报

  离线 

4

主题

9

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2013-5-7
在线时间
0 小时
 楼主| 发表于 2013-5-8 09:41:14 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
我的版本是V1.3  , 这个没有,有其他新版本吗?能不能发一份参考(705270346@qq.com)非常感谢
回复 支持 反对

使用道具 举报

  离线 

512

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
133815
金钱
133815
注册时间
2010-12-1
在线时间
1284 小时
发表于 2013-5-8 10:34:07 | 显示全部楼层
回复【9楼】鹏程万里:
---------------------------------
回复【8楼】117788674:
---------------------------------
等我们资料吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

  离线 

0

主题

3

帖子

0

精华

新手入门

积分
34
金钱
34
注册时间
2013-11-1
在线时间
4 小时
发表于 2013-11-13 11:21:35 | 显示全部楼层
..\OBJ\库函数调用1.axf: Error: L6200E: Symbol USART1_IRQHandler multiply defined (by stm32f10x_it.o and usart.o).
..\OBJ\库函数调用1.axf: Not enough information to list image symbols.
..\OBJ\库函数调用1.axf: Not enough information to list the image map.
..\OBJ\库函数调用1.axf: Finished: 2 information, 0 warning and 1 error messages.


这是因为在stm32f10x_it。c 中已经有了串口中断响应函数的定义 USART1_IRQHandler() 。 

方法:1. 将
stm32f10x_it。c 中的 USART1_IRQHandler()屏蔽掉。
          2. 将你的中断响应函数直接写在
stm32f10x_it。c 中的USART1_IRQHandler()就可以了。
         (错误提示中很明显告诉你是 
USART1_IRQHandler 重复定义





回复 支持 反对

使用道具 举报

  离线 

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2014-10-19
在线时间
0 小时
发表于 2014-11-24 20:31:18 | 显示全部楼层
楼主,请问你实现功能了吗?可不可以发代码我学习一下,497917869@qq.com,谢谢
以后多逛论坛,向大神们学习
回复 支持 反对

使用道具 举报

  离线 

49

主题

283

帖子

0

精华

高级会员

Rank: 4

积分
657
金钱
657
注册时间
2018-1-11
在线时间
115 小时
发表于 2018-2-14 12:07:13 | 显示全部楼层
楼主在吗,可以请教一波吗?
回复 支持 反对

使用道具 举报

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

本版积分规则




关闭

报名原子哥新品发布会&粉丝见面会上一条 /1 下一条

正点原子公众号

QQ|联系我们|手机版|官方淘宝店|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-10-22 03:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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