void configure_motor(GPIO_TypeDef* Port, u8 Pin, TIM_TypeDef * Timer, u8 Channel){ //init clocks Port_IO_Init_Clock (Port); Timer_Init_Clock (Timer); //setting output pin as alternate function push pull Port_IO_Init_AF_Output (Port, Pin); //start pwm on the defined channel PWM_Init (Timer, Channel, MOTOR_PWM_FREQ); }
int main (void) { alerte_roulis=0; alerte_batterie=0; CLOCK_Configure(); /*###################################################### CONFIGURATION DES ENTREES/SORTIES ########################################################*/ //configuration GPIOA floating input port 5, 6 et 7 //(voie I & A & B) pour la girouette Port_IO_Init_Input(GPIOA, 5); Port_IO_Init_Input(GPIOA, 6); Port_IO_Init_Input(GPIOA, 7); //Config Servo-moteur Port_IO_Init_AF_Output ( GPIOA, 8); //Config Moteur-CC Port_IO_Init_AF_Output( GPIOA, 1); //PWM moteur cc Port_IO_Init_Output( GPIOA, 2); //sens du moteur cc //Config Récepteur RF Port_IO_Init_Input( GPIOB, 6); //Récepteur RF CH1 //Config liaison HF Port_IO_Init_AF_Output (GPIOA, 9); //USART : liaison HF Port_IO_Init_Output(GPIOA, 11); //TX_ENABLE //Config ADC Port_IO_Init_Analog_Input(GPIOC, Y_AXIS_CHANNEL); Port_IO_Init_Analog_Input(GPIOC, BATTERY_CHANNEL); /*###################################################### CONFIGURATION DES TIMERS ########################################################*/ //Enable clock Timer 3 Enable_CLK_Timer1234(TIM3); //init du codeur incrémental Init_Codeur(TIM3, 5); //configuration pour lire les impulsions du récepteur RF Timer_Init_PWM_Input(TIM4, 1, 20000); //Servo Moteur Timer_1234_Init(TIM1,20000); config_pwm (TIM1, 1, 5); // config TIM1 CH1 //Moteur CC (PWM) Timer_1234_Init(TIM2, 52); config_pwm(TIM2, 2,0); /*###################################################### CONFIGURATION DE L'USART ########################################################*/ //Config UART Config_UART_Projet_Bateau(USART1); Port_IO_Set( GPIOA, 11); /*###################################################### CONFIGURATION DES ADCs ########################################################*/ //Config Accéléromètre et niveau batterie power_ADC(ADC1); power_ADC(ADC2); config_adc_single_channel(ADC1, Y_AXIS_CHANNEL); config_adc_single_channel(ADC2, BATTERY_CHANNEL); /*###################################################### ACTIVATION DES INTERRUPTIONS ########################################################*/ //Recepteur RF & Moteur_CC Timer_Active_IT(TIM4,5, 2,notreTIM4_IRQHandler); //Accelerometre & Batterie Active_IT_ADC(ADC1, 1, &ADC_IT);//Accelerometre Active_IT_ADC(ADC2, 1, &ADC_IT);//Batterie Timer_Active_IT(TIM1, 99, 0, &Timer_IT);//f_s ADCs while(1) { alpha = lire_alpha(); //angle de la girouette Convert_alpha_DC(alpha,alerte_roulis); // le bras varie entre 0 et 90 deg // valeur correspondant a un bras a 0 deg (5%) // valeur correspondant a un bras a 90 deg (10%) // quand le bras est a 90 deg les voiles sont a 0 deg // quand le bras est a 0 deg les voiles sont a 90 deg d'amplitude // et le vent decide du signe de l'angle de la voile }; }