初级会员
- 积分
- 51
- 金钱
- 51
- 注册时间
- 2016-11-22
- 在线时间
- 25 小时
|
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); //µÈ´ýͨµÀ7´«ÊäÍê³É
USART2->DR=(u32)cmd;
}else u2_printf("%s\r\n",cmd);//·¢ËÍÃüÁî
if(waittime==1100)//11sºó¶Á»Ø´®¿ÚÊý¾Ý(À¶ÑÀɨÃèģʽ)
{
Scan_Wtime = 11; //ÐèÒª¶¨Ê±µÄʱ¼ä
TIM4_SetARR(9999);//²úÉú1S¶¨Ê±ÖжÏ
}
if(ack&&waittime) //ÐèÒªµÈ´ýÓ¦´ð
{
while(--waittime) //µÈ´ýµ¹¼Æʱ
{
if(BT_Scan_mode)//À¶ÑÀɨÃèģʽ
{
res=KEY_Scan(0);//·µ»ØÉÏÒ»¼¶
if(res==WKUP_PRES)return 2;
}
delay_ms(10);
if(USART2_RX_STA&0X8000)//½ÓÊÕµ½ÆÚ´ýµÄÓ¦´ð½á¹û
{
if(sim800c_check_cmd(ack))break;//µÃµ½ÓÐЧÊý¾Ý
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);//µÈ´ýÉÏÒ»´ÎÊý¾Ý·¢ËÍÍê³É
USART3->DR=(u32)cmd;
}else u3_printf("%s\r\n",cmd);//·¢ËÍÃüÁî
if(ack&&waittime) //ÐèÒªµÈ´ýÓ¦´ð
{
while(--waittime) //µÈ´ýµ¹¼Æʱ
{
delay_ms(10);
if(USART3_RX_STA&0X8000)//½ÓÊÕµ½ÆÚ´ýµÄÓ¦´ð½á¹û
{
if(sim900a_check_cmd(ack))break;//µÃµ½ÓÐЧÊý¾Ý
USART3_RX_STA=0;
}
}
if(waittime==0)res=1;
}
return res;
}
|
|