сделаны базовые хедеры: - mylibs_config - mylibs_defs - mylibs_include - trace - trackers - bit_access также сделан модуль general_gpio.c/.h Но надо проверить переструктуризированные модули Остальные модули __general_XXX в целом готовы и как-то работают (на МЗКТЭ) но не структуризированы
		
			
				
	
	
		
			175 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			175 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** 
 | 
						||
**************************************************************************
 | 
						||
* @file general_gpio.h
 | 
						||
* @brief Заголовочный файл для модуля инициализации портов.
 | 
						||
**************************************************************************
 | 
						||
* @defgroup MY_LIBS_GPIO      GPIO Tools
 | 
						||
* @ingroup  MYLIBS_PERIPHERAL
 | 
						||
* @brief    Функции и макросы для удобной работы с GPIO.
 | 
						||
*************************************************************************/
 | 
						||
#ifndef __GPIO_GENERAL_H_
 | 
						||
#define __GPIO_GENERAL_H_
 | 
						||
 | 
						||
#include "mylibs_defs.h"
 | 
						||
 | 
						||
/** 
 | 
						||
  * @addtogroup GPIO_INIT Init defines
 | 
						||
  * @ingroup    GPIO_GENERAL
 | 
						||
  * @brief      Настройка состояний кнопок и количества тиков в периоде ШИМ
 | 
						||
  * @{
 | 
						||
  */
 | 
						||
 | 
						||
#ifndef LED_PWM_TICKS
 | 
						||
#define LED_PWM_TICKS 15 ///< Количество тиков в периоде ШИМ
 | 
						||
#endif
 | 
						||
  
 | 
						||
#ifndef LED_ON
 | 
						||
#define LED_ON 1  ///< Состояние пина для включения светодиода
 | 
						||
#endif
 | 
						||
#ifndef LED_OFF
 | 
						||
#define LED_OFF 0 ///< Состояние пина для выключения светодиода
 | 
						||
#endif
 | 
						||
 | 
						||
#ifndef SW_ON
 | 
						||
#define SW_ON 1   ///< Состояние пина при нажатой кнопке
 | 
						||
#endif
 | 
						||
#ifndef SW_OFF
 | 
						||
#define SW_OFF 0  ///< Состояние пина при отжатой кнопке
 | 
						||
#endif
 | 
						||
 | 
						||
/** GPIO_INIT
 | 
						||
  * @}
 | 
						||
  */
 | 
						||
 | 
						||
 | 
						||
// /**
 | 
						||
//   * @brief Маппинг альтернативной функции SPI между GPIO
 | 
						||
//   * @ingroup  GPIO_GENERAL
 | 
						||
//   */
 | 
						||
// #define SPI_Alternate_Mapping(INSTANCE) \
 | 
						||
// ((((INSTANCE) == TIM1)  || ((INSTANCE) == TIM2))?     GPIO_AF1_TIM1:                                                   \
 | 
						||
// (((INSTANCE) == TIM3)   || ((INSTANCE) == TIM4)   || ((INSTANCE) == TIM5))? GPIO_AF2_TIM3:                            \
 | 
						||
// (((INSTANCE) == TIM8)   || ((INSTANCE) == TIM9)   || ((INSTANCE) == TIM10) || ((INSTANCE) == TIM11))? GPIO_AF3_TIM8:  \
 | 
						||
// (((INSTANCE) == TIM12)  || ((INSTANCE) == TIM13)  || ((INSTANCE) == TIM14))? GPIO_AF9_TIM12:                        \
 | 
						||
// (0))
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  * @brief Маппинг альтернативной функции TIM между GPIO
 | 
						||
  * @ingroup  GPIO_GENERAL
 | 
						||
  */
 | 
						||
#define TIM_Alternate_Mapping(INSTANCE) \
 | 
						||
((((INSTANCE) == TIM1)  || ((INSTANCE) == TIM2))? GPIO_AF1_TIM1:                                                      \
 | 
						||
(((INSTANCE) == TIM3)   || ((INSTANCE) == TIM4)   || ((INSTANCE) == TIM5))? GPIO_AF2_TIM3:                            \
 | 
						||
(((INSTANCE) == TIM8)   || ((INSTANCE) == TIM9)   || ((INSTANCE) == TIM10) || ((INSTANCE) == TIM11))? GPIO_AF3_TIM8:  \
 | 
						||
(((INSTANCE) == TIM12)  || ((INSTANCE) == TIM13)  || ((INSTANCE) == TIM14))? GPIO_AF9_TIM12:                          \
 | 
						||
(0))
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  * @brief Режимы работы светодиода
 | 
						||
  * @ingroup  GPIO_LEDS
 | 
						||
  */
 | 
						||
typedef enum
 | 
						||
{
 | 
						||
  LED_IS_OFF = 0,       ///< Светодиод выключен
 | 
						||
  LED_IS_ON = 1,        ///< Светодиод включен
 | 
						||
  LED_IS_BLINKING = 2,  ///< Моргание светодиодом
 | 
						||
  LED_IS_FADING = 3,    ///< Плавное моргание светодиодом
 | 
						||
}GPIO_LEDStateTypeDef;
 | 
						||
 | 
						||
/**
 | 
						||
  * @brief Структура светодиода
 | 
						||
  * @ingroup  GPIO_LEDS
 | 
						||
  */
 | 
						||
typedef struct
 | 
						||
{
 | 
						||
  GPIO_LEDStateTypeDef state;     ///< Текущий режим работы светодиода
 | 
						||
  
 | 
						||
  GPIO_TypeDef  *LED_Port;        ///< GPIO порт ножки светодиода
 | 
						||
  uint32_t      LED_Pin;          ///< GPIO пин ножки светодиода
 | 
						||
  
 | 
						||
  uint8_t       LED_ActiveLvl;    ///< Активный уровень ножки (при котором светодиод горит)
 | 
						||
  uint32_t      LED_Period;       ///< Период моргания светодиода
 | 
						||
 | 
						||
  uint32_t      tickprev;///< Период моргания светодиода
 | 
						||
}GPIO_LEDTypeDef;
 | 
						||
 | 
						||
/**
 | 
						||
  * @brief Структура кнопки
 | 
						||
  * @ingroup  GPIO_SWITCH
 | 
						||
  */
 | 
						||
typedef struct
 | 
						||
{
 | 
						||
  GPIO_TypeDef  *Sw_Port;         ///< GPIO порт ножки кнопки
 | 
						||
  uint32_t      Sw_Pin;           ///< GPIO пин ножки кнопки
 | 
						||
  
 | 
						||
  uint8_t       Sw_ActiveLvl;     ///< Активный уровень ножки (при котором кнопка нажата)
 | 
						||
  uint32_t      Sw_PrevState;     ///< Предыдущее состояние кнопки
 | 
						||
  uint32_t      Sw_FilterDelay;   ///< Фильтр от дребезга (в мс)
 | 
						||
 | 
						||
  uint32_t      tickprev;///< Период моргания светодиода  
 | 
						||
}GPIO_SwitchTypeDef;
 | 
						||
 | 
						||
 | 
						||
/////////////////////////////////////////////////////////////////////
 | 
						||
///////////////////////////---FUNCTIONS---///////////////////////////
 | 
						||
/** 
 | 
						||
  * @addtogroup GPIO_GENERAL  General tools
 | 
						||
  * @ingroup    MY_LIBS_GPIO
 | 
						||
  * @brief      Общие функции/макросы для работы с GPIO
 | 
						||
  * @{
 | 
						||
  */
 | 
						||
 | 
						||
HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx);
 | 
						||
 | 
						||
/** GPIO_GENERAL
 | 
						||
  * @}
 | 
						||
  */
 | 
						||
 | 
						||
/** 
 | 
						||
* @addtogroup GPIO_SWITCH  Switch tools
 | 
						||
* @ingroup    MY_LIBS_GPIO
 | 
						||
* @brief      Функции для работы с GPIO, как с кнопкой
 | 
						||
* @{
 | 
						||
*/
 | 
						||
 | 
						||
/* Инициализировать кнопку (структуру кнопки) */
 | 
						||
HAL_StatusTypeDef GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_On_State);
 | 
						||
/* Считать состоянии кнопки запуска */
 | 
						||
uint8_t GPIO_Read_Switch(GPIO_SwitchTypeDef *swstart);
 | 
						||
 | 
						||
/** GPIO_SWITCH
 | 
						||
  * @}
 | 
						||
  */
 | 
						||
 | 
						||
 | 
						||
/** 
 | 
						||
  * @addtogroup GPIO_LEDS  LED tools
 | 
						||
  * @ingroup    MY_LIBS_GPIO
 | 
						||
  * @brief      Функции для работы с GPIO, для управления светодиодом
 | 
						||
  * @{
 | 
						||
  */
 | 
						||
 | 
						||
/* Инициализировать светодиод (структуру светодиода) */
 | 
						||
HAL_StatusTypeDef GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_On_State);
 | 
						||
/* Включить светодиод */
 | 
						||
HAL_StatusTypeDef GPIO_LED_On(GPIO_LEDTypeDef *led);
 | 
						||
/* Выключить светодиод */
 | 
						||
HAL_StatusTypeDef GPIO_LED_Off(GPIO_LEDTypeDef *led);
 | 
						||
/* Выставить светодиод по переменной */
 | 
						||
HAL_StatusTypeDef GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state);
 | 
						||
/* Активировать моргание светодиодом */
 | 
						||
HAL_StatusTypeDef GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period);
 | 
						||
/* Активировать моргание светодиодом */
 | 
						||
HAL_StatusTypeDef GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period);
 | 
						||
/* Управление динамическими режимами свечения светодиода */
 | 
						||
void GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led);
 | 
						||
 | 
						||
/** GPIO_LEDS
 | 
						||
  * @}
 | 
						||
  */
 | 
						||
///////////////////////////---FUNCTIONS---///////////////////////////
 | 
						||
 | 
						||
 | 
						||
#endif // __GPIO_GENERAL_H_
 |