Mettre à jour 'Drivers/Sources/Driver_GPIO.c'
This commit is contained in:
parent
e06fea7cc1
commit
9e9fc9eb4e
1 changed files with 13 additions and 8 deletions
|
@ -5,26 +5,26 @@
|
|||
void MyGPIO_Init ( MyGPIO_Struct_TypeDef * GPIOStructPtr )
|
||||
{
|
||||
|
||||
/* Activation of the GPIO port specific clock */
|
||||
/* Activation de la clock liée au GPIO sélectionné */
|
||||
if (GPIOStructPtr->GPIO == GPIOA)
|
||||
{
|
||||
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;
|
||||
}
|
||||
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;
|
||||
}
|
||||
else if (GPIOStructPtr->GPIO == GPIOB)
|
||||
{
|
||||
RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;
|
||||
}
|
||||
}
|
||||
else if (GPIOStructPtr->GPIO == GPIOC)
|
||||
{
|
||||
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;
|
||||
}
|
||||
}
|
||||
else if (GPIOStructPtr->GPIO == GPIOD)
|
||||
{
|
||||
RCC->APB2ENR |= RCC_APB2ENR_IOPDEN;
|
||||
}
|
||||
|
||||
|
||||
/* Reset, and then configuration writing of the selected GPIO Pin */
|
||||
/* Reset & configuration de la pin avec le mode adéquat */
|
||||
if(GPIOStructPtr->GPIO_Pin <= 8)
|
||||
{
|
||||
GPIOStructPtr->GPIO->CRL &= ~0xF<<(4*(GPIOStructPtr->GPIO_Pin));
|
||||
|
@ -36,6 +36,7 @@ void MyGPIO_Init ( MyGPIO_Struct_TypeDef * GPIOStructPtr )
|
|||
GPIOStructPtr->GPIO->CRH |= (GPIOStructPtr->GPIO_Conf)<<(4*((GPIOStructPtr->GPIO_Pin)%8));
|
||||
}
|
||||
|
||||
/* Ecriture de l'ODR pour choisir entre pulldown & pushpull*/
|
||||
if(GPIOStructPtr->GPIO_Conf == (char)In_PullDown)
|
||||
{
|
||||
GPIOStructPtr->GPIO->ODR &= ~(0x1<<(GPIOStructPtr->GPIO_Pin));
|
||||
|
@ -49,7 +50,8 @@ void MyGPIO_Init ( MyGPIO_Struct_TypeDef * GPIOStructPtr )
|
|||
//----------------------------READ--------------------------//
|
||||
int MyGPIO_Read ( GPIO_TypeDef * GPIO , char GPIO_Pin ){
|
||||
int etatbit;
|
||||
//On vérifie si la valeur lue dans l'IDR est un 0 ou un 1
|
||||
|
||||
/* Verification de la valeur de l'IDR */
|
||||
if((GPIO->IDR & (1<<GPIO_Pin))!=0){
|
||||
etatbit = 1;
|
||||
}
|
||||
|
@ -61,13 +63,16 @@ int MyGPIO_Read ( GPIO_TypeDef * GPIO , char GPIO_Pin ){
|
|||
|
||||
//---------------------SET-------------------//
|
||||
void MyGPIO_Set ( GPIO_TypeDef * GPIO , char GPIO_Pin ){
|
||||
|
||||
/*Ecriture du 1 sur le numéro de la pin dans le registre BSRR*/
|
||||
GPIO->BSRR |= (1 << GPIO_Pin);
|
||||
}
|
||||
|
||||
//---------------------RESET-----------------//
|
||||
void MyGPIO_Reset ( GPIO_TypeDef * GPIO , char GPIO_Pin ){
|
||||
|
||||
/*Ecriture du 1 sur le numéro de la pin dans le registre BRR*/
|
||||
GPIO->BRR = (1 << GPIO_Pin);
|
||||
//Pas besoin de | puisque les 0 n'impactent pas la fonction reset
|
||||
}
|
||||
|
||||
//---------------------TOGGLE-----------------//
|
||||
|
|
Loading…
Reference in a new issue