/** * @file mode_dac.c * @author gpj * @date 2023-11-08 15:48:57 * @brief DAC算法模式控制 * @copyright Copyright (c) 2023 by xxx, All Rights Reserved. */ #include #include #include "mode_dac.h" #include "mode.h" #include "entity.h" #include "board.h" #include "pdctrl.h" #include "convert.h" #include "at_hc24.h" mode_dac_t *mode_dac; /*******************************************************************************************************************/ /** * @brief DAC模式初始化 * @return {*} * @note */ void mode_dac_init(mode_dac_params_u *params, void (*params_save_cb)(void)) { DBG_ASSERT(params != NULL __DBG_LINE); DBG_ASSERT(params_save_cb != NULL __DBG_LINE); if (mode_dac == NULL) { mode_dac = (mode_dac_t *)osel_mem_alloc(sizeof(mode_dac_t)); } osel_memset((uint8_t *)mode_dac, 0, sizeof(mode_dac_t)); dac_process_state_set(DAC_PROCESS_ADJUST); // DAC_PROCESS_CONTROL, DAC_PROCESS_TEST, DAC_PROCESS_ADJUST } void mode_dac_dinit(void) { if (mode_dac != NULL) { osel_mem_free(mode_dac); mode_dac = NULL; } } /** * @brief 设置过程状态 * @param {mode_dac_process_state_e} state * @return {*} * @note */ void dac_process_state_set(mode_dac_process_state_e state) { if (mode_dac->process_state != state) { mode_dac->process_state = state; } } /** * @brief DAC模式处理 * @return {*} * @note */ void mode_dac_process(void) { if (mode_dac == NULL) { return; } switch (mode_dac->process_state) { case DAC_PROCESS_CONTROL: break; case DAC_PROCESS_ADJUST: break; case DAC_PROCESS_STOP: pdctrl_out(1000); break; case DAC_PROCESS_TEST: break; default: break; } }