Skocz do zawartości

Kurs STM32 F4 - #9 - Obsługa I2C, akcelerometr


Pomocna odpowiedź

  • 3 miesiące później...
(edytowany)

Witam, jak uruchomić przerwania z tego układu?
Mam następujący kod:
 

    uint8_t ctrl_reg_1 = 0b10010111;
    uint8_t int_1_settings = 0b00001000;
    uint8_t int_1_treshold = 0b00001111;
    HAL_I2C_Mem_Write(&hi2c1, LSM303_ACC_ADDRESS, LSM303_ACC_CTRL_REG1_A, 1, &ctrl_reg_1, 1, HAL_MAX_DELAY);
	HAL_I2C_Mem_Write(&hi2c1, LSM303_ACC_ADDRESS, LSM303_ACC_INT1_CFG_A, 1, &int_1_settings, 1, HAL_MAX_DELAY);
	HAL_I2C_Mem_Write(&hi2c1, LSM303_ACC_ADDRESS, LSM303_ACC_INT1_THS_A, 1, &int_1_treshold, 1, HAL_MAX_DELAY);

Oraz przerwanie:

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
    if(GPIO_Pin==GPIO_PIN_0){
        handle_user_button();
    } else if(GPIO_Pin==GPIO_PIN_4){
        handle_user_button();
    } else if(GPIO_Pin==GPIO_PIN_5){
        handle_user_button();
    }
}

pin PE4 ustawiłem na GPIO_EXTI4, w NVIC ustawiłem EXTI line4 interrupt na enabled, jednak przy poruszaniu płytką przerwanie nie jest wywoływane. W rejestrze INT1_SRC_A bit IA jest ustawiony na 1, mimo tego funkcja HAL_GPIO_EXTI_Callback nie wykonuje się

Płytka STM32F411E-DISCO.

Z góry dziękuję za odpowiedź.

 

Edytowano przez mateuszmonas
zmiana kodu

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...