gateway_mcu/CH32V303-FreeRTOS/App/functionalModule/Src/FM_GPIO.c

186 lines
4.9 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "FM_GPIO.h"
static uint8_t mcuFlag = 0;
/**
* @brief 初始化判断主从mcu.
* @param
* @retval
*/
void FM_MCU_Init(void)
{
mcuFlag = mcu_GPIO_Init();
}
/**
* @brief 主mcu的io初始化.
* @param
* @retval
*/
uint8_t getMCU(void)
{
return mcuFlag;
}
/**
* @brief 主mcu的io初始化.
* @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 将主mcu的485读写引脚全部设置为写.
* @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 从mcu的io初始化.
* @param
* @retval
*/
void SlaveMcu_GPIO_Init(void)
{
WDI_GPIO_Init();
Slave485De_GPIO_Init();
}
/**
* @brief 将从mcu的485读写引脚全部设置为读.
* @param
* @retval
*/
void SlaveMcu_485DE_Read(void)
{
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);
}
/**
* @brief 喂狗.
* @param
* @retval
*/
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);
}
/**
* @brief 设置电源控制引脚状态.
* @param type 电源输出接口
state 输出状态
* @retval
*/
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);
}
}
/**
* @brief 读取电源控制引脚状态.
* @param type 电源输出接口
* @retval state 输出状态
0xFF 输入类型错误
PwrCtrlClose 关闭状态
PwrCtrlOpen 开启状态
*/
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 开始复位安卓模块7-10S后安卓模块会复位
* @param
* @retval
*/
void startResetAndroidModule(void)
{
HD_GPIO_Write(GPIO_PwrKey_GPIO_PROT, GPIO_PwrKey_GPIO_PIN, GPIO_SET);
}
/**
* @brief 停止复位安卓模块使用开始复位安卓模块函数7-10S后安卓模块复位后使用该函数
* @param
* @retval
*/
void stopResetAndroidModule(void)
{
HD_GPIO_Write(GPIO_PwrKey_GPIO_PROT, GPIO_PwrKey_GPIO_PIN, GPIO_RESET);
}
/**
* @brief 翻转LED灯电平
* @param
* @retval
*/
void ledToggle(void)
{
HD_GPIO_Write(LED_GPIO_PROT, LED_GPIO_PIN
, !(HD_OutputGPIO_Read(LED_GPIO_PROT, LED_GPIO_PIN)));
}