GPIO Done

This commit is contained in:
Cedric Chanfreau 2023-03-20 16:40:07 +01:00
parent 8dc81c0256
commit f1d1216e44
4 changed files with 43 additions and 22 deletions

View file

@ -13,16 +13,23 @@ void MyGPIO_Init(MyGPIO_Struct_TypeDef * GPIOStructPtr) {
}
//Initialiser le registre urilisé
if (GPIOStructPtr->GPIO_Pin < 8) {
GPIOStructPtr->GPIO->CRL &= ~(0xF << (4 * GPIOStructPtr->GPIO_Pin));
GPIOStructPtr->GPIO->CRL |= (GPIOStructPtr->GPIO_Conf << (4 * GPIOStructPtr->GPIO_Pin));
GPIOStructPtr->GPIO->CRL &= ~(0xF << (4 * GPIOStructPtr->GPIO_Pin)); //Mettre le port du registre à 0
GPIOStructPtr->GPIO->CRL |= (GPIOStructPtr->GPIO_Conf << (4 * GPIOStructPtr->GPIO_Pin)); //Mettre la conf sélectionné dans le registre
} else {
GPIOStructPtr->GPIO->CRH &= ~(0xF << (4 * GPIOStructPtr->GPIO_Pin));
GPIOStructPtr->GPIO->CRH |= (GPIOStructPtr->GPIO_Conf << (4* GPIOStructPtr->GPIO_Pin));
GPIOStructPtr->GPIO->CRH &= ~(0xF << (4 * GPIOStructPtr->GPIO_Pin - 8)); //Mettre le port du registre à 0 / -8 car CRH commence à 8
GPIOStructPtr->GPIO->CRH |= (GPIOStructPtr->GPIO_Conf << (4* GPIOStructPtr->GPIO_Pin - 8));
}
if (GPIOStructPtr->GPIO_Conf == In_PullUp) {
GPIOStructPtr->GPIO->ODR |= (1<<GPIOStructPtr->GPIO_Pin); //Mettre à 1 pour le push pull le registre
}else{
GPIOStructPtr->GPIO->ODR &= ~(1<<GPIOStructPtr->GPIO_Pin); //Mettre à 0 pour le pull down le registre
}
}
int MyGPIO_Read(GPIO_TypeDef * GPIO, char GPIO_Pin){
if((GPIO->IDR) &= (1 << GPIO_Pin)!=0)
if((GPIO->IDR & (1 << GPIO_Pin)) != 0) //Retourne si la Pin a été sélectionné
{
return 1;
}else{
@ -30,14 +37,16 @@ int MyGPIO_Read(GPIO_TypeDef * GPIO, char GPIO_Pin){
}
}
//BSRR registre permettant de Set la Pin
void MyGPIO_Set(GPIO_TypeDef * GPIO, char GPIO_Pin){
GPIO->BSRR |= (1 << GPIO_Pin); //Mettre à 1 la PIN
}
//BRR registre permettant de ReSet la Pin
void MyGPIO_Reset(GPIO_TypeDef * GPIO, char GPIO_Pin){
GPIO->BRR |= (1 << GPIO_Pin); //Mettre à 0 la PIN
}
void MyGPIO_Toggle(GPIO_TypeDef * GPIO, char GPIO_Pin){
GPIO->ODR ^= (1 << GPIO_Pin); //XOR, Inverser l'état de la PIN
}

View file

@ -10,8 +10,8 @@ typedef struct {
#define In_Floating 0x4 // 0b0100
#define In_PullDown 0x8
#define In_PullUp 0x8
#define In_PullDown 0x8
#define In_Analog 0x0
#define Out_Ppull 0x1
#define Out_OD 0x6

View file

@ -7,28 +7,40 @@
MyGPIO_Struct_TypeDef LED;
int delay(){
int i;
for(i=0;i<1000000;i++);
}
int main ( void )
{
// Clocks des ports A, B, C
//RCC->APB2ENR |= (0x01 << 2) | (0x01 << 3) | (0x01 << 4) ;
GPIOA->CRL &= ~(0xF << 20); // Mise à 0
GPIOA->CRL |= (0x1 << 20); // Output
GPIOA->BSRR |= (0x01 << 5);
LED.GPIO=GPIOA;
LED.GPIO_Conf=Out_Ppull;
LED.GPIO_Pin=5;
// Configure PC13 as input with pull-up
GPIOC->CRH &=~ (1<<13);
MyGPIO_Init(&LED);
GPIOC->CRH &= ~(0x1 << 22);
GPIOC->CRH |= GPIO_CRH_CNF13_1; // BP = PC13
GPIOC->ODR |= GPIO_ODR_ODR13;
LED.GPIO=GPIOC;
LED.GPIO_Conf = In_PullUp;
LED.GPIO_Pin=13;
//GPIOA->BSRR |= (1 << 21);
MyGPIO_Init(&LED);
while(1)
{
if(MyGPIO_Read(GPIOC, 13) == 0)
{
MyGPIO_Toggle(GPIOA, 5);
delay();
}
}
}

View file

@ -290,7 +290,7 @@
<SetRegEntry>
<Number>0</Number>
<Key>DLGTARM</Key>
<Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(1011=-1,-1,-1,-1,0)(180=-1,-1,-1,-1,0)(120=482,345,903,750,0)(121=931,445,1352,850,0)(122=981,453,1402,858,0)(123=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(240=-1,-1,-1,-1,0)(190=-1,-1,-1,-1,0)(200=-1,-1,-1,-1,0)(170=-1,-1,-1,-1,0)(130=-1,-1,-1,-1,0)(131=-1,-1,-1,-1,0)(132=-1,-1,-1,-1,0)(133=-1,-1,-1,-1,0)(160=-1,-1,-1,-1,0)(161=-1,-1,-1,-1,0)(162=-1,-1,-1,-1,0)(210=-1,-1,-1,-1,0)(211=-1,-1,-1,-1,0)(220=-1,-1,-1,-1,0)(221=-1,-1,-1,-1,0)(230=-1,-1,-1,-1,0)(231=-1,-1,-1,-1,0)(232=-1,-1,-1,-1,0)(233=-1,-1,-1,-1,0)(150=-1,-1,-1,-1,0)(151=-1,-1,-1,-1,0)</Name>
<Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(1011=-1,-1,-1,-1,0)(180=-1,-1,-1,-1,0)(120=703,344,1124,749,0)(121=931,445,1352,850,0)(122=409,446,830,851,0)(123=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(240=-1,-1,-1,-1,0)(190=-1,-1,-1,-1,0)(200=-1,-1,-1,-1,0)(170=-1,-1,-1,-1,0)(130=-1,-1,-1,-1,0)(131=-1,-1,-1,-1,0)(132=-1,-1,-1,-1,0)(133=-1,-1,-1,-1,0)(160=-1,-1,-1,-1,0)(161=-1,-1,-1,-1,0)(162=-1,-1,-1,-1,0)(210=-1,-1,-1,-1,0)(211=-1,-1,-1,-1,0)(220=-1,-1,-1,-1,0)(221=-1,-1,-1,-1,0)(230=-1,-1,-1,-1,0)(231=-1,-1,-1,-1,0)(232=-1,-1,-1,-1,0)(233=-1,-1,-1,-1,0)(150=-1,-1,-1,-1,0)(151=-1,-1,-1,-1,0)</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>