OpenEdv-开源电子网

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

请教MINI板定时驱动SIM900A发送短信的问题

[复制链接]

10

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2012-11-1
在线时间
29 小时
发表于 2016-7-27 08:59:27 | 显示全部楼层 |阅读模式
1金钱
    小弟想通过MINI板的内部RTC的闹钟模块,定时用SIM900A发送短信。单独的闹钟程序和SIM900A程序都调通了:闹钟程序在我设置的固定时间进入闹钟中断,点亮LED;SIM900A程序在我按键后向手机发送一条短信。但是在进行两个程序合并的时候,能够进行闹钟中断,却发送不了短信,请问是什么问题呢?程序如下:

主程序:
[mw_shl_code=c,true]int main(void)
{
    u8 t=0;
        Stm32_Clock_Init(9); //系统时钟设置
        delay_init(72);             //延时初始化
        uart_init(72,9600); //串口1初始化
        LED_Init();       
        RTC_Init();
        sim900a_init();
        USART2_Init(36,115200);        //初始化串口2       
        calendar_alarm_init(&alarm); //初始化闹钟
        alarm_set(8,48);         //闹钟设置
//        RTC_Set(2016,7,19,16,12,0);  //设置时间
        while(1)
         {
           if(t!=timer.sec)
                {
                        t=timer.sec;
                        delay_ms(10);
                }
         }
}[/mw_shl_code]

中断函数:[mw_shl_code=c,true]void RTC_IRQHandler(void)
{                                                            
        if(RTC->CRL&0x0001)//秒钟中断
        {                                                       
                RTC_Get();//更新时间

        }
        if(RTC->CRL&0x0002)//闹钟中断
        {
                //printf("Alarm!\n");       
                RTC->CRL&=~(0x0002);//清闹钟中断
                if(alarm.weekmask&(1<<calendar.week))
                {
                        alarm.ringsta|=1<<7;//标记为闹铃状态.
                        if(alarm.ringsta&1<<7)
                        {
                          sim900a_sms_test();//短信发送
                          //delay_ms(40);

                        }                  
                }
                calendar_alarm_init(&alarm);//重新设置下一次闹铃
        }                                                                                                    
    RTC->CRL&=0X0FFA;         //清除溢出,秒钟中断标志
        while(!(RTC->CRL&(1<<5)));//等待RTC寄存器操作完成                                                                                                
}[/mw_shl_code]
[mw_shl_code=c,true]u8 sim900a_sms_test(void)
{
        u8 key;
        u8 timex=0;
        if(sim900a_send_cmd("AT+CMGF=1","OK",200))return 1;                        //设置文本模式
        if(sim900a_send_cmd("AT+CSCS=\"UCS2\"","OK",200))return 2;        //设置TE字符集为UCS2
        if(sim900a_send_cmd("AT+CSMP=17,0,2,25","OK",200))return 3;        //设置短消息文本模式参数
        //sim900a_sms_ui(40,30);
             sim900a_sms_send_test();               

                delay_ms(10);
                sim_at_response(1);                                                                                //检查GSM模块发送过来的数据,及时上传给电脑

        sim900a_send_cmd("AT+CSCS=\"GSM\"","OK",200);                                //设置默认的GSM 7位缺省字符集
        return 0;
} [/mw_shl_code]

[mw_shl_code=c,true]//测试短信发送内容(70个字[UCS2的时候,1个字符/数字都算1个字])
//SIM900A发短信测试
void sim900a_sms_send_test(void)
{
  u8 *p="Hello World!";  
//  sim900a_init();               
  if(sim900a_send_cmd("AT+CMGS=\"1835109####\"\r\n",">",200)==0);//设置要发送的手机号码
  {
                delay_ms(40);
    if(sim900a_check_cmd(">"))//是否收到">"
    {
                        LED1=!LED1;
      u2_printf((char*)p);                              //发短息内容到GSM模块
      if(sim900a_send_cmd((u8*)0X1A,"+CMGS:",1000)==0)//发送结束符,等待发送完成(最长等待10秒,因为短信长了的话,等待时间会长些)
      {        
                                  LED1=!LED1;                               
      }
                       
      USART2_RX_STA=0;
    }
  }
}[/mw_shl_code]

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

使用道具 举报

10

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2012-11-1
在线时间
29 小时
 楼主| 发表于 2016-7-27 09:05:26 | 显示全部楼层
小弟分析了一下,会不会是由于RTC的秒中断和闹钟中断是在一起的,在进入闹钟中断处理SIM900的时间超过1秒了,也就是说,还没来及处理SIM900,就进入秒中断了呢?请大神指导
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-7-29 21:57:49 | 显示全部楼层
仿真找问题。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 22:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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