2020-01-16 04:44 AM
I would like to activate the RISING FALLING function also on PIn 13 and 15 but I can't do it.
I'm probably not able to edit several files that I list
2020-01-16 04:47 AM
main.c add exti15
int exti_flag=0;
int exti15_flag=0;
void send_exti(void);
void send_exti15(void);
switch_status=HAL_GPIO_ReadPin(GPIO_EXTI_PORT,GPIO_EXTI_PIN);
if(exti_flag==1)
{
AppData.Buff[i++]=(switch_status<<7)|(sensor_data.in1<<1)|0x01;
exti_flag=0;
}
else
{
AppData.Buff[i++]=(switch_status<<7)|(sensor_data.in1<<1);
}
switch_status15=HAL_GPIO_ReadPin(GPIO_EXTI15_PORT,GPIO_EXTI15_PIN);
if(exti15_flag==1)
{
AppData.Buff[i++]=(switch_status15<<7)|(sensor_data.in15<<1)|0x01;
exti15_flag=0;
}
else
{
AppData.Buff[i++]=(switch_status15<<7)|(sensor_data.in15<<1);
}
--------------------
void send_exti(void)
{
if(exti_flag==1)
{
Send( );
}
}
void send_exti15(void)
{
if(exti15_flag==1)
{
Send( );
}
}
2020-01-16 04:48 AM
gpio_exti.c add EXTI15
void GPIO_EXTI_RISING_FALLINGInit( void )
{
GPIO_InitTypeDef GPIO_InitStruct={0};
GPIO_EXTI_CLK_ENABLE();
GPIO_InitStruct.Mode =GPIO_MODE_IT_RISING_FALLING;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Pin = GPIO_EXTI_PIN;
HW_GPIO_Init(GPIO_EXTI_PORT, GPIO_EXTI_PIN, &GPIO_InitStruct );
/* Enable and set EXTI lines 4 to 15 Interrupt to the lowest priority */
HAL_NVIC_SetPriority(EXTI4_15_IRQn, 2, 0);
HAL_NVIC_EnableIRQ(EXTI4_15_IRQn);
}
void GPIO_EXTI15_RISING_FALLINGInit( void )
{
GPIO_InitTypeDef GPIO_InitStruct={0};
GPIO_EXTI15_CLK_ENABLE();
GPIO_InitStruct.Mode =GPIO_MODE_IT_RISING_FALLING;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Pin = GPIO_EXTI15_PIN;
HW_GPIO_Init(GPIO_EXTI15_PORT, GPIO_EXTI15_PIN, &GPIO_InitStruct );
/* Enable and set EXTI lines 4 to 15 Interrupt to the lowest priority */
HAL_NVIC_SetPriority(EXTI4_15_IRQn, 2, 0);
HAL_NVIC_EnableIRQ(EXTI4_15_IRQn);
}
2020-01-16 04:49 AM
gpio_exti.h add EXTI15
void GPIO_EXTI_RISING_FALLINGInit( void );
void GPIO_EXTI15_RISING_FALLINGInit( void );
2020-01-16 04:50 AM
stm32l0xx_it.c add GPIO_PIN_15
void EXTI4_15_IRQHandler( void )
{
HAL_GPIO_EXTI_IRQHandler( GPIO_PIN_4 );
HAL_GPIO_EXTI_IRQHandler( GPIO_PIN_5 );
HAL_GPIO_EXTI_IRQHandler( GPIO_PIN_6 );
HAL_GPIO_EXTI_IRQHandler( GPIO_PIN_7 );
HAL_GPIO_EXTI_IRQHandler( GPIO_PIN_8 );
HAL_GPIO_EXTI_IRQHandler( GPIO_PIN_9 );
HAL_GPIO_EXTI_IRQHandler( GPIO_PIN_10 );
HAL_GPIO_EXTI_IRQHandler( GPIO_PIN_11 );
HAL_GPIO_EXTI_IRQHandler( GPIO_PIN_12 );
HAL_GPIO_EXTI_IRQHandler( GPIO_PIN_13 );
// HAL_GPIO_EXTI_IRQHandler( GPIO_PIN_14 );
if(__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_14) != RESET)
{
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_14);
HAL_NVIC_DisableIRQ(EXTI4_15_IRQn);
if(inmode!=0)
{
exti_flag=1;
}
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_14);
HAL_GPIO_EXTI_Callback(GPIO_PIN_14);
HAL_NVIC_EnableIRQ(EXTI4_15_IRQn);
}
// HAL_GPIO_EXTI_IRQHandler( GPIO_PIN_15 );
if(__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_15) != RESET)
{
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_15);
HAL_NVIC_DisableIRQ(EXTI4_15_IRQn);
if(inmode!=0)
{
exti15_flag=1;
}
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_15);
HAL_GPIO_EXTI_Callback(GPIO_PIN_15);
HAL_NVIC_EnableIRQ(EXTI4_15_IRQn);
}
}
2020-01-16 04:51 AM
stm32l0xx_hw_conf.h add EXTI15
#define GPIO_EXTI_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
#define GPIO_EXTI_PORT GPIOB
#define GPIO_EXTI_PIN GPIO_PIN_14
#define GPIO_EXTI15_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
#define GPIO_EXTI15_PORT GPIOB
#define GPIO_EXTI15_PIN GPIO_PIN_15
2020-01-17 06:20 AM
Hello to all
I managed to run 5 EXTI but I always have a problem on the sent values instead of getting the byte 00 I get random strange values, I also added a resistance of 4k on all EXTI the values seem stable but they are not 00
PA1 = 0e
PA4 = 28
PB13 = 07
PB14 = 00
PB15 = 80
how do i get 00 and 01?
My code is this
switch_status1=HAL_GPIO_ReadPin(GPIO_EXTI1_PORT,GPIO_EXTI1_PIN); //PA1
if(exti1_flag==1)
{
AppData.Buff[i++]=(switch_status1<<7)|(sensor_data.in11<<1)|0x01;
exti1_flag=0;
}
else
{
AppData.Buff[i++]=(switch_status1<<7)|(sensor_data.in11<<1);
}
switch_status4=HAL_GPIO_ReadPin(GPIO_EXTI4_PORT,GPIO_EXTI4_PIN); //PA4
if(exti4_flag==1)
{
AppData.Buff[i++]=(switch_status4<<7)|(sensor_data.in14<<1)|0x01;
exti4_flag=0;
}
else
{
AppData.Buff[i++]=(switch_status4<<7)|(sensor_data.in14<<1);
}
switch_status13=HAL_GPIO_ReadPin(GPIO_EXTI13_PORT,GPIO_EXTI13_PIN); //PB13
if(exti13_flag==1)
{
AppData.Buff[i++]=(switch_status13<<7)|(sensor_data.in13<<1)|0x01;
exti13_flag=0;
}
else
{
AppData.Buff[i++]=(switch_status13<<7)|(sensor_data.in13<<1);
}
switch_status=HAL_GPIO_ReadPin(GPIO_EXTI_PORT,GPIO_EXTI_PIN); //PB14
if(exti_flag==1)
{
AppData.Buff[i++]=(switch_status<<7)|(sensor_data.in1<<1)|0x01;
exti_flag=0;
}
else
{
AppData.Buff[i++]=(switch_status<<7)|(sensor_data.in1<<1);
}
switch_status15=HAL_GPIO_ReadPin(GPIO_EXTI15_PORT,GPIO_EXTI15_PIN); //PB15
if(exti15_flag==1)
{
AppData.Buff[i++]=(switch_status15<<7)|(sensor_data.in15<<1)|0x01;
exti15_flag=0;
}
else
{
AppData.Buff[i++]=(switch_status15<<7)|(sensor_data.in15<<1);
}
I'm not a programmer I'm learning by copying part of code, I'm definitely writing random things
If you can help me, you will be grateful