Projet_Voilier/ProjetsKEIL/Projet_1/Src/Principal.c
2023-03-22 14:36:53 +01:00

76 lines
1.3 KiB
C

#include "stm32f10x.h"
#include "Driver_GPIO.h"
#include "Driver_timers.h"
// PA5 LED
// PC13 BP
MyGPIO_Struct_TypeDef LED;
MyTimer_Struct_TypeDef Timer_500ms;
int delay(){
int i;
for(i=0;i<1000000;i++);
}
int main ( void )
{
LED.GPIO=GPIOA;
LED.GPIO_Conf=Out_Ppull;
LED.GPIO_Pin=5;
MyGPIO_Init(&LED);
LED.GPIO=GPIOC;
LED.GPIO_Conf = In_PullUp;
LED.GPIO_Pin=13;
MyGPIO_Init(&LED);
Timer_500ms.Timer = TIM2;
Timer_500ms.PSC = 7200; //(1/72Mhz)/7200=0.1ms
Timer_500ms.ARR = 5000; //0.1*5000 = 500ms
timer_init(&Timer_500ms);
TIM2->DIER|=1<<0; //Interruption périph
NVIC->ISER[0] |= 1>>TIM2_IRQn; //Interruption Coeur
NVIC->IP[TIM2_IRQn] = 2 <<4;
MyTimer_Start(&Timer_500ms);
while(1)
{
//if(MyGPIO_Read(GPIOC, 13) == 0)
//{
MyGPIO_Set(GPIOA, 5);
while(Timer_500ms.Timer->CNT != Timer_500ms.ARR -1); //CNT registre qui gère le retour à 0
MyGPIO_Reset(GPIOA, 5);
while(Timer_500ms.Timer->CNT != Timer_500ms.ARR -1);
//}
/* OU
while(Timer_500ms.Timer->CNT != Timer_500ms.ARR -1); //CNT registre qui gère le retour à 0
MyGPIO_Toggle(GPIOA, 5);
while(Timer_500ms.Timer->CNT != Timer_500ms.ARR -1); //CNT registre qui gère le retour à 0
*/
}
}
void TIM2_IRQHandler (void){
MyGPIO_Toggle(GPIOA, 5);
TIM2->SR &= ~(1<<0);
}