OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 13574|回复: 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, 下载次数: 434

usart.c

2.7 KB, 下载次数: 581

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 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



  
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

28

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

28

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
491
金钱
491
注册时间
2012-8-9
在线时间
57 小时
发表于 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)非常感谢
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 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,谢谢
以后多逛论坛,向大神们学习
回复 支持 反对

使用道具 举报

57

主题

316

帖子

0

精华

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 04:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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