HAL IRQ implementation

This commit is contained in:
2023-02-05 16:16:29 -03:00
parent 01e74a54bb
commit bc029344be
6 changed files with 22072 additions and 21971 deletions

View File

@@ -24,7 +24,7 @@ void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) {
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
switch (GPIO_Pin){
case 8:
//Chama a lib do SX1280 aqui
radio0.HalInterruptCallback();
break;
default:
break;
@@ -37,6 +37,5 @@ void start(){
debug.info("Init timers begin");
HAL_TIM_Base_Start(&htim6);
debug.info("Init timers end");
}

View File

@@ -64,10 +64,10 @@ SX1280Hal::~SX1280Hal( void )
void SX1280Hal::IoIrqInit( DioIrqHandler irqHandler )
{
assert_param( RadioSpi != NULL);
// BUSY.mode( PullNone );
//Conexão entre interrupt do HAL e da biblioteca
//irqHandler é o ponteiro para a função que deve ser chamada em caso de interrupt
RadioIrqHandler = irqHandler;
}
void SX1280Hal::Reset( void )
@@ -75,12 +75,9 @@ void SX1280Hal::Reset( void )
//Por que desliga o IRQ?
__disable_irq( );
HAL_Delay( 20 );
//Por que input e output?
//RadioReset.output( );
HAL_GPIO_WritePin(RadioResetPort, RadioResetPin, GPIO_PIN_RESET);
HAL_Delay( 50 );
HAL_GPIO_WritePin(RadioResetPort, RadioResetPin, GPIO_PIN_SET);
//RadioReset.input( ); // Using the internal pull-up
HAL_Delay( 20 );
__enable_irq( );
}
@@ -255,6 +252,12 @@ uint8_t SX1280Hal::SpiTransmitReceiveByte( uint8_t byte )
return receivedByte;
}
void SX1280Hal::HalInterruptCallback(void){
if(RadioIrqHandler != NULL){
(this->*RadioIrqHandler)();
}
}
/*
uint8_t SX1280Hal::GetDioStatus( void )
//Conferir o que deve retornar

View File

@@ -126,6 +126,7 @@ public:
virtual void ReadBuffer( uint8_t offset, uint8_t *buffer, uint8_t size );
uint8_t SpiTransmitReceiveByte( uint8_t byte );
void HalInterruptCallback(void);
/*!
* \brief Returns the status of DIOs pins
@@ -147,6 +148,8 @@ protected:
GPIO_TypeDef* BUSYPort; //!< The pin connected to BUSY
uint16_t BUSYPin;
DioIrqHandler RadioIrqHandler = NULL;
/*!
* \brief Sets the callback functions to be run on DIO1..3 interrupt
*

View File

@@ -495,15 +495,22 @@ static void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(SX1280_INT_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pins : SX1280_BUSY_Pin SX1280_RST_Pin LD4_Pin LD3_Pin
LD5_Pin LD6_Pin Audio_RST_Pin */
GPIO_InitStruct.Pin = SX1280_BUSY_Pin|SX1280_RST_Pin|LD4_Pin|LD3_Pin
|LD5_Pin|LD6_Pin|Audio_RST_Pin;
/*Configure GPIO pins : SX1280_BUSY_Pin LD4_Pin LD3_Pin LD5_Pin
LD6_Pin Audio_RST_Pin */
GPIO_InitStruct.Pin = SX1280_BUSY_Pin|LD4_Pin|LD3_Pin|LD5_Pin
|LD6_Pin|Audio_RST_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
/*Configure GPIO pin : SX1280_RST_Pin */
GPIO_InitStruct.Pin = SX1280_RST_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(SX1280_RST_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pin : OTG_FS_OverCurrent_Pin */
GPIO_InitStruct.Pin = OTG_FS_OverCurrent_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

File diff suppressed because it is too large Load Diff

View File

@@ -299,8 +299,10 @@ PC7.GPIO_Speed=GPIO_SPEED_FREQ_LOW
PC7.Locked=true
PC7.Mode=Master_Clock_Activated
PC7.Signal=I2S3_MCK
PD10.GPIOParameters=GPIO_Label
PD10.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultOutputPP
PD10.GPIO_Label=SX1280_RST
PD10.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD
PD10.GPIO_PuPd=GPIO_NOPULL
PD10.Locked=true
PD10.Signal=GPIO_Output
PD12.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label