[mw_shl_code=applescript,true]u8 t;
u8 data[5];
u8 len;
u16 times=0;
unsigned int time=0;
void Cargo_RUN(void);
void Cargo_two_RUN(void);
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éèÖÃÏμí3ÖD¶ÏóÅÏ輶·Ö×é2
delay_init(168); //Ñóê±3õê¼»ˉ
uart_init(115200); //′®¿ú3õê¼»ˉ2¨ìØÂêÎa115200
LED_Init(); //3õê¼»ˉóëLEDᬽóμÄó2¼t½ó¿ú
delay_ms(10);
while(1)
{
// usat_init();
if(USART_RX_STA&0x4000)
{
//len=USART_RX_STA&0x3fff;//μÃμ½′Ë′νóêÕμ½μÄêy¾Y3¤¶è
if(USART_RX_BUF[0]==0x01)
{
if(USART_RX_BUF[1]==0x05)
{
if(USART_RX_BUF[2]==0x05)
{
USART_RX_STA=0;
Cargo_RUN();
// data[0]=0x08;
// data[1]=0x05;
// data[2]=0x01;
// data[3]=0x09;
// len=4;
}
}
}
for(t=0;t<len;t++)
{
USART_SendData(USART1, data[t]); //Ïò′®¿ú1·¢Ëíêy¾Y
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//μè′y·¢Ëí½áêø
}
//printf("
");//2åèë»»DD
memset(data,0,20*sizeof(char));
USART_RX_STA=0;
}
else
{
times++;
// if(times%5000==0)
// {
// printf("AT+CIPSTART="TCP","192.168.1.10",8080
");
// printf("ÕyμãÔ-×ó@ALIENTEK
");
// }
data[0]=0x08;
data[1]=0x02;
data[2]=0x09;
data[3]=0x07;
if(times%200==0)printf("%02X%02X%02X%02X",data[0],data[1],data[2],data[3]);
if(times%30==0)LED0=!LED0;//éá˸LED,ìáê¾Ïμí3ÕyÔúÔËDD.
delay_ms(10);
}
}
}
void Cargo_RUN(void)
{
// if (USART_RX_BUF[3]<=0x3C)//μ±μú4¸ö×Ö½úD¡óú60¸ö»õμàê±£¬¼ìDøÏÂò»2½
// {
switch (USART_RX_BUF[3])
{
case 0x01://′ò¿a1oÅ»õμà
Cargo_1_RUN();
delay_ms(time);
Cargo_1_STOP();
data[0]=0x00;
data[1]=0x05;
data[2]=0x00;
len=3;
break;
case 0x02://′ò¿a2oÅ»õμà
Cargo_2_RUN();
delay_ms(time);
Cargo_2_STOP();
data[0]=0x00;
data[1]=0x05;
data[2]=0x00;
len=3;
break;
default:
data[0] = 0x00;//ÆäËü2»Ö§3ÖμÄ1|Äü£¬1|Äüλֱ1£¬
data[1] = 0x04;
data[2] = 0x01;//éèÖÃòì3£ÂeÎa1
len = 3;
break;
}[/mw_shl_code]
在原子哥的串口实验里面我尝试修改发送数据为数组,检测到上位机发送01050501-010502后发送08020907,结果开机接受数据正常,在检测到上位机有数据发送过来,数据正确时,会返回对应的数据,但是只有一次。然后就无反应了。但是我一旦去除else之后的空闲时间发送函数。就接受正常了。我把DATA的数组清空,USART_RX_STA也置零了,但是还是那样,一填加空闲发送,接受到数据并回复后就无反应了,不知道那里错了,请指教。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>