forked from trocache/RefKEIL
33 lines
981 B
C
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++);
|
|
}
|
|
}
|
|
}
|