Src/main.c
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOC_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();
  __HAL_RCC_GPIOB_CLK_ENABLE();

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOA, ENTER_RTN_Pin|UP_RTN_Pin|RIGHT_RTN_Pin|RADIO_CS_Pin 
                          |RADIO_RESET_Pin, GPIO_PIN_RESET);

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOB, LEFT_RET_Pin|RIGHT_MOTOR_Pin|LEFT_MOTOR_Pin, GPIO_PIN_RESET);

  /*Configure GPIO pin : LED_Pin */
  GPIO_InitStruct.Pin = LED_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);

  /*Configure GPIO pins : ENTER_RTN_Pin UP_RTN_Pin RIGHT_RTN_Pin RADIO_CS_Pin 
                           RADIO_RESET_Pin */
  GPIO_InitStruct.Pin = ENTER_RTN_Pin|UP_RTN_Pin|RIGHT_RTN_Pin|RADIO_CS_Pin 
                          |RADIO_RESET_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  /*Configure GPIO pins : ENTER_Pin UP_Pin */
  GPIO_InitStruct.Pin = ENTER_Pin|UP_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  /*Configure GPIO pins : RIGHT_Pin LEFT_Pin */
  GPIO_InitStruct.Pin = RIGHT_Pin|LEFT_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

  /*Configure GPIO pins : LEFT_RET_Pin RIGHT_MOTOR_Pin LEFT_MOTOR_Pin */
  GPIO_InitStruct.Pin = LEFT_RET_Pin|RIGHT_MOTOR_Pin|LEFT_MOTOR_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

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

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

  /* EXTI interrupt init*/
  HAL_NVIC_SetPriority(EXTI0_IRQn, 5, 0);
  HAL_NVIC_EnableIRQ(EXTI0_IRQn);

  HAL_NVIC_SetPriority(EXTI2_IRQn, 5, 0);
  HAL_NVIC_EnableIRQ(EXTI2_IRQn);

  HAL_NVIC_SetPriority(EXTI3_IRQn, 5, 0);
  HAL_NVIC_EnableIRQ(EXTI3_IRQn);

  HAL_NVIC_SetPriority(EXTI9_5_IRQn, 5, 0);
  HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);

  HAL_NVIC_SetPriority(EXTI15_10_IRQn, 5, 0);
  HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);

}
/**
  * @brief GPIO Initialization Function
  * @param None
  * @retval None
  */
@brief GPIO Initialization Function
@param None
@retval None
@brief GPIO Initialization Function @param None @retval None
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};
  __HAL_RCC_GPIOC_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();
  __HAL_RCC_GPIOB_CLK_ENABLE();
  HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
  HAL_GPIO_WritePin(GPIOA, ENTER_RTN_Pin|UP_RTN_Pin|RIGHT_RTN_Pin|RADIO_CS_Pin 
                          |RADIO_RESET_Pin, GPIO_PIN_RESET);
  HAL_GPIO_WritePin(GPIOB, LEFT_RET_Pin|RIGHT_MOTOR_Pin|LEFT_MOTOR_Pin, GPIO_PIN_RESET);
  GPIO_InitStruct.Pin = LED_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
  GPIO_InitStruct.Pin = ENTER_RTN_Pin|UP_RTN_Pin|RIGHT_RTN_Pin|RADIO_CS_Pin 
                          |RADIO_RESET_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  GPIO_InitStruct.Pin = ENTER_Pin|UP_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  GPIO_InitStruct.Pin = RIGHT_Pin|LEFT_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  GPIO_InitStruct.Pin = LEFT_RET_Pin|RIGHT_MOTOR_Pin|LEFT_MOTOR_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  GPIO_InitStruct.Pin = RADIO_INT_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(RADIO_INT_GPIO_Port, &GPIO_InitStruct);
  GPIO_InitStruct.Pin = DOWN_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(DOWN_GPIO_Port, &GPIO_InitStruct);
  HAL_NVIC_SetPriority(EXTI0_IRQn, 5, 0);
  HAL_NVIC_EnableIRQ(EXTI0_IRQn);
  HAL_NVIC_SetPriority(EXTI2_IRQn, 5, 0);
  HAL_NVIC_EnableIRQ(EXTI2_IRQn);
  HAL_NVIC_SetPriority(EXTI3_IRQn, 5, 0);
  HAL_NVIC_EnableIRQ(EXTI3_IRQn);
  HAL_NVIC_SetPriority(EXTI9_5_IRQn, 5, 0);
  HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
  HAL_NVIC_SetPriority(EXTI15_10_IRQn, 5, 0);
  HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
}
static void MX_GPIO_Init ( void ) { GPIO_InitTypeDef GPIO_InitStruct = { 0 } ; __HAL_RCC_GPIOC_CLK_ENABLE ( ) ; __HAL_RCC_GPIOA_CLK_ENABLE ( ) ; __HAL_RCC_GPIOB_CLK_ENABLE ( ) ; HAL_GPIO_WritePin ( LED_GPIO_Port , LED_Pin , GPIO_PIN_SET ) ; HAL_GPIO_WritePin ( GPIOA , ENTER_RTN_Pin | UP_RTN_Pin | RIGHT_RTN_Pin | RADIO_CS_Pin | RADIO_RESET_Pin , GPIO_PIN_RESET ) ; HAL_GPIO_WritePin ( GPIOB , LEFT_RET_Pin | RIGHT_MOTOR_Pin | LEFT_MOTOR_Pin , GPIO_PIN_RESET ) ; GPIO_InitStruct . Pin = LED_Pin ; GPIO_InitStruct . Mode = GPIO_MODE_OUTPUT_PP ; GPIO_InitStruct . Pull = GPIO_NOPULL ; GPIO_InitStruct . Speed = GPIO_SPEED_FREQ_LOW ; HAL_GPIO_Init ( LED_GPIO_Port , & GPIO_InitStruct ) ; GPIO_InitStruct . Pin = ENTER_RTN_Pin | UP_RTN_Pin | RIGHT_RTN_Pin | RADIO_CS_Pin | RADIO_RESET_Pin ; GPIO_InitStruct . Mode = GPIO_MODE_OUTPUT_PP ; GPIO_InitStruct . Pull = GPIO_NOPULL ; GPIO_InitStruct . Speed = GPIO_SPEED_FREQ_LOW ; HAL_GPIO_Init ( GPIOA , & GPIO_InitStruct ) ; GPIO_InitStruct . Pin = ENTER_Pin | UP_Pin ; GPIO_InitStruct . Mode = GPIO_MODE_IT_FALLING ; GPIO_InitStruct . Pull = GPIO_PULLUP ; HAL_GPIO_Init ( GPIOA , & GPIO_InitStruct ) ; GPIO_InitStruct . Pin = RIGHT_Pin | LEFT_Pin ; GPIO_InitStruct . Mode = GPIO_MODE_IT_FALLING ; GPIO_InitStruct . Pull = GPIO_PULLUP ; HAL_GPIO_Init ( GPIOB , & GPIO_InitStruct ) ; GPIO_InitStruct . Pin = LEFT_RET_Pin | RIGHT_MOTOR_Pin | LEFT_MOTOR_Pin ; GPIO_InitStruct . Mode = GPIO_MODE_OUTPUT_PP ; GPIO_InitStruct . Pull = GPIO_NOPULL ; GPIO_InitStruct . Speed = GPIO_SPEED_FREQ_LOW ; HAL_GPIO_Init ( GPIOB , & GPIO_InitStruct ) ; GPIO_InitStruct . Pin = RADIO_INT_Pin ; GPIO_InitStruct . Mode = GPIO_MODE_IT_RISING ; GPIO_InitStruct . Pull = GPIO_NOPULL ; HAL_GPIO_Init ( RADIO_INT_GPIO_Port , & GPIO_InitStruct ) ; GPIO_InitStruct . Pin = DOWN_Pin ; GPIO_InitStruct . Mode = GPIO_MODE_IT_RISING ; GPIO_InitStruct . Pull = GPIO_NOPULL ; HAL_GPIO_Init ( DOWN_GPIO_Port , & GPIO_InitStruct ) ; HAL_NVIC_SetPriority ( EXTI0_IRQn , 5 , 0 ) ; HAL_NVIC_EnableIRQ ( EXTI0_IRQn ) ; HAL_NVIC_SetPriority ( EXTI2_IRQn , 5 , 0 ) ; HAL_NVIC_EnableIRQ ( EXTI2_IRQn ) ; HAL_NVIC_SetPriority ( EXTI3_IRQn , 5 , 0 ) ; HAL_NVIC_EnableIRQ ( EXTI3_IRQn ) ; HAL_NVIC_SetPriority ( EXTI9_5_IRQn , 5 , 0 ) ; HAL_NVIC_EnableIRQ ( EXTI9_5_IRQn ) ; HAL_NVIC_SetPriority ( EXTI15_10_IRQn , 5 , 0 ) ; HAL_NVIC_EnableIRQ ( EXTI15_10_IRQn ) ; }
@brief GPIO Initialization Function
 @param None
 @retval None
@brief GPIO Initialization Function @param None @retval None
/* GPIO Ports Clock Enable */ /*Configure GPIO pin Output Level */ /*Configure GPIO pin Output Level */ /*Configure GPIO pin Output Level */ /*Configure GPIO pin : LED_Pin */ /*Configure GPIO pins : ENTER_RTN_Pin UP_RTN_Pin RIGHT_RTN_Pin RADIO_CS_Pin 
                           RADIO_RESET_Pin */ /*Configure GPIO pins : ENTER_Pin UP_Pin */ /*Configure GPIO pins : RIGHT_Pin LEFT_Pin */ /*Configure GPIO pins : LEFT_RET_Pin RIGHT_MOTOR_Pin LEFT_MOTOR_Pin */ /*Configure GPIO pin : RADIO_INT_Pin */ /*Configure GPIO pin : DOWN_Pin */ /* EXTI interrupt init*/