OpenEdv-开源电子网

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

GSM命令语句

[复制链接]

5

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2016-11-22
在线时间
25 小时
发表于 2017-4-19 14:51:54 | 显示全部楼层 |阅读模式
1金钱
核心语句代码可以不用DMA传输么?比如下边橙色部分:
u8 sim800c_send_cmd(u8 *cmd,u8 *ack,u16 waittime)
{
u8 res=0;
USART2_RX_STA=0;
if((u32)cmd<=0XFF)
{
  while(DMA1_Channel7->CNDTR!=0); //&micro;&Egrave;&acute;&yacute;&Iacute;¨&micro;&Agrave;7&acute;&laquo;&Ecirc;&auml;&Iacute;ê&sup3;&Eacute;   
  USART2->DR=(u32)cmd;
}else u2_printf("%s\r\n",cmd);//·&cent;&Euml;&Iacute;&Atilde;ü&Aacute;&icirc;

if(waittime==1100)//11s&ordm;ó&para;&Aacute;&raquo;&Oslash;&acute;&reg;&iquest;&Uacute;&Ecirc;&yacute;&frac34;&Yacute;(&Agrave;&para;&Ntilde;&Agrave;&Eacute;¨&Atilde;è&Auml;&pound;&Ecirc;&frac12;)
{
   Scan_Wtime = 11;  //&ETH;è&Ograve;&ordf;&para;¨&Ecirc;±&micro;&Auml;&Ecirc;±&frac14;&auml;
   TIM4_SetARR(9999);//&sup2;ú&Eacute;ú1S&para;¨&Ecirc;±&Ouml;&ETH;&para;&Iuml;
}


if(ack&&waittime)  //&ETH;è&Ograve;&ordf;&micro;&Egrave;&acute;&yacute;&Oacute;&brvbar;&acute;&eth;
{
    while(--waittime) //&micro;&Egrave;&acute;&yacute;&micro;&sup1;&frac14;&AElig;&Ecirc;±
    {
     if(BT_Scan_mode)//&Agrave;&para;&Ntilde;&Agrave;&Eacute;¨&Atilde;è&Auml;&pound;&Ecirc;&frac12;
     {
      res=KEY_Scan(0);//·&micro;&raquo;&Oslash;&Eacute;&Iuml;&Ograve;&raquo;&frac14;&para;
      if(res==WKUP_PRES)return 2;
     }
     delay_ms(10);
     if(USART2_RX_STA&0X8000)//&frac12;&Oacute;&Ecirc;&Otilde;&micro;&frac12;&AElig;&Uacute;&acute;&yacute;&micro;&Auml;&Oacute;&brvbar;&acute;&eth;&frac12;á&sup1;&ucirc;
     {
      if(sim800c_check_cmd(ack))break;//&micro;&Atilde;&micro;&frac12;&Oacute;&ETH;&ETH;§&Ecirc;&yacute;&frac34;&Yacute;
      USART2_RX_STA=0;
     }
    }
    if(waittime==0)res=1;
}
return res;
}


我简单的用串口3的while((USART3->SR&0X40)==0);来替代好像不成功,有大神可以解惑么,多谢!!!
u8 sim900a_send_cmd(u8 *cmd,u8 *ack,u16 waittime)
{
u8 res=0;
USART3_RX_STA=0;
if((u32)cmd<=0XFF)
{
while((USART3->SR&0X40)==0);//&micro;&Egrave;&acute;&yacute;&Eacute;&Iuml;&Ograve;&raquo;&acute;&Icirc;&Ecirc;&yacute;&frac34;&Yacute;·&cent;&Euml;&Iacute;&Iacute;ê&sup3;&Eacute;  
  USART3->DR=(u32)cmd;
}else u3_printf("%s\r\n",cmd);//·&cent;&Euml;&Iacute;&Atilde;ü&Aacute;&icirc;
if(ack&&waittime)  //&ETH;è&Ograve;&ordf;&micro;&Egrave;&acute;&yacute;&Oacute;&brvbar;&acute;&eth;
{
  while(--waittime) //&micro;&Egrave;&acute;&yacute;&micro;&sup1;&frac14;&AElig;&Ecirc;±
  {
   delay_ms(10);
   if(USART3_RX_STA&0X8000)//&frac12;&Oacute;&Ecirc;&Otilde;&micro;&frac12;&AElig;&Uacute;&acute;&yacute;&micro;&Auml;&Oacute;&brvbar;&acute;&eth;&frac12;á&sup1;&ucirc;
   {
    if(sim900a_check_cmd(ack))break;//&micro;&Atilde;&micro;&frac12;&Oacute;&ETH;&ETH;§&Ecirc;&yacute;&frac34;&Yacute;
    USART3_RX_STA=0;
   }
  }
  if(waittime==0)res=1;
}
return res;
}

最佳答案

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2017-4-19 14:51:55 | 显示全部楼层
回复

使用道具 举报

5

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2016-11-22
在线时间
25 小时
 楼主| 发表于 2017-4-20 08:08:14 | 显示全部楼层
多谢原子哥,追问一下,是不是直接USART2->SR&0X40)==0这样就可以了?
回复

使用道具 举报

5

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2016-11-22
在线时间
25 小时
 楼主| 发表于 2017-4-20 17:10:33 | 显示全部楼层
感谢原子哥,做通了,谢谢!!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

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

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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