forked from trocache/RefKEIL
GPIO Done
This commit is contained in:
parent
8dc81c0256
commit
f1d1216e44
4 changed files with 43 additions and 22 deletions
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue