tp/projet_1/src/main.c
2023-03-18 20:28:00 +01:00

33 lines
981 B
C

#include "stm32f10x.h"
int main(void)
{
// Voir ~p113 et ~p170 du manual
// Activation des horloges des ports A et C
RCC->APB2ENR |= (RCC_APB2ENR_IOPCEN);
RCC->APB2ENR |= (RCC_APB2ENR_IOPAEN);
// Configuration de PC13 en input pull-up
GPIOC->CRH &= ~(GPIO_CRH_CNF13) | (GPIO_CRH_MODE13); // Mise à 0 de CNF13 et MODE13 pour fonctionnement en Input pull-down voir p160
GPIOC->CRH |= GPIO_CRH_CNF13_0; // Mise à 1 de CNF1 pour fonctionnement input pull up/down
GPIOC->ODR |= GPIO_ODR_ODR13; //Pull up -> ODR13 à 0
// Configuration de PA5 en sortie push-pull
GPIOA->CRL &= ~(GPIO_CRL_MODE5);
GPIOA->CRL &= ~(GPIO_CRL_CNF5);
GPIOA->CRL |= GPIO_CRL_MODE5_0;
while (1)
{
// Vérification de l'état du bouton
if ((GPIOC->IDR & GPIO_IDR_IDR13) == 0)
{
// Inversion de l'état de la broche PA5
GPIOA->ODR ^= GPIO_ODR_ODR5;
// Attente pour éviter les rebonds du bouton
for (int i = 0; i < 1000000; i++);
}
}
}