HAL IRQ implementation
This commit is contained in:
@@ -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");
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
*
|
||||
|
||||
@@ -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;
|
||||
|
||||
44007
Debug/F407-SX1280.list
44007
Debug/F407-SX1280.list
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user