сделана инициализация всей периферии для OW в Dallas_BusFirstInit

можно выбрать дефолтную периферию, передав в фукнию NULL, а можно и свою кастомную, типа

  Dallas_BusFirstInit(&hdallas, GPIOA, GPIO_PIN_2);

надо теперь расписать все в ридми
This commit is contained in:
2025-06-30 19:00:42 +03:00
parent fad8b2551a
commit 5cc733f4d2
4 changed files with 43 additions and 23 deletions

View File

@@ -7,7 +7,6 @@
#include "ow_port.h"
#include "onewire.h"
#include "tim.h"
uint32_t pin_pos = (OW_Pin_Numb < 8) ? (OW_Pin_Numb * 4) : ((OW_Pin_Numb - 8) * 4);
/**
* @brief The internal function is used as gpio pin mode
@@ -18,7 +17,8 @@ void OneWire_Pin_Mode(OneWire_t* OW, PinMode Mode)
{
#if defined(UART_Driver)
#elif defined(CMSIS_Driver)
volatile uint32_t *config_reg = (OW_Pin_Numb < 8) ? &(OW->DataPort->CRL) : &(OW->DataPort->CRH);
volatile uint32_t *config_reg = (OW->DataPinNumb < 8) ? &(OW->DataPort->CRL) : &(OW->DataPort->CRH);
uint32_t pin_pos = (OW->DataPinNumb < 8) ? (OW->DataPinNumb * 4) : ((OW->DataPinNumb - 8) * 4);
// —брос текущих 4 бит (CNF + MODE)
*config_reg &= ~(0xF << pin_pos);
@@ -27,7 +27,7 @@ volatile uint32_t *config_reg = (OW_Pin_Numb < 8) ? &(OW->DataPort->CRL) : &(OW-
// ¬ход с подт¤жкой или без Ц например, CNF = 0b01, MODE = 0b00
// «десь устанавливаем вход с подт¤жкой:
*config_reg |= (0x8 << pin_pos); // CNF=10, MODE=00 (вход с подт¤жкой)
OW->DataPort->ODR |= (1 << OW_Pin_Numb); // ¬ключить подт¤жку вверх
OW->DataPort->ODR |= (1 << OW->DataPinNumb); // ¬ключить подт¤жку вверх
}
else
{
@@ -118,3 +118,4 @@ void OneWire_Delay_us(uint32_t us)
prev = curr;
}
}