Files
E32_433_dev/Core/Src/e32_hal.c

124 lines
2.5 KiB
C
Raw Permalink Normal View History

2026-04-10 20:26:51 +08:00
#include "e32_hal.h"
/**
* <EFBFBD>Ƭ<EFBFBD><EFBFBD>ƽ̨<EFBFBD>й<EFBFBD>
*/
#include "main.h"
#include "gpio.h"
#include "usart.h"
/**
* @brief <EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><EFBFBD>ͽӿ<EFBFBD>
*
* @param buffer <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param length <EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><EFBFBD><EFBFBD>
*/
void e32_hal_uart_tx( uint8_t *buffer , uint16_t length )
{
HAL_UART_Transmit( &huart1, buffer, length, 0xFFFF);
}
/**
* @brief ģ<EFBFBD><EFBFBD>æ״̬<EFBFBD>ȴ<EFBFBD>
*/
void e32_hal_aux_wait(void)
{
if( HAL_GPIO_ReadPin( AUX_GPIO_Port , AUX_Pin ) == GPIO_PIN_RESET )
{
/* <20>ȵ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AUX<55><58><EFBFBD>ŵ<EFBFBD>Ϊæ<CEAA><C3A6><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD> */
while( HAL_GPIO_ReadPin( AUX_GPIO_Port , AUX_Pin ) == GPIO_PIN_RESET )
{
///@todo <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>߼<EFBFBD>
}
/* <20><><EFBFBD>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD>ԣ<EFBFBD>AUX<55><58><EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD>Ե<EFBFBD>1~2ms */
HAL_Delay(2);
}
}
/**
* @brief ģ<EFBFBD>λ
*/
void e32_hal_reset(void)
{
HAL_GPIO_WritePin( RESET_GPIO_Port, RESET_Pin, GPIO_PIN_RESET );
HAL_Delay(1);
HAL_GPIO_WritePin( RESET_GPIO_Port, RESET_Pin, GPIO_PIN_SET );
#if E32_USE_GPIO_AUX
/* ע<><D7A2> Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>AUX<55><58><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ȴ<EFBFBD>һ<EFBFBD><D2BB>ʱ<EFBFBD><CAB1><EFBFBD>ٿ<EFBFBD>ʼAUX<55><58><EFBFBD><EFBFBD> */
HAL_Delay(10);
e32_hal_aux_wait();
#else
// /* E32-V2 (V8.1) <20><EFBFBD><E6B1BE><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ϳ<EFBFBD>
// <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>AT+FWCODE=?<3F><>ȡ<EFBFBD><EFBFBD><E6B1BE>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7> 7393-x-xx */
// e32_delay_ms(1200);
/* E32-V2 (V8.2) <20>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>AT+FWCODE=?<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD> 7459-x-xx */
e32_delay_ms(30);
#endif
}
/**
* @brief ģ<EFBFBD><EFBFBD>ģʽ<EFBFBD>л<EFBFBD>
*
* @param mode <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
*/
void e32_hal_work_mode( work_mode_t mode)
{
#if E32_USE_GPIO_AUX
e32_hal_aux_wait();
#endif
switch(mode)
{
/* ģʽ0<CABD><30> һ<><D2BB>ģʽ (M0=0 M1=0) */
case WORK_MODE_TRANSPARENT:
HAL_GPIO_WritePin( M0_GPIO_Port, M0_Pin, GPIO_PIN_RESET );
HAL_GPIO_WritePin( M1_GPIO_Port, M1_Pin, GPIO_PIN_RESET );
break;
/* ģʽ1<CABD><31> <20><><EFBFBD><EFBFBD>ģʽ (M0=1 M1=0) */
case WORK_MODE_WAKE_ON_RADIO_MASTER:
HAL_GPIO_WritePin( M0_GPIO_Port, M0_Pin, GPIO_PIN_SET );
HAL_GPIO_WritePin( M1_GPIO_Port, M1_Pin, GPIO_PIN_RESET );
break;
/* ģʽ2<CABD><32> ʡ<><CAA1>ģʽ (M0=0 M1=1) */
case WORK_MODE_WAKE_ON_RADIO_SLAVE:
HAL_GPIO_WritePin( M0_GPIO_Port, M0_Pin, GPIO_PIN_RESET );
HAL_GPIO_WritePin( M1_GPIO_Port, M1_Pin, GPIO_PIN_SET );
break;
/* ģʽ3<CABD><33> <20><><EFBFBD><EFBFBD>ģʽ (M0=1 M1=1) */
case WORK_MODE_CONFIG_AND_SLEEP:
HAL_GPIO_WritePin( M0_GPIO_Port, M0_Pin, GPIO_PIN_SET );
HAL_GPIO_WritePin( M1_GPIO_Port, M1_Pin, GPIO_PIN_SET );
break;
default:
while(1); //ģʽ<C4A3><CABD><EFBFBD><EFBFBD>
}
#if E32_USE_GPIO_AUX
/* <20><><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD> ģ<><C4A3><EFBFBD><EFBFBD>ʱAUX<55><58><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>Ҫ<EFBFBD>Ե<EFBFBD><D4B5>ٽ<EFBFBD><D9BD>м<EFBFBD><D0BC><EFBFBD> */
HAL_Delay(5);
e32_hal_aux_wait();
#else
/* <20><><EFBFBD><EFBFBD><EFB1A3>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ȷ<EFBFBD><C8B7>ģʽ<C4A3>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD> */
e32_delay_ms(50);
#endif
}