This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Interruption using push button INT5 (Pin 3.5)

hi,
i try to make an interruption using the pin 3.5, i modified and checked WIU and VIC registers but it doesn't work

#include<stdio.h>
#include<91x_lib.h>

/* Definition structure librairie --------------------------------------------*/
GPIO_InitTypeDef GPIO_InitStructure;
WIU_InitTypeDef WIU_InitStructure;

/* Prototypes fonctions ------------------------------------------------------*/
void BoutonsP_IRQ (void) __irq ;
void GPIO_Configuration(void);

/* Variables globales ------------------------------------------------------*/
unsigned int u32Time=55u;
void wait (void)
{ int i;
for ( i=0 ; i<=1000000 ; i++ );
}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// //
// Function Name : main //
// Description : Programme principal //
// Input : None //
// Output : None //
// Return : None //
// //
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
int main (void) {

GPIO_Configuration();

/*Configuration Interruption BoutonsP*/

SCU_AHBPeriphClockConfig( __VIC, ENABLE ); SCU_WakeUpLineConfig(5);

/* Autorise l'interruption */
// WIU_DeInit();
// WIU_InitStructure.WIU_Line = WIU_Line3;
// WIU_InitStructure.WIU_TriggerEdge = WIU_RisingEdge;
// WIU_StructInit(&WIU_InitStructure);
// WIU_Cmd(ENABLE); WIU ->CTRL = 0x00000002; WIU ->MR = 0x00000020; WIU ->TR = 0x00000020;

/* Autorise l'interruption Mise du Bit E à 1 */ VIC_DeInit(); VIC_InitDefaultVectors(); VIC_GetIRQStatus(EXTIT0_ITLine); VIC_GetSourceITStatus(EXTIT0_ITLine); VIC_ITCmd(EXTIT0_ITLine, ENABLE); VIC_Config(EXTIT0_ITLine, VIC_IRQ, 0); VIC_GetCurrentISRAdd( VIC1 ); VIC_GetISRVectAdd(EXTIT0_ITLine);

/* Autorise l'interruption */

while (1) {

if( u32Time > 50u )
{ GPIO_WriteBit(GPIO7, GPIO_Pin_0 , (BitAction)((1-GPIO_ReadBit(GPIO7, GPIO_Pin_0)))); u32Time++;
} // for ( n=1 ; n<=255; n<<=1 )

// {
// GPIO7->DR[0x3FC] =n;
// wait();
// }
// } } }

void BoutonsP_IRQ (void) __irq
{ int n;

if (GPIO3->DR[0x3FC]== 0x20) /*si INT 5 enfoncé */ { GPIO7->DR[0x3FC] =0x55; for ( n=1 ; n<=10000000 ; n++ ) ; }

WIU_ClearFlag(WIU_Line3);

VIC0->VAR = 0; /* fin de l'interruption*/ VIC1->VAR = 0;

}

////////////////////////////////////////////////////////////////////////////////
// Function Name : GPIO_Configuration
// Description : This function configures the different GPIO ports.
// Input : None
// Output : None
// Return : None
////////////////////////////////////////////////////////////////////////////////
void GPIO_Configuration(void)
{ GPIO_DeInit(GPIO3);
/* GPIO P3.5 */ GPIO_StructInit(&GPIO_InitStructure); GPIO_InitStructure.GPIO_Direction = GPIO_PinInput; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_IPInputConnected = GPIO_IPInputConnected_Enable; GPIO_Init (GPIO3, &GPIO_InitStructure);

/*configuration Pin 7 pour les leds*/ GPIO_DeInit(GPIO7);
/* GPIO pin P7.0 configuration */ GPIO_StructInit(&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput; GPIO_InitStructure.GPIO_Alternate = GPIO_OutputAlt1 ; GPIO_Init(GPIO7, &GPIO_InitStructure);

}

0