一.配置方法

二.串口中断
u8 i;
u16 buf[20],res;
u8 receiving_flag = 0; // 新增一个标志,用于标记是否开始接收数组
void USART1_IRQHandler(void)
{if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断{res = USART_ReceiveData(USART1);if(receiving_flag == 0){i=0;buf[0] = res;if(res == 'B'){receiving_flag = 1;i++;}}else if(receiving_flag == 1){buf[i] = res;i++;if(res == 'E'){receiving_flag = 2;}if(i>=19){i = 0;receiving_flag = 0;}}USART_ClearFlag(USART1, USART_FLAG_RXNE);}
}void Usart1_Init(unsigned int baud)
{GPIO_InitTypeDef gpio_initstruct;USART_InitTypeDef usart_initstruct;NVIC_InitTypeDef nvic_initstruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//PA9 TXDgpio_initstruct.GPIO_Mode = GPIO_Mode_AF_PP;gpio_initstruct.GPIO_Pin = GPIO_Pin_9;gpio_initstruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &gpio_initstruct);//PA10 RXDgpio_initstruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;gpio_initstruct.GPIO_Pin = GPIO_Pin_10;gpio_initstruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &gpio_initstruct);usart_initstruct.USART_BaudRate = baud;usart_initstruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //无硬件流控usart_initstruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //接收和发送usart_initstruct.USART_Parity = USART_Parity_No; //无校验usart_initstruct.USART_StopBits = USART_StopBits_1; //1位停止位usart_initstruct.USART_WordLength = USART_WordLength_8b; //8位数据位USART_Init(USART1, &usart_initstruct);USART_Cmd(USART1, ENABLE); //使能串口USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); //使能接收中断nvic_initstruct.NVIC_IRQChannel = USART1_IRQn;nvic_initstruct.NVIC_IRQChannelCmd = ENABLE;nvic_initstruct.NVIC_IRQChannelPreemptionPriority = 0;nvic_initstruct.NVIC_IRQChannelSubPriority = 2;NVIC_Init(&nvic_initstruct);}
三.子板获取数据
//反向控制接受
void toContent(){if(receiving_flag == 2){receiving_flag = 0;for(a = 0; a < 20; a++) { if(buf[a]=='W'){maxyw=buf[a+1]; }if(buf[a]=='x'){yw=buf[a+1]; }if(buf[a]=='b'){FLAME=buf[a+1]; }}}
}
四.主板发送数据
void zigbeTOb(){if(time_count>100){time_count = 0;USART_SendData(USART1,'B');delay_ms(1);USART_SendData(USART1,'x');delay_ms(1);USART_SendData(USART1,yw);delay_ms(1);USART_SendData(USART1,'b');delay_ms(1);USART_SendData(USART1,FLAME);delay_ms(1);USART_SendData(USART1,'E');delay_ms(1);}
}