#include "gpio.h" void gpio_init( GPIO_TypeDef* gpio, char pin, char conf) { if(gpio == GPIOA){ RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;//lance GPIOA }else if (gpio == GPIOB){ RCC->APB2ENR |= RCC_APB2ENR_IOPBEN; }else if (gpio == GPIOC){ RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; } //RCC->APB2ENR |= (0x01 << 2) | (0x01 << 3) | (0x01 << 4) ;//fait tourner tous les gpio if(conf == 0x8){ if (pin < 8) { gpio->CRL= gpio->CRL &~(0xF<<(pin*4)); gpio->CRL= gpio->CRL | conf<<(pin*4); gpio->ODR&=~(0x1<CRH= gpio->CRH &~(0xF<<((pin-8)*4)); gpio->CRH= gpio->CRH | conf<<((pin-8)*4); gpio->ODR&=~(0x1<CRL= gpio->CRL &~(0xF<<(pin*4)); gpio->CRL= gpio->CRL | conf<<(pin*4); gpio->ODR&=(0x1<CRH= gpio->CRH &~(0xF<<((pin-8)*4)); gpio->CRH= gpio->CRH | conf<<((pin-8)*4); gpio->ODR&=(0x1<CRL= gpio->CRL &~(0xF<<(pin*4)); gpio->CRL= gpio->CRL | conf<<(pin*4); } else{ gpio->CRH= gpio->CRH &~(0xF<<((pin-8)*4)); gpio->CRH= gpio->CRH | conf<<((pin-8)*4); } } } int gpio_read(GPIO_TypeDef *gpio, char gpio_Pin) { return (gpio->IDR)&(0x1<BSRR = (0x1 << gpio_Pin); } void gpio_reset(GPIO_TypeDef *gpio, char gpio_Pin) { gpio->BSRR = (0x1 << (gpio_Pin + 16)); } void gpio_toggle(GPIO_TypeDef *gpio, char gpio_Pin) { if(((gpio->ODR)&(0x1<