Browse Source

update

hpp272
zhaohe 2 years ago
parent
commit
2c3150b215
  1. 4
      .cproject
  2. 4
      .settings/language.settings.xml
  3. 1
      Core/Inc/stm32f4xx_it.h
  4. 15
      Core/Src/stm32f4xx_it.c
  5. 5
      Core/Src/usart.c
  6. 44
      little_disinfection_high_power_ctrl_prj Debug.cfg
  7. 95
      little_disinfection_high_power_ctrl_prj Debug.launch
  8. 1
      little_disinfection_high_power_ctrl_prj.ioc
  9. 2
      sdk
  10. 93
      usrc/hardware.cpp
  11. 102
      usrc/main.cpp

4
.cproject

@ -25,8 +25,8 @@
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.417127282" name="Board" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" useByScannerDiscovery="false" value="genericBoard" valueType="string"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.1449146736" name="Defaults" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" useByScannerDiscovery="false" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.6 || Debug || true || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain.value.workspace || STM32F407VETx || 0 || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Core/Inc | ../Drivers/STM32F4xx_HAL_Driver/Inc | ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy | ../Drivers/CMSIS/Device/ST/STM32F4xx/Include | ../Drivers/CMSIS/Include || || || USE_HAL_DRIVER | STM32F407xx || || Drivers | Core/Startup | Core || || || ${workspace_loc:/${ProjName}/STM32F407VETX_FLASH.ld} || true || NonSecure || || secure_nsclib.o || || None || || || " valueType="string"/>
<option id="com.st.stm32cube.ide.mcu.debug.option.cpuclock.2004392039" name="Cpu clock frequence" superClass="com.st.stm32cube.ide.mcu.debug.option.cpuclock" useByScannerDiscovery="false" value="144" valueType="string"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.converthex.725990720" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.converthex" value="true" valueType="boolean"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.convertbinary.95315046" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.convertbinary" value="true" valueType="boolean"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.converthex.725990720" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.converthex" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.convertbinary.95315046" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.convertbinary" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.1550094338" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
<builder buildPath="${workspace_loc:/little_disinfection_high_power_ctrl_prj}/Debug" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.2039995727" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1267404562" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">

4
.settings/language.settings.xml

@ -5,7 +5,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-1544487265470793787" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-588101754177311339" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
@ -16,7 +16,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-1562835099056576350" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-606449587763093902" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>

1
Core/Inc/stm32f4xx_it.h

@ -60,6 +60,7 @@ void CAN1_TX_IRQHandler(void);
void CAN1_RX0_IRQHandler(void);
void CAN1_RX1_IRQHandler(void);
void CAN1_SCE_IRQHandler(void);
void USART1_IRQHandler(void);
void USART3_IRQHandler(void);
/* USER CODE BEGIN EFP */

15
Core/Src/stm32f4xx_it.c

@ -57,6 +57,7 @@
/* External variables --------------------------------------------------------*/
extern ADC_HandleTypeDef hadc1;
extern CAN_HandleTypeDef hcan1;
extern UART_HandleTypeDef huart1;
extern UART_HandleTypeDef huart3;
/* USER CODE BEGIN EV */
@ -271,6 +272,20 @@ void CAN1_SCE_IRQHandler(void)
}
/**
* @brief This function handles USART1 global interrupt.
*/
void USART1_IRQHandler(void)
{
/* USER CODE BEGIN USART1_IRQn 0 */
/* USER CODE END USART1_IRQn 0 */
HAL_UART_IRQHandler(&huart1);
/* USER CODE BEGIN USART1_IRQn 1 */
/* USER CODE END USART1_IRQn 1 */
}
/**
* @brief This function handles USART3 global interrupt.
*/
void USART3_IRQHandler(void)

5
Core/Src/usart.c

@ -110,6 +110,9 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* USART1 interrupt Init */
HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(USART1_IRQn);
/* USER CODE BEGIN USART1_MspInit 1 */
/* USER CODE END USART1_MspInit 1 */
@ -160,6 +163,8 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
*/
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10);
/* USART1 interrupt Deinit */
HAL_NVIC_DisableIRQ(USART1_IRQn);
/* USER CODE BEGIN USART1_MspDeInit 1 */
/* USER CODE END USART1_MspDeInit 1 */

44
little_disinfection_high_power_ctrl_prj Debug.cfg

@ -0,0 +1,44 @@
# This is an genericBoard board with a single STM32F407VETx chip
#
# Generated by STM32CubeIDE
# Take care that such file, as generated, may be overridden without any early notice. Please have a look to debug launch configuration setup(s)
source [find interface/stlink-dap.cfg]
set WORKAREASIZE 0x8000
transport select "dapdirect_swd"
set CHIPNAME STM32F407VETx
set BOARDNAME genericBoard
# Enable debug when in low power modes
set ENABLE_LOW_POWER 1
# Stop Watchdog counters when halt
set STOP_WATCHDOG 1
# STlink Debug clock frequency
set CLOCK_FREQ 8000
# Reset configuration
# use hardware reset, connect under reset
# connect_assert_srst needed if low power mode application running (WFI...)
reset_config srst_only srst_nogate connect_assert_srst
set CONNECT_UNDER_RESET 1
set CORE_RESET 0
# ACCESS PORT NUMBER
set AP_NUM 0
# GDB PORT
set GDB_PORT 3333
# BCTM CPU variables
source [find target/stm32f4x.cfg]

95
little_disinfection_high_power_ctrl_prj Debug.launch

@ -0,0 +1,95 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="com.st.stm32cube.ide.mcu.debug.launch.launchConfigurationType">
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.access_port_id" value="0"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.cubeprog_external_loaders" value="[]"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_certif_path" value=""/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_check_enable" value="false"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_key_path" value=""/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_permission" value="debug_non_secure_L3"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.enable_live_expr" value="true"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.enable_swv" value="false"/>
<intAttribute key="com.st.stm32cube.ide.mcu.debug.launch.formatVersion" value="2"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.ip_address_local" value="localhost"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.limit_swo_clock.enabled" value="false"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.limit_swo_clock.value" value=""/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.loadList" value="{&quot;fItems&quot;:[{&quot;fIsFromMainTab&quot;:true,&quot;fPath&quot;:&quot;Debug/little_disinfection_high_power_ctrl_prj.elf&quot;,&quot;fProjectName&quot;:&quot;little_disinfection_high_power_ctrl_prj&quot;,&quot;fPerformBuild&quot;:true,&quot;fDownload&quot;:true,&quot;fLoadSymbols&quot;:true}]}"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.override_start_address_mode" value="default"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.remoteCommand" value="target remote"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.startServer" value="true"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.startuptab.exception.divby0" value="true"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.startuptab.exception.unaligned" value="false"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.startuptab.haltonexception" value="true"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.swd_mode" value="true"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.swv_port" value="3344"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.swv_trace_hclk" value="144000000"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.useRemoteTarget" value="true"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.vector_table" value=""/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.openocd.CTI_ALLOW_HALT" value="false"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.openocd.CTI_SIGNAL_HALT" value="false"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.openocd.DBG_DEVICE_SHAREABLE_ALLOWED" value="false"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.openocd.DBG_INTERFACE" value="Swd"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.openocd.DBG_INTERFACE_FREQUENCY" value="8000000.0"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.openocd.DBG_LOW_POWER_MODE_ALLOWED" value="true"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.openocd.DBG_RESET_MODE" value="connect_under_reset"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.openocd.DBG_STOP_WATCHDOG_THEN_HALTED_ALLOWED" value="true"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.openocd.OPENOCD_GENERATOR_OPTION" value="false"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.openocd.OPENOCD_NAME" value="&quot;${stm32cubeide_openocd_path}\openocd.exe&quot;"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.openocd.OPENOCD_OTHER_OPTIONS" value=""/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.openocd.OPENOCD_RESTART_CONFIGURATIONS" value="{&quot;fVersion&quot;:1,&quot;fItems&quot;:[{&quot;fDisplayName&quot;:&quot;Reset halt&quot;,&quot;fIsSuppressible&quot;:false,&quot;fResetAttribute&quot;:&quot;Reset halt&quot;,&quot;fResetStrategies&quot;:[{&quot;fDisplayName&quot;:&quot;Reset halt&quot;,&quot;fLaunchAttribute&quot;:&quot;monitor reset halt&quot;,&quot;fGdbCommands&quot;:[&quot;monitor reset halt&quot;],&quot;fCmdOptions&quot;:[]},{&quot;fDisplayName&quot;:&quot;Reset init&quot;,&quot;fLaunchAttribute&quot;:&quot;monitor reset init&quot;,&quot;fGdbCommands&quot;:[&quot;monitor reset init&quot;],&quot;fCmdOptions&quot;:[]},{&quot;fDisplayName&quot;:&quot;None&quot;,&quot;fLaunchAttribute&quot;:&quot;&quot;,&quot;fGdbCommands&quot;:[],&quot;fCmdOptions&quot;:[]}],&quot;fGdbCommandGroup&quot;:{&quot;name&quot;:&quot;Additional commands&quot;,&quot;commands&quot;:[]},&quot;fStartApplication&quot;:true},{&quot;fDisplayName&quot;:&quot;Reset init&quot;,&quot;fIsSuppressible&quot;:false,&quot;fResetAttribute&quot;:&quot;Reset init&quot;,&quot;fResetStrategies&quot;:[{&quot;fDisplayName&quot;:&quot;Reset halt&quot;,&quot;fLaunchAttribute&quot;:&quot;monitor reset halt&quot;,&quot;fGdbCommands&quot;:[&quot;monitor reset halt&quot;],&quot;fCmdOptions&quot;:[]},{&quot;fDisplayName&quot;:&quot;Reset init&quot;,&quot;fLaunchAttribute&quot;:&quot;monitor reset init&quot;,&quot;fGdbCommands&quot;:[&quot;monitor reset init&quot;],&quot;fCmdOptions&quot;:[]},{&quot;fDisplayName&quot;:&quot;None&quot;,&quot;fLaunchAttribute&quot;:&quot;&quot;,&quot;fGdbCommands&quot;:[],&quot;fCmdOptions&quot;:[]}],&quot;fGdbCommandGroup&quot;:{&quot;name&quot;:&quot;Additional commands&quot;,&quot;commands&quot;:[]},&quot;fStartApplication&quot;:true}]}"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.openocd.OPENOCD_SCRIPT" value="${ProjDirPath}\dap.cfg"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.openocd.OPENOCD_SCRIPT_CHOICE" value="provided"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.openocdenable_rtos" value="false"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.cti_allow_halt" value="false"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.cti_signal_halt" value="false"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.enable_logging" value="false"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.enable_max_halt_delay" value="false"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.enable_shared_stlink" value="false"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.frequency" value="0"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.halt_all_on_reset" value="false"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.log_file" value="D:\workspace\p_transmit_little_disinfection\little_disinfection_high_power_ctrl_prj\Debug\st-link_gdbserver_log.txt"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.low_power_debug" value="enable"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.max_halt_delay" value="2"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.reset_strategy" value="connect_under_reset"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.stlink_check_serial_number" value="false"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.stlink_txt_serial_number" value=""/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.watchdog_config" value="none"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlinkenable_rtos" value="false"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.enableRtosProxy" value="false"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.rtosProxyCustomProperties" value=""/>
<stringAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.rtosProxyDriver" value="threadx"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.rtosProxyDriverAuto" value="false"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.rtosProxyDriverPort" value="cortex_m0"/>
<intAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.rtosProxyPort" value="60000"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doHalt" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doReset" value="false"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.initCommands" value=""/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.ipAddress" value="localhost"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.jtagDeviceId" value="com.st.stm32cube.ide.mcu.debug.openocd"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.pcRegister" value=""/>
<intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.portNumber" value="3333"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.runCommands" value=""/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setPcRegister" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setResume" value="true"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="true"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="main"/>
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="arm-none-eabi-gdb"/>
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.NON_STOP" value="false"/>
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="remote"/>
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="Debug/little_disinfection_high_power_ctrl_prj.elf"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="little_disinfection_high_power_ctrl_prj"/>
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="true"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1316415929"/>
<booleanAttribute key="org.eclipse.debug.core.ATTR_FORCE_SYSTEM_CONSOLE_ENCODING" value="false"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/little_disinfection_high_power_ctrl_prj"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<stringAttribute key="process_factory_id" value="com.st.stm32cube.ide.mcu.debug.launch.HardwareDebugProcessFactory"/>
</launchConfiguration>

1
little_disinfection_high_power_ctrl_prj.ioc

@ -90,6 +90,7 @@ NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false
NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.USART3_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
PA0-WKUP.Locked=true

2
sdk

@ -1 +1 @@
Subproject commit 7a8a3c0c76c859f725b97a668bd96d166b245d68
Subproject commit f6f7900b876e6a4a6b2c5ebe6bd26b5f1b1fbe0a

93
usrc/hardware.cpp

@ -25,12 +25,6 @@
using namespace iflytop;
#define TAG "main"
#define PROCESS_CMD(cmd, id) \
if ((cmdheader->cmdid == (uint16_t)cmd) && (cmdheader->subcmdid == 0) && cmdheader->data[0] == id) { \
matching = true; \
} \
if ((cmdheader->cmdid == (uint16_t)cmd) && (cmdheader->subcmdid == 0) && cmdheader->data[0] == id)
ZGPIO AirCompressorCtrl1;
ZGPIO AirCompressorCtrl2;
@ -95,108 +89,123 @@ void dumphpp272data(hpp272_data_t *data) {
printf("water_vapor_saturation_pressure_h2o_h2o2: %d\n", data->water_vapor_saturation_pressure_h2o_h2o2);
}
void Hardware::initialize(int deviceId) { m_device_id = deviceId; }
void Hardware::initialize(int deviceId) {
m_device_id = deviceId;
AirCompressorCtrl1.initAsOutput(PC2, ZGPIO::kMode_nopull, true, false);
AirCompressorCtrl2.initAsOutput(PC3, ZGPIO::kMode_nopull, true, false);
AirBlowerCtrl1.initAsOutput(PC4, ZGPIO::kMode_nopull, true, false);
AirBlowerCtrl2.initAsOutput(PC5, ZGPIO::kMode_nopull, true, false);
HeatingStripCtrl1.initAsOutput(PC6, ZGPIO::kMode_nopull, true, false);
HeatingStripCtrl2.initAsOutput(PC7, ZGPIO::kMode_nopull, true, false);
hpp272.initialize(&huart3, 0xf0);
}
int32_t Hardware::process_rx_packet(from_where_t fromwhere, uint8_t *packet, int32_t len, uint8_t *receipt, int32_t &receiptsize, bool &matching) {
Cmdheader_t *cmdheader = (Cmdheader_t *)packet;
if (fromwhere == kuart) printf("==== rx: cmdid:%d subcmdid:%d id:%d\n", cmdheader->cmdid, cmdheader->subcmdid, cmdheader->data[0]);
uint8_t *pdata = cmdheader->data;
/**
* @brief Ping
*/
PROCESS_CMD(kcmd_ping, m_device_id) {
PROCESS_CMD(kcmd_ping, 0, m_device_id) {
receipt[0] = cmdheader->data[0];
receiptsize = 1;
return 0;
}
PROCESS_CMD(kcmd_set_io, 0) { //
AirCompressorCtrl1.setState(packet[1]);
memcpy(receipt, packet, 2);
PROCESS_CMD(kcmd_set_io, 0, 0) { //
if (fromwhere == kuart) printf("==== aircompressor1 set io:%d", pdata[1]);
AirCompressorCtrl1.setState(pdata[1]);
memcpy(receipt, pdata, 2);
receiptsize = 2;
return 0;
}
PROCESS_CMD(kcmd_set_io, 1) { //
AirCompressorCtrl2.setState(packet[1]);
memcpy(receipt, packet, 2);
PROCESS_CMD(kcmd_set_io, 0, 1) { //
AirCompressorCtrl2.setState(pdata[1]);
memcpy(receipt, pdata, 2);
receiptsize = 2;
return 0;
}
PROCESS_CMD(kcmd_set_io, 2) { //
AirBlowerCtrl1.setState(packet[1]);
memcpy(receipt, packet, 2);
PROCESS_CMD(kcmd_set_io, 0, 2) { //
AirBlowerCtrl1.setState(pdata[1]);
memcpy(receipt, pdata, 2);
receiptsize = 2;
return 0;
}
PROCESS_CMD(kcmd_set_io, 3) { //
AirBlowerCtrl2.setState(packet[1]);
memcpy(receipt, packet, 2);
PROCESS_CMD(kcmd_set_io, 0, 3) { //
AirBlowerCtrl2.setState(pdata[1]);
memcpy(receipt, pdata, 2);
receiptsize = 2;
return 0;
}
PROCESS_CMD(kcmd_set_io, 4) { //
HeatingStripCtrl1.setState(packet[1]);
memcpy(receipt, packet, 2);
PROCESS_CMD(kcmd_set_io, 0, 4) { //
HeatingStripCtrl1.setState(pdata[1]);
memcpy(receipt, pdata, 2);
receiptsize = 2;
return 0;
}
PROCESS_CMD(kcmd_set_io, 5) { //
HeatingStripCtrl2.setState(packet[1]);
memcpy(receipt, packet, 2);
PROCESS_CMD(kcmd_set_io, 0, 5) { //
HeatingStripCtrl2.setState(pdata[1]);
memcpy(receipt, pdata, 2);
receiptsize = 2;
return 0;
}
PROCESS_CMD(kcmd_set_io, 8) { return 0; }
PROCESS_CMD(kcmd_set_io, 9) { return 0; }
PROCESS_CMD(kcmd_set_io, 0, 8) { return 0; }
PROCESS_CMD(kcmd_set_io, 0, 9) { return 0; }
PROCESS_CMD(kcmd_readadc_raw, 0) {
PROCESS_CMD(kcmd_readadc_raw, 0, 0) {
uint32_t adc_val = ADC_Get_Average(0, 12);
receipt[0] = cmdheader->data[0];
*(int32_t *)(&receipt[2]) = adc_val;
receiptsize = 6;
if (fromwhere == kuart) printf("adc_val0: %d\n", adc_val);
if (fromwhere == kuart) printf("==== adc_val0: %d\n", adc_val);
return 0;
}
PROCESS_CMD(kcmd_readadc_raw, 1) {
PROCESS_CMD(kcmd_readadc_raw, 0, 1) {
uint32_t adc_val = ADC_Get_Average(1, 12);
receipt[0] = cmdheader->data[0];
*(int32_t *)(&receipt[2]) = adc_val;
receiptsize = 6;
if (fromwhere == kuart) printf("adc_val1: %d\n", adc_val);
if (fromwhere == kuart) printf("==== adc_val1: %d\n", adc_val);
return 0;
}
PROCESS_CMD(kcmd_readadc_raw, 2) {
PROCESS_CMD(kcmd_readadc_raw, 0, 2) {
uint32_t adc_val = ADC_Get_Average(2, 12);
receipt[0] = cmdheader->data[0];
*(int32_t *)(&receipt[2]) = adc_val;
receiptsize = 6;
if (fromwhere == kuart) printf("adc_val2: %d\n", adc_val);
if (fromwhere == kuart) printf("==== adc_val2: %d\n", adc_val);
return 0;
}
PROCESS_CMD(kcmd_readadc_raw, 3) {
PROCESS_CMD(kcmd_readadc_raw, 0, 3) {
uint32_t adc_val = ADC_Get_Average(3, 12);
receipt[0] = cmdheader->data[0];
*(int32_t *)(&receipt[2]) = adc_val;
receiptsize = 6;
if (fromwhere == kuart) printf("adc_val3: %d\n", adc_val);
if (fromwhere == kuart) printf("==== adc_val3: %d\n", adc_val);
return 0;
}
PROCESS_CMD(kcmd_readadc_raw, 8) {
PROCESS_CMD(kcmd_readadc_raw, 0, 8) {
uint32_t adc_val = ADC_Get_Average(8, 12);
receipt[0] = cmdheader->data[0];
*(int32_t *)(&receipt[2]) = adc_val;
receiptsize = 6;
if (fromwhere == kuart) printf("adc_val8: %d\n", adc_val);
if (fromwhere == kuart) printf("==== adc_val8: %d\n", adc_val);
return 0;
}
PROCESS_CMD(kcmd_readadc_raw, 9) {
PROCESS_CMD(kcmd_readadc_raw, 0, 9) {
uint32_t adc_val = ADC_Get_Average(9, 12);
receipt[0] = cmdheader->data[0];
*(int32_t *)(&receipt[2]) = adc_val;
receiptsize = 6;
if (fromwhere == kuart) printf("adc_val9: %d\n", adc_val);
if (fromwhere == kuart) printf("==== adc_val9: %d\n", adc_val);
return 0;
}
PROCESS_CMD(kcmd_m211887_operation, 1) {
PROCESS_CMD(kcmd_m211887_operation, 0, 1) {
hpp272_data_t *hpp272data = hpp272.readVal();
if (hpp272data) {
receipt[0] = 1;

102
usrc/main.cpp

@ -18,6 +18,7 @@
//
#include "hardware.hpp"
#include "sdk\components\huacheng_sensor\dp600_pressure_sensor.hpp"
#include "sdk\components\string_utils.hpp"
#include "sdk\components\zcan_module\huacheng_pressure_sensor.hpp"
#include "sdk\components\zcan_module\zcan_basic_order_module.hpp"
#include "sdk\components\zcan_module\zcan_pump_ctrl_module.hpp"
@ -30,68 +31,6 @@ Main gmain;
using namespace iflytop;
/*******************************************************************************
* TOOLS *
*******************************************************************************/
static uint8_t *hex_str_to_bytes(char *data, int32_t len, int32_t &bytelen) {
/**
* @brief
* data:
* 12 34 56 78 90 ab cd ef
*
*/
static uint8_t bytes_cache[1024] = {0};
static uint8_t data_cache[1024] = {0};
int32_t data_len = 0;
memset(bytes_cache, 0, sizeof(bytes_cache));
memset(data_cache, 0, sizeof(data_cache));
for (int32_t i = 0; i < len; i++) {
if (data[i] == ' ') continue;
if (data[i] == '\r' || data[i] == '\n') break;
data_cache[i] = data[i];
data_len++;
}
if (data_len % 2 != 0) {
ZLOGE(TAG, "data_len %d", data_len);
return NULL;
}
for (int32_t i = 0; i < data_len; i += 2) {
char c1 = data_cache[i];
char c2 = data_cache[i + 1];
if (c1 >= '0' && c1 <= '9') {
c1 = c1 - '0';
} else if (c1 >= 'a' && c1 <= 'f') {
c1 = c1 - 'a' + 10;
} else if (c1 >= 'A' && c1 <= 'F') {
c1 = c1 - 'A' + 10;
} else {
ZLOGE(TAG, "c1 %c", c1);
return NULL;
}
if (c2 >= '0' && c2 <= '9') {
c2 = c2 - '0';
} else if (c2 >= 'a' && c2 <= 'f') {
c2 = c2 - 'a' + 10;
} else if (c2 >= 'A' && c2 <= 'F') {
c2 = c2 - 'A' + 10;
} else {
ZLOGE(TAG, "c2 %c", c2);
return NULL;
}
bytes_cache[i / 2] = (c1 << 4) | c2;
}
bytelen = data_len / 2;
return bytes_cache;
}
void dumphexdata(uint8_t *data, int32_t len) {
for (int32_t i = 0; i < len; i++) {
printf("%02X ", data[i]);
@ -126,29 +65,55 @@ void Main::onRceivePacket(CanPacketRxBuffer *rxbuf, uint8_t *packet, size_t len)
if (ecode != 0) {
m_canReceiver.sendErrorAck(cmdheader, ecode);
} else {
m_canReceiver.sendAck(cmdheader, rxdata, sizeof(rxdata));
m_canReceiver.sendAck(cmdheader, rxdata, sizeof(receipt_size));
}
}
}
/**
* @brief
*/
static void processUartRX(uint8_t *packet, size_t len) {
static void processUARTEachLine(char *packet, size_t len) {
static uint8_t rxdata[1024] = {0};
int32_t receipt_size = 0;
bool match = false;
memset(rxdata, 0, sizeof(rxdata));
//
int32_t bytelen = 0;
uint8_t *hexbytes = hex_str_to_bytes((char *)packet, len, bytelen);
uint8_t *hexbytes = StringUtils::hex_str_to_bytes((char *)packet, len, bytelen);
if (hexbytes == NULL) {
ZLOGE(TAG, "hex_str_to_bytes failed");
return;
}
dumphexdata(hexbytes, bytelen);
int32_t ecode = m_hardware.process_rx_packet(Hardware::kuart, hexbytes, bytelen, rxdata, receipt_size, match);
if (match) {
printf("match\n");
if (ecode < 0) {
printf("ecode :%d\n", ecode);
return;
}
dumphexdata(rxdata, receipt_size);
}
printf("\n");
}
static void processUartRX(uint8_t *packet, size_t len) {
for (size_t i = 0; i < len; i++) {
if (packet[i] == '\n' || packet[i] == '\r') {
packet[i] = '\0';
}
}
m_hardware.process_rx_packet(Hardware::kuart, packet, len, rxdata, receipt_size, match);
for (size_t i = 0; i < len; i++) {
if (i == 0) {
processUARTEachLine((char *)packet, strlen((char *)packet));
} else if (packet[i - 1] == '\0' && packet[i] != '\0') {
processUARTEachLine((char *)packet + i, strlen((char *)packet + i));
}
}
}
/*******************************************************************************
@ -161,8 +126,7 @@ void Main::run() {
};
ZHALCORE::getInstance()->initialize(oscfg);
ZLOGI(TAG, "zapp:%s", VERSION);
printf("int32_t %d int %d longint %d\n", sizeof(int32_t), sizeof(int), sizeof(long int));
ZLOGI(TAG, "little_disinfection_liquid_path_control:%s", VERSION);
debuglight.initAsOutput(DEBUG_LIGHT_GPIO, ZGPIO::kMode_nopull, false, false);
ZHAL_CORE_REG(200, { debuglight.toggleState(); });
@ -178,6 +142,7 @@ void Main::run() {
};
uartreceiver.initialize(&uartreceiver_cfg);
uartreceiver.setrxcb([this](uint8_t *data, size_t len) { processUartRX(data, len); });
uartreceiver.startRxIt();
ZCanReceiver::CFG *cfg = m_canReceiver.createCFG(DEVICE_ID);
m_canReceiver.init(cfg);
@ -187,5 +152,6 @@ void Main::run() {
while (1) {
ZHALCORE::getInstance()->loop();
m_hardware.loop();
uartreceiver.forceCchedule();
}
}
Loading…
Cancel
Save