2025-04-02 10:02:25 +00:00
|
|
|
|
|
2025-02-26 09:59:15 +00:00
|
|
|
|
#include "FM_GPIO.h"
|
|
|
|
|
|
2025-04-02 10:02:25 +00:00
|
|
|
|
static uint8_t mcuFlag = 0;
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mcu.
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
void FM_MCU_Init(void)
|
|
|
|
|
{
|
|
|
|
|
mcuFlag = mcu_GPIO_Init();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>mcu<EFBFBD><EFBFBD>io<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>.
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
uint8_t getMCU(void)
|
|
|
|
|
{
|
|
|
|
|
return mcuFlag;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>mcu<EFBFBD><EFBFBD>io<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>.
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
void HostMcu_GPIO_Init(void)
|
|
|
|
|
{
|
|
|
|
|
PwrCtrl_GPIO_Init();
|
|
|
|
|
Android_GPIO_Init();
|
|
|
|
|
WDI_GPIO_Init();
|
|
|
|
|
LED_GPIO_Init();
|
|
|
|
|
Host485De_GPIO_Init();
|
|
|
|
|
ctrlSlave_GPIO_Init();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>mcu<EFBFBD><EFBFBD>485<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊд.
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
void HostMcu_485DE_Read(void)
|
|
|
|
|
{
|
|
|
|
|
HD_GPIO_Write(J0De_GPIO_PROT, J0De_GPIO_PIN, read);
|
|
|
|
|
HD_GPIO_Write(J2De_GPIO_PROT, J2De_GPIO_PIN, read);
|
|
|
|
|
HD_GPIO_Write(J4De_GPIO_PROT, J4De_GPIO_PIN, read);
|
|
|
|
|
HD_GPIO_Write(J6De_GPIO_PROT, J6De_GPIO_PIN, read);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>mcu<EFBFBD><EFBFBD>io<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>.
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
void SlaveMcu_GPIO_Init(void)
|
|
|
|
|
{
|
|
|
|
|
WDI_GPIO_Init();
|
|
|
|
|
Slave485De_GPIO_Init();
|
|
|
|
|
}
|
2025-02-26 09:59:15 +00:00
|
|
|
|
|
|
|
|
|
/**
|
2025-04-02 10:02:25 +00:00
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>mcu<EFBFBD><EFBFBD>485<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>.
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
2025-02-26 09:59:15 +00:00
|
|
|
|
*/
|
2025-04-02 10:02:25 +00:00
|
|
|
|
void SlaveMcu_485DE_Read(void)
|
2025-02-26 09:59:15 +00:00
|
|
|
|
{
|
2025-04-02 10:02:25 +00:00
|
|
|
|
HD_GPIO_Write(J1De_GPIO_PROT, J1De_GPIO_PIN, read);
|
|
|
|
|
HD_GPIO_Write(J3De_GPIO_PROT, J3De_GPIO_PIN, read);
|
|
|
|
|
HD_GPIO_Write(J5De_GPIO_PROT, J5De_GPIO_PIN, read);
|
|
|
|
|
HD_GPIO_Write(J7De_GPIO_PROT, J7De_GPIO_PIN, read);
|
|
|
|
|
HD_GPIO_Write(J8De_GPIO_PROT, J8De_GPIO_PIN, read);
|
|
|
|
|
HD_GPIO_Write(J9De_GPIO_PROT, J9De_GPIO_PIN, read);
|
2025-02-26 09:59:15 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2025-04-02 10:02:25 +00:00
|
|
|
|
* @brief ι<EFBFBD><EFBFBD>.
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
2025-02-26 09:59:15 +00:00
|
|
|
|
*/
|
|
|
|
|
void feedDog(void)
|
|
|
|
|
{
|
|
|
|
|
HD_GPIO_Write(WDI_GPIO_PROT, WDI_GPIO_PIN, GPIO_RESET);
|
|
|
|
|
HD_GPIO_Write(WDI_GPIO_PROT, WDI_GPIO_PIN, GPIO_SET);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2025-04-02 10:02:25 +00:00
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬.
|
2025-02-26 09:59:15 +00:00
|
|
|
|
* @param type <EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
|
|
|
|
|
state <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
2025-04-02 10:02:25 +00:00
|
|
|
|
* @retval
|
2025-02-26 09:59:15 +00:00
|
|
|
|
*/
|
|
|
|
|
void writePwrCtrlState(uint8_t type, uint8_t State)
|
|
|
|
|
{
|
|
|
|
|
if (type == J1_PwrCtrl) {
|
|
|
|
|
HD_GPIO_Write(J1_PwrCtrl_GPIO_PROT, J1_PwrCtrl_GPIO_PIN, State);
|
|
|
|
|
} else if (type == J2_PwrCtrl) {
|
|
|
|
|
HD_GPIO_Write(J2_PwrCtrl_GPIO_PROT, J2_PwrCtrl_GPIO_PIN, State);
|
|
|
|
|
} else if (type == J3_PwrCtrl) {
|
|
|
|
|
HD_GPIO_Write(J3_PwrCtrl_GPIO_PROT, J3_PwrCtrl_GPIO_PIN, State);
|
|
|
|
|
} else if (type == J4_PwrCtrl) {
|
|
|
|
|
HD_GPIO_Write(J4_PwrCtrl_GPIO_PROT, J4_PwrCtrl_GPIO_PIN, State);
|
|
|
|
|
} else if (type == J5_PwrCtrl) {
|
|
|
|
|
HD_GPIO_Write(J5_PwrCtrl_GPIO_PROT, J5_PwrCtrl_GPIO_PIN, State);
|
|
|
|
|
} else if (type == J6_PwrCtrl) {
|
|
|
|
|
HD_GPIO_Write(J6_PwrCtrl_GPIO_PROT, J6_PwrCtrl_GPIO_PIN, State);
|
|
|
|
|
} else if (type == J7_PwrCtrl) {
|
|
|
|
|
HD_GPIO_Write(J7_PwrCtrl_GPIO_PROT, J7_PwrCtrl_GPIO_PIN, State);
|
|
|
|
|
} else if (type == J8_PwrCtrl) {
|
|
|
|
|
HD_GPIO_Write(J8_PwrCtrl_GPIO_PROT, J8_PwrCtrl_GPIO_PIN, State);
|
|
|
|
|
} else if (type == J9_PwrCtrl) {
|
|
|
|
|
HD_GPIO_Write(J9_PwrCtrl_GPIO_PROT, J9_PwrCtrl_GPIO_PIN, State);
|
|
|
|
|
} else if (type == Android_PwrCtrl) {
|
|
|
|
|
HD_GPIO_Write(GPIO_PwrCtrl_GPIO_PROT, GPIO_PwrCtrl_GPIO_PIN, State);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2025-04-02 10:02:25 +00:00
|
|
|
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬.
|
2025-02-26 09:59:15 +00:00
|
|
|
|
* @param type <EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
|
|
|
|
|
* @retval state <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|
|
|
|
0xFF <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
PwrCtrlClose <EFBFBD>ر<EFBFBD>״̬
|
|
|
|
|
PwrCtrlOpen <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|
|
|
|
*/
|
|
|
|
|
uint8_t readPwrCtrlState(uint8_t type)
|
|
|
|
|
{
|
|
|
|
|
if (type == J1_PwrCtrl) {
|
|
|
|
|
return HD_OutputGPIO_Read(J1_PwrCtrl_GPIO_PROT, J1_PwrCtrl_GPIO_PIN);
|
|
|
|
|
} else if (type == J2_PwrCtrl) {
|
|
|
|
|
return HD_OutputGPIO_Read(J2_PwrCtrl_GPIO_PROT, J2_PwrCtrl_GPIO_PIN);
|
|
|
|
|
} else if (type == J3_PwrCtrl) {
|
|
|
|
|
return HD_OutputGPIO_Read(J3_PwrCtrl_GPIO_PROT, J3_PwrCtrl_GPIO_PIN);
|
|
|
|
|
} else if (type == J4_PwrCtrl) {
|
|
|
|
|
return HD_OutputGPIO_Read(J4_PwrCtrl_GPIO_PROT, J4_PwrCtrl_GPIO_PIN);
|
|
|
|
|
} else if (type == J5_PwrCtrl) {
|
|
|
|
|
return HD_OutputGPIO_Read(J5_PwrCtrl_GPIO_PROT, J5_PwrCtrl_GPIO_PIN);
|
|
|
|
|
} else if (type == J6_PwrCtrl) {
|
|
|
|
|
return HD_OutputGPIO_Read(J6_PwrCtrl_GPIO_PROT, J6_PwrCtrl_GPIO_PIN);
|
|
|
|
|
} else if (type == J7_PwrCtrl) {
|
|
|
|
|
return HD_OutputGPIO_Read(J7_PwrCtrl_GPIO_PROT, J7_PwrCtrl_GPIO_PIN);
|
|
|
|
|
} else if (type == J8_PwrCtrl) {
|
|
|
|
|
return HD_OutputGPIO_Read(J8_PwrCtrl_GPIO_PROT, J8_PwrCtrl_GPIO_PIN);
|
|
|
|
|
} else if (type == J9_PwrCtrl) {
|
|
|
|
|
return HD_OutputGPIO_Read(J9_PwrCtrl_GPIO_PROT, J9_PwrCtrl_GPIO_PIN);
|
|
|
|
|
} else if (type == Android_PwrCtrl) {
|
|
|
|
|
return HD_OutputGPIO_Read(GPIO_PwrCtrl_GPIO_PROT, GPIO_PwrCtrl_GPIO_PIN);
|
|
|
|
|
}
|
|
|
|
|
return 0xFF;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ģ<EFBFBD>飬7-10S<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>Ḵλ
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
void startResetAndroidModule(void)
|
|
|
|
|
{
|
|
|
|
|
HD_GPIO_Write(GPIO_PwrKey_GPIO_PROT, GPIO_PwrKey_GPIO_PIN, GPIO_SET);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief ֹͣ<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ģ<EFBFBD>飬ʹ<EFBFBD>ÿ<EFBFBD>ʼ<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ģ<EFBFBD>麯<EFBFBD><EFBFBD>7-10S<EFBFBD><EFBFBD>ģ<EFBFBD>鸴λ<EFBFBD><EFBFBD>ʹ<EFBFBD>øú<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
void stopResetAndroidModule(void)
|
|
|
|
|
{
|
|
|
|
|
HD_GPIO_Write(GPIO_PwrKey_GPIO_PROT, GPIO_PwrKey_GPIO_PIN, GPIO_RESET);
|
|
|
|
|
}
|
2025-03-12 07:00:12 +00:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>תLED<EFBFBD>Ƶ<EFBFBD>ƽ
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
void ledToggle(void)
|
|
|
|
|
{
|
|
|
|
|
HD_GPIO_Write(LED_GPIO_PROT, LED_GPIO_PIN
|
|
|
|
|
, !(HD_OutputGPIO_Read(LED_GPIO_PROT, LED_GPIO_PIN)));
|
|
|
|
|
}
|
2025-04-02 10:02:25 +00:00
|
|
|
|
|