добавлена реализация onewire через uart и переделана структуруа шины OneWire и инциализация
Теперь при выборе UART, в функцию Dallas_BusFirstInit передается hdallas, huart, ow, ds А при выборе GPIO ножки: hdallas, gpiox, gpio_pin, ow, ds но надо как-то структуруизировать дальше
This commit is contained in:
@@ -86,30 +86,61 @@ DALLAS_HandleTypeDef hdallas;
|
||||
/* Functions ---------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief Функция для иниицализации шины OW для датчиков
|
||||
* @brief Функция для иниицализации структуры dallas и шины OW для датчиков
|
||||
* @param hdallas Указатель на хендл для общения с датчиками
|
||||
* @param OW Указатель на структуру OneWire (если NULL — используется по умолчанию)
|
||||
* @param DS Указатель на структуру драйвера DS18B20 (если NULL — используется по умолчанию)
|
||||
* @retval HAL Status
|
||||
*/
|
||||
HAL_StatusTypeDef Dallas_BusFirstInit(TIM_HandleTypeDef *htim)
|
||||
#ifndef UART_Driver
|
||||
HAL_StatusTypeDef Dallas_BusFirstInit(DALLAS_HandleTypeDef *hdallas, GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin, OneWire_t *OW_Ptr, DS18B20_Drv_t *DS_Ptr)
|
||||
#else
|
||||
HAL_StatusTypeDef Dallas_BusFirstInit(DALLAS_HandleTypeDef *hdallas, UART_HandleTypeDef *huart, OneWire_t *OW_Ptr, DS18B20_Drv_t *DS_Ptr)
|
||||
#endif
|
||||
{
|
||||
if(htim == NULL)
|
||||
if(hdallas == NULL)
|
||||
return HAL_ERROR;
|
||||
|
||||
HAL_StatusTypeDef result;
|
||||
|
||||
if(OW_Ptr == NULL)
|
||||
hdallas->onewire = &OW;
|
||||
|
||||
HAL_TIM_Base_Start(htim);
|
||||
if(DS_Ptr == NULL)
|
||||
hdallas->ds_devices = &DS;
|
||||
|
||||
hdallas.onewire = &OW;
|
||||
hdallas.ds_devices = &DS;
|
||||
OW.DataPin = OW_Pin;
|
||||
OW.DataPort = OW_GPIO_Port;
|
||||
#ifndef UART_Driver
|
||||
if(GPIOx == NULL)
|
||||
return HAL_ERROR;
|
||||
|
||||
OW_TIM->CR1 |= TIM_CR1_CEN;
|
||||
hdallas->onewire->DataPin = GPIO_Pin;
|
||||
hdallas->onewire->DataPort = GPIOx;
|
||||
#else
|
||||
if(huart == NULL)
|
||||
return HAL_ERROR;
|
||||
hdallas->onewire->huart = huart;
|
||||
#endif
|
||||
/* Инициализация onewire и поиск датчиков*/
|
||||
OneWire_Init(&OW);
|
||||
OneWire_Init(hdallas->onewire);
|
||||
|
||||
|
||||
return DS18B20_Search(&DS, &OW) != HAL_OK;
|
||||
return Dallas_Search(hdallas);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Поиск датчиков на шине onewire
|
||||
* @param hdallas Указатель на хендл для общения с датчиками
|
||||
* @retval HAL Status
|
||||
*/
|
||||
HAL_StatusTypeDef Dallas_Search(DALLAS_HandleTypeDef *hdallas)
|
||||
{
|
||||
if(hdallas == NULL)
|
||||
return HAL_ERROR;
|
||||
|
||||
return DS18B20_Search(hdallas->ds_devices, hdallas->onewire) != HAL_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Функция для иниицализации нового датчика в структуре
|
||||
@@ -153,7 +184,7 @@ HAL_StatusTypeDef Dallas_ReplaceLostedSensor(DALLAS_SensorHandleTypeDef *sensor)
|
||||
|
||||
if(sensor->isLost)
|
||||
{
|
||||
if(DS18B20_Search(sensor->hdallas->ds_devices, sensor->hdallas->onewire) != HAL_OK)
|
||||
if(Dallas_Search(sensor->hdallas) != HAL_OK)
|
||||
return HAL_ERROR;
|
||||
|
||||
if(sensor->Init.init_func(sensor->hdallas, sensor) != HAL_OK)
|
||||
|
||||
Reference in New Issue
Block a user