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(USART1USART_FLAG_TC)!=SET);//μè′y·¢Ëí½áêø } //printf("\r\n\r\n");//2åèë»»DD memset(data020*sizeof(char)); USART_RX_STA=0; } else { times++; // if(times%5000==0) // { // printf("AT+CIPSTART=\"TCP\"\"192.168.1.10\"8080\r\n"); // printf("ÕyμãÔ-×ó@ALIENTEK\r\n\r\n\r\n"); // } 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; }在原子哥的串口实验里面我尝试扩展串口实验。我的结果应该是是开机后串号在没有接收到数据的情况下一直在向上发出08020907,在接收到数据后进行比对,数据相符向上传输数据000500.然后我修改发送数据为数组,检测到上位机发送01050501-010502后发送08020907,结果开机接收数据正常,在检测到上位机有数据发送过来,数据正确时,会返回对应的数据,但是只有一次。然后就无反应了。但是我一旦去除else之后的空闲时间发送函数。就接受正常了。我把DATA的数组清空,USART_RX_STA也置零了,但是还是那样,一填加空闲发送,接受到数据并回复后就无反应了,不知道那里错了,请指教。
}
在原子哥的串口实验里面我尝试扩展串口实验。
我的结果应该是是开机后串号在没有接收到数据的情况下一直在向上发出08020907,在接收到数据后进行比对,数据相符向上传输数据000500.
然后我修改发送数据为数组,检测到上位机发送01050501-010502后发送08020907,结果开机接收数据正常,在检测到上位机有数据发送过来,数据正确时,会返回对应的数据,但是只有一次。然后就无反应了。但是我一旦去除else之后的空闲时间发送函数。就接受正常了。我把DATA的数组清空,USART_RX_STA也置零了,但是还是那样,一填加空闲发送,接受到数据并回复后就无反应了,不知道那里错了,请指教。