先看串口2,3初始化
USART2_Init(19200);//串口2、备用
USART3_Init(115200);//串口3、解析GPS
串口2初始化定义
void USART2_Init(unsigned long bound)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO
|RCC_APB2Periph_GPIOA , ENABLE);//串口2
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);//串口2 低速
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
USART_InitStructure.USART_BaudRate = bound;//
USART_InitStructure.USART_WordLength = USART_WordLength_8b;//8bits
USART_InitStructure.USART_StopBits = USART_StopBits_1;//stop bit is 1
USART_InitStructure.USART_Parity = USART_Parity_No;//no parity
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//no Hardware Flow Control
USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;//enable tx and rx
USART_Init(USART2, &USART_InitStructure);//
USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);//rx interrupt is enable
USART_Cmd(USART2, ENABLE);
//USART2_Send((unsigned char *)Buffer,2);
UART2_Send(0xAA);
}
USART3_Init类似
接下来是pid初始化
首先是:
Total_PID_Init();//PID控制器初始化
void Total_PID_Init(void)
{
PID_Init(&Total_Controler.Pitch_Angle_Control,Pitch_Angle_Controler);
PID_Init(&Total_Controler.Pitch_Gyro_Control,Pitch_Gyro_Controler);
PID_Init(&Total_Controler.Roll_Angle_Control,Roll_Angle_Controler);
PID_Init(&Total_Controler.Roll_Gyro_Control,Roll_Gyro_Controler);
PID_Init(&Total_Controler.Yaw_Angle_Control,Yaw_Angle_Controler);
PID_Init(&Total_Controler.Yaw_Gyro_Control,Yaw_Gyro_Controler);
PID_Init(&Total_Controler.High_Position_Control,High_Position_Controler);
PID_Init(&Total_Controler.High_Speed_Control,High_Speed_Controler);
PID_Init(&Total_Controler.Longitude_Position_Control,Longitude_Position_Controler);
PID_Init(&Total_Controler.Longitude_Speed_Control,Longitude_Speed_Controler);
P