138 lines
4.4 KiB
C
138 lines
4.4 KiB
C
/**
|
|
* @file map_hal.c
|
|
*
|
|
* @copyright Nehemis SARL reserves all rights even in the event of industrial
|
|
* property rights. We reserve all rights of disposal such as
|
|
* copying and passing on to third parties.
|
|
*
|
|
* @brief Mapping of the hardware interfaces.
|
|
*
|
|
*/
|
|
|
|
#ifndef MAP_HAL_H_
|
|
#define MAP_HAL_H_
|
|
|
|
/******************************************************************************
|
|
* Include Header Files
|
|
******************************************************************************/
|
|
#include "nms_types.h"
|
|
|
|
/* CubeMX */
|
|
#include "gpio.h"
|
|
#include "tim.h"
|
|
#include "adc.h"
|
|
#include "fdcan.h"
|
|
#include "i2c.h"
|
|
|
|
/******************************************************************************
|
|
* Global define
|
|
******************************************************************************/
|
|
#define MOTOR_PWM_CHANNEL TIM_CHANNEL_1
|
|
|
|
/******************************************************************************
|
|
* Type declarations
|
|
******************************************************************************/
|
|
typedef enum
|
|
{
|
|
MAP_HAL_PMP_ENABLE,
|
|
MAP_HAL_GPIO_NUMBER
|
|
} MapHalGpioPin_en;
|
|
|
|
typedef enum
|
|
{
|
|
MAP_HAL_TIMER_RTOS,
|
|
MAP_HAL_TIMER_FILTER,
|
|
MAP_HAL_TIMER_NUMBER
|
|
} MapHalTimerModule_en;
|
|
|
|
typedef enum
|
|
{
|
|
MAP_HAL_ADC_1,
|
|
MAP_HAL_ADC_NUMBER
|
|
}MapHalAdcModule_en;
|
|
|
|
typedef enum
|
|
{
|
|
MAP_HAL_GRUNDFOS_PMP_I2C_HANDLE,
|
|
MAP_HAL_I2C_NUMBER
|
|
}MapHalI2cModule_en;
|
|
/******************************************************************************
|
|
* Extern Function Declarations
|
|
******************************************************************************/
|
|
/**
|
|
* @brief Maps a HAL GPIO pin to the corresponding STM32 port and pin.
|
|
*
|
|
* @param pin_en HAL GPIO pin to be mapped.
|
|
* @param targetPort_ppst Pointer to the corresponding STM32 port.
|
|
* @param targetPin_pu16 Pointer to the corresponding STM32 pin.
|
|
*
|
|
* @return Error code: 0 if successful, nonzero otherwise.
|
|
*/
|
|
uint32 MapHalGpio(MapHalGpioPin_en pin_en, uint16* targetPin_pu16, GPIO_TypeDef** targetPort_ppst);
|
|
|
|
/**
|
|
* @brief Maps a specific pin callback to the corresponding STM32 pin.
|
|
*
|
|
* @param targetPin_u16 STM32 pin.
|
|
* @param pin_pen Pointer to the enumerator representing the HAL pin.
|
|
*
|
|
* @return Error code: 0 if successful, nonzero otherwise.
|
|
*/
|
|
uint32 MapHalGpioCallback(uint16 targetPin_u16, MapHalGpioPin_en* pin_pen);
|
|
|
|
/**
|
|
* @brief Maps a HAL timer module to its corresponding STM32 timer module.
|
|
*
|
|
* @param[in] halModule_en HAL timer module (e.g., HAL_TIMER_1).
|
|
* @param[out] targetModule_ppst Pointer to the corresponding STM32 timer module (e.g., htim1).
|
|
*
|
|
* @return Error code:
|
|
* - HAL_TIM_LOG_LOCATION_4_ERROR_INVALID_ARGUMENT if the mapping fails.
|
|
* - LOG_ERROR_NONE if successful.
|
|
*/
|
|
uint32 MapHalTimerModule(MapHalTimerModule_en timer_en, TIM_HandleTypeDef** targetModule_ppst);
|
|
|
|
/**
|
|
* @brief Retrieves the HAL timer module associated with a given STM32 timer module.
|
|
*
|
|
* @param[in] targetModule_ppst Pointer to the STM32 timer module (e.g., htim1).
|
|
* @param[out] timerModule_pen Pointer to store the corresponding HAL module (e.g., HAL_TIMER_1).
|
|
*
|
|
* @return Error code:
|
|
* - HAL_TIM_LOG_LOCATION_4_ERROR_INVALID_ARGUMENT if the mapping fails.
|
|
* - LOG_ERROR_NONE if successful.
|
|
*/
|
|
uint32 MapHalTimerCallback(TIM_HandleTypeDef** targetModule_ppst, MapHalTimerModule_en* timer_pen);
|
|
|
|
/**
|
|
* @brief Maps a HAL ADC pin to the corresponding STM32 port and pin.
|
|
*
|
|
* @param pin_en HAL GPIO pin to be mapped.
|
|
* @param targetModule_ppst Pointer to the corresponding STM32 ADC module.
|
|
*
|
|
* @return Error code: 0 if successful, nonzero otherwise.
|
|
*/
|
|
uint32 MapHalAdcModule(MapHalAdcModule_en pin_en, ADC_HandleTypeDef** targetModule_ppst);
|
|
|
|
/**
|
|
* @brief Maps a specific pin callback to the corresponding STM32 pin.
|
|
*
|
|
* @param targetModule_pst STM32 pin.
|
|
* @param adcModule_en Pointer to the enumerator representing the HAL pin.
|
|
*
|
|
* @return Error code: 0 if successful, nonzero otherwise.
|
|
*/
|
|
uint32 MapHalAdcCallback(ADC_HandleTypeDef *targetModule_pst, MapHalAdcModule_en *adcModule_en);
|
|
|
|
/**
|
|
* @brief Maps a HAL I2C pin to the corresponding STM32 port and pin.
|
|
*
|
|
* @param pin_en HAL GPIO pin to be mapped.
|
|
* @param targetModule_ppst Pointer to the corresponding STM32 ADC module.
|
|
*
|
|
* @return Error code: 0 if successful, nonzero otherwise.
|
|
*/
|
|
uint32 MapHalI2cModule(MapHalI2cModule_en module_en, I2C_HandleTypeDef ** targetModule_ppst);
|
|
|
|
#endif /* MAP_HAL_H_ */
|