paolo della vedova
/
interrupt_test_stm32_nucle
interrupt test EXTI stm32 nucleo
main.cpp
- Committer:
- c128
- Date:
- 2015-10-27
- Revision:
- 2:70bfc841a60f
- Parent:
- 1:d049e15030ca
File content as of revision 2:70bfc841a60f:
#include "mbed.h" #include "stm32f4xx_hal.h" #include "stm32f4xx.h" #include "stm32f4xx_hal_gpio.h" static GPIO_InitTypeDef GPIO_InitStruct; int16_t count1 = 1000; void EXTI0_IRQHandler(void) { HAL_NVIC_ClearPendingIRQ(EXTI0_IRQn); HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0); { /* EXTI line interrupt detected */ if(__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_0) != RESET) { __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_0); HAL_GPIO_EXTI_Callback(GPIO_PIN_0); } } } void HAL_GPIO_EXTI_Callback (uint16_t GPIO_Pin) { if (GPIO_Pin == GPIO_PIN_0) { count1 = 100; } } int main() { HAL_Init(); __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_0; //PA0 as interrupt test GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FAST; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_NVIC_SetPriority(EXTI0_IRQn, 3, 0); HAL_NVIC_EnableIRQ(EXTI0_IRQn); /* -2- Configure PA05 IO in output push-pull mode to drive external LED */ GPIO_InitStruct.Pin = GPIO_PIN_5; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FAST; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); while (1) { HAL_NVIC_DisableIRQ(EXTI0_IRQn); HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); /* Insert delay 100 ms */ HAL_Delay(count1); HAL_NVIC_EnableIRQ(EXTI0_IRQn); } }