Stm32 HAL 库的使用---Gpio:

Main.c
     HAL_Init(); 
    SystemClock_Config();
    MX_GPIO_LED0_Init();  
    MX_GPIO_KEY3_Init();  
    MX_GPIO_KEY2_Init(); 

Stm32f4xx_hal_msp.c   与Hal库外设接口  初始化相关函数
// KEY1 GPIO  PE3
void  MX_GPIO_KEY3_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct;
  __HAL_RCC_GPIOE_CLK_ENABLE();


  /*Configure GPIO pin : PE4 */
  GPIO_InitStruct.Pin = GPIO_PIN_3;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);


  HAL_NVIC_SetPriority(EXTI3_IRQn, 2, 0);//  抢占组为4bit 副优先级也为4bit ,数字越少优先级越高
  HAL_NVIC_EnableIRQ(EXTI3_IRQn);
}


// KEY2 GPIO  PE2
void  MX_GPIO_KEY2_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct;

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOE_CLK_ENABLE();


  /*Configure GPIO pin : PE4 */
  GPIO_InitStruct.Pin = GPIO_PIN_2;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
  HAL_NVIC_SetPriority(EXTI2_IRQn, 2, 0);// 
  HAL_NVIC_EnableIRQ(EXTI2_IRQn);
}

Stm32f4xx_it.c
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
 {
    if(GPIO_Pin ==GPIO_PIN_3 || GPIO_Pin ==GPIO_PIN_2)
        {

             HAL_GPIO_TogglePin(GPIOF,  GPIO_PIN_10);
        }

 }
 void EXTI3_IRQHandler(void)
 {
       HAL_GPIO_EXTI_IRQHandler( GPIO_PIN_3);
 }
  //KEY1----PE4   
  void EXTI2_IRQHandler(void)
 {
       HAL_GPIO_EXTI_IRQHandler( GPIO_PIN_2);
 }

Ledandohters_thread.c
 while(1)
     {
          HAL_GPIO_WritePin(GPIOF,  GPIO_PIN_9, GPIO_PIN_RESET);
          HAL_GPIO_WritePin(GPIOF,  GPIO_PIN_10, GPIO_PIN_RESET);
          osDelay(500);
          HAL_GPIO_WritePin(GPIOF,  GPIO_PIN_9, GPIO_PIN_SET);
          HAL_GPIO_WritePin(GPIOF,  GPIO_PIN_10, GPIO_PIN_SET);
          osDelay(500);
          printf("hello \r\n");
     }

猜你喜欢

转载自blog.csdn.net/tiger15605353603/article/details/81380300