diff --git a/.mxproject b/.mxproject index 48d5ed2..eccc293 100644 --- a/.mxproject +++ b/.mxproject @@ -1,8 +1,8 @@ [PreviousLibFiles] -LibFiles=Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pcd.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pcd_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usb.h;Drivers\STM32F1xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_def.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_bus.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_system.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_utils.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio_ex.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_i2c.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_i2c.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usart.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_core.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ctlreq.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_def.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ioreq.h;Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Inc\usbd_cdc.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_usb.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_i2c.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c;Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Src\usbd_cdc.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pcd.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pcd_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usb.h;Drivers\STM32F1xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_def.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_bus.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_system.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_utils.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio_ex.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_i2c.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_i2c.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usart.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_core.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ctlreq.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_def.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ioreq.h;Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Inc\usbd_cdc.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f103xb.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\system_stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\system_stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.h;Drivers\CMSIS\Include\cmsis_compiler.h;Drivers\CMSIS\Include\cmsis_gcc.h;Drivers\CMSIS\Include\cmsis_iccarm.h;Drivers\CMSIS\Include\cmsis_version.h;Drivers\CMSIS\Include\core_armv8mbl.h;Drivers\CMSIS\Include\core_armv8mml.h;Drivers\CMSIS\Include\core_cm0.h;Drivers\CMSIS\Include\core_cm0plus.h;Drivers\CMSIS\Include\core_cm1.h;Drivers\CMSIS\Include\core_cm23.h;Drivers\CMSIS\Include\core_cm3.h;Drivers\CMSIS\Include\core_cm33.h;Drivers\CMSIS\Include\core_cm4.h;Drivers\CMSIS\Include\core_cm7.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\tz_context.h; +LibFiles=Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pcd.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pcd_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usb.h;Drivers\STM32F1xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_def.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_bus.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_system.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_utils.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio_ex.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_i2c.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_i2c.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_iwdg.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_iwdg.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usart.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_core.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ctlreq.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_def.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ioreq.h;Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Inc\usbd_cdc.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_usb.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_i2c.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_iwdg.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c;Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Src\usbd_cdc.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pcd.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pcd_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usb.h;Drivers\STM32F1xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_def.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_bus.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_system.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_utils.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio_ex.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_i2c.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_i2c.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_iwdg.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_iwdg.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usart.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_core.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ctlreq.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_def.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ioreq.h;Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Inc\usbd_cdc.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f103xb.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\system_stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\system_stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.h;Drivers\CMSIS\Include\cmsis_compiler.h;Drivers\CMSIS\Include\cmsis_gcc.h;Drivers\CMSIS\Include\cmsis_iccarm.h;Drivers\CMSIS\Include\cmsis_version.h;Drivers\CMSIS\Include\core_armv8mbl.h;Drivers\CMSIS\Include\core_armv8mml.h;Drivers\CMSIS\Include\core_cm0.h;Drivers\CMSIS\Include\core_cm0plus.h;Drivers\CMSIS\Include\core_cm1.h;Drivers\CMSIS\Include\core_cm23.h;Drivers\CMSIS\Include\core_cm3.h;Drivers\CMSIS\Include\core_cm33.h;Drivers\CMSIS\Include\core_cm4.h;Drivers\CMSIS\Include\core_cm7.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\tz_context.h; [PreviousUsedCubeIDEFiles] -SourceFiles=Core\Src\main.c;USB_DEVICE\App\usb_device.c;USB_DEVICE\Target\usbd_conf.c;USB_DEVICE\App\usbd_desc.c;USB_DEVICE\App\usbd_cdc_if.c;Core\Src\stm32f1xx_it.c;Core\Src\stm32f1xx_hal_msp.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_usb.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_i2c.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c;Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Src\usbd_cdc.c;Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;Core\Src\system_stm32f1xx.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_usb.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_i2c.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c;Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Src\usbd_cdc.c;Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;Core\Src\system_stm32f1xx.c;;;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c;Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Src\usbd_cdc.c; +SourceFiles=Core\Src\main.c;USB_DEVICE\App\usb_device.c;USB_DEVICE\Target\usbd_conf.c;USB_DEVICE\App\usbd_desc.c;USB_DEVICE\App\usbd_cdc_if.c;Core\Src\stm32f1xx_it.c;Core\Src\stm32f1xx_hal_msp.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_usb.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_i2c.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_iwdg.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c;Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Src\usbd_cdc.c;Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;Core\Src\system_stm32f1xx.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_usb.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_i2c.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_iwdg.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c;Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Src\usbd_cdc.c;Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;Core\Src\system_stm32f1xx.c;;;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c;Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Src\usbd_cdc.c; HeaderPath=Drivers\STM32F1xx_HAL_Driver\Inc;Drivers\STM32F1xx_HAL_Driver\Inc\Legacy;Middlewares\ST\STM32_USB_Device_Library\Core\Inc;Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Inc;Drivers\CMSIS\Device\ST\STM32F1xx\Include;Drivers\CMSIS\Include;USB_DEVICE\App;USB_DEVICE\Target;Core\Inc; CDefines=USE_HAL_DRIVER;STM32F103xB;USE_HAL_DRIVER;USE_HAL_DRIVER; diff --git a/Core/Inc/RobotFunctions.h b/Core/Inc/RobotFunctions.h index cee7e7d..186ff47 100644 --- a/Core/Inc/RobotFunctions.h +++ b/Core/Inc/RobotFunctions.h @@ -11,6 +11,12 @@ #include "pca9685.h" #include "EEPROM.h" +// 0 - setPos AFTER preRun delay +// 1 - setPos IMMEDIATELY +#define PRE_RUN_DELAY_MODE 0 +#define NOBALL_TIMEOUT_MULTIPLIER 4.2 + + typedef enum ServoMap{ SERVO_AXIAL = 0, SERVO_HORIZONTAL = 1, @@ -21,8 +27,16 @@ typedef enum CurrentMode { NoneMode, ShotMode, ProgramMode, MacroMode, } Mode; +typedef enum State{ + STOP, + RUN, + PAUSE, + PRERUN_WAIT +}State; + typedef struct CurrentShot { uint8_t index; + uint16_t currentRepeatCount; Shot shot; } CurrentShot; @@ -38,43 +52,47 @@ typedef struct CurrentMacro { uint8_t program_index; } CurrentMacro; -typedef struct CurrentState { - uint8_t isPause; - uint8_t isShooting; -} CurrentState; +//typedef struct CurrentState { +// uint8_t isPause; +// uint8_t isShooting; +//} CurrentState; typedef struct CurrentInfo { Mode mode; - CurrentState state; + State state; CurrentShot shot; CurrentProgram program; CurrentMacro macro; + uint32_t startDelay; } CurrentInfo; void Robot_INIT(); -void doShot(Shot*); +void shotApply(Shot*); void doShotForever(uint8_t number); +void BallEXT(); +void RobotTick(); + uint8_t prepareShot(uint8_t number); //uint8_t prepareProgramm(uint8_t number); //uint8_t prepareMacro(uint8_t number); -void startShooting(); + +void startShooting(uint32_t delayTime); void stopShooting(); -int16_t map(int16_t x, int16_t in_min, int16_t in_max, int16_t out_min, - int16_t out_max); +long map(long x, long in_min, long in_max, long out_min, long out_max); void setPos(uint8_t axial, uint8_t horizontal, uint8_t vertical); void setPosSingle(ServoMap servo, uint8_t value); +void setPosFromShot(Shot* shot); void setPosDefault(); void setPosDefaultSingle(ServoMap servo); // 0 .. 100 void setScrewkSpeed(uint8_t speed); - //(-v) 0 .. 100(stop) .. 200(+v) void setRollersSpeed(uint8_t up, uint8_t down); //(-v) 0 . 100(stop) . 200(+v) diff --git a/Core/Inc/ShiftReg.h b/Core/Inc/ShiftReg.h index 1ed9dfb..f9911f9 100644 --- a/Core/Inc/ShiftReg.h +++ b/Core/Inc/ShiftReg.h @@ -10,6 +10,8 @@ #include "stm32f1xx_hal.h" +#define NUMLEDS 10 + void SetShiftReg_inline (unsigned char b1, unsigned char b2, unsigned char b3); void SetShiftReg (unsigned char shiftreg[3]); diff --git a/Core/Inc/stm32f1xx_hal_conf.h b/Core/Inc/stm32f1xx_hal_conf.h index c8ba3e0..8341ce0 100644 --- a/Core/Inc/stm32f1xx_hal_conf.h +++ b/Core/Inc/stm32f1xx_hal_conf.h @@ -49,7 +49,7 @@ #define HAL_I2C_MODULE_ENABLED /*#define HAL_I2S_MODULE_ENABLED */ /*#define HAL_IRDA_MODULE_ENABLED */ -/*#define HAL_IWDG_MODULE_ENABLED */ +#define HAL_IWDG_MODULE_ENABLED /*#define HAL_NOR_MODULE_ENABLED */ /*#define HAL_NAND_MODULE_ENABLED */ /*#define HAL_PCCARD_MODULE_ENABLED */ diff --git a/Core/Src/EEPROM.c b/Core/Src/EEPROM.c index 93c51cd..2af86b0 100644 --- a/Core/Src/EEPROM.c +++ b/Core/Src/EEPROM.c @@ -297,9 +297,9 @@ MemoryStatus FLASH_WriteBlock(uint16_t startAddr, uint8_t number, result = HAL_I2C_Master_Transmit(&hi2c1, (AT24C_ADRESS << 1), Buf, (dataSize + 2), 10); - print("Written "); - printNumber(dataSize); - print("bytes\n"); +// print("Written "); +// printNumber(dataSize); +// print(" bytes\n"); HAL_Delay(1); if (result != HAL_OK) { return EEPROM_FAIL; diff --git a/Core/Src/IR_CMD_HandlerLogic.c b/Core/Src/IR_CMD_HandlerLogic.c index ef00fef..f4b0b95 100644 --- a/Core/Src/IR_CMD_HandlerLogic.c +++ b/Core/Src/IR_CMD_HandlerLogic.c @@ -245,7 +245,7 @@ void IR_ShotPrepared() { InputHandler = IR_ShotPrepared; switch (data.command) { case IR_START: - startShooting(); + startShooting(infoBlock.hwInfo.timings.preRun); break; default: InputHandler(); diff --git a/Core/Src/RobotFunctions.c b/Core/Src/RobotFunctions.c index f1ec1d2..a49559f 100644 --- a/Core/Src/RobotFunctions.c +++ b/Core/Src/RobotFunctions.c @@ -4,25 +4,154 @@ * Created on: Aug 28, 2024 * Author: DashyFox */ - +#include #include "RobotFunctions.h" #include "pca9685.h" #include "UART3_Handler.h" #include "EEPROM.h" #include "ShiftReg.h" #include "Print.h" +#include "SimpleTimer.h" -uint8_t isPause = 0; -uint8_t isShooting = 0; +#define ballReact_value 10 CurrentInfo currentInfo; extern int16_t Vz1; extern int16_t Vz2; unsigned char Shiftreg[3]; +extern InfoBlock infoBlock; +uint8_t ballDetected = 0; +uint32_t ballReact_timer = 0; +uint8_t isDelayTimerRun = 0; +uint32_t startDelay_timer; +Shot* postDelayShot = NULL; +uint32_t lastIndicationTime = 0; +uint32_t noBallTimer = 0; +uint32_t noBallTimeout = 0xFFFFFFFF; -int16_t map(int16_t x, int16_t in_min, int16_t in_max, int16_t out_min, - int16_t out_max) { +void BallEXT_Handler(); + +void robotStateStart(uint32_t delayTime) { + currentInfo.state = PRERUN_WAIT; + currentInfo.startDelay = delayTime; + startDelay_timer = millis(); + isDelayTimerRun = 1; +} +void robotStatePause() { + currentInfo.state = PAUSE; +} + +void robotStateStop() { + currentInfo.state = STOP; +} + +void BallEXT() { + ballDetected = 1; + ballReact_timer = millis(); +} + + +// Функция для расчета периода вылета мяча на основе ШИМ +float calculatePeriod(int pwm_value) { + // Коэффициенты из аппроксимации + float a = 100382.255; + float b = 0.21895; + float c = 883.456; + + // Расчет периода на основе экспоненциальной формулы + float period = a * expf(-b * pwm_value) + c; + return period; +} + +void RobotTick() { + BallEXT_Handler(); + + // No Ball Handler + if(currentInfo.state == RUN && millis() - noBallTimer > noBallTimeout){ + robotStateStop(); + setScrewkSpeed(0); + setRollersSpeed(100, 100); + setPos(infoBlock.hwInfo.servos[SERVO_AXIAL].def, + infoBlock.hwInfo.servos[SERVO_HORIZONTAL].def, + infoBlock.hwInfo.servos[SERVO_VERTICAL].min); + print("NO BALL!!!"); + } + + // PreRun delay + if (isDelayTimerRun) { + uint32_t elapsedTime = millis() - startDelay_timer; + + if (elapsedTime > currentInfo.startDelay) { + isDelayTimerRun = 0; + if (currentInfo.state == PRERUN_WAIT) { + currentInfo.state = RUN; + shotApply(postDelayShot); + } + } else { + uint32_t intervalStep = currentInfo.startDelay / NUMLEDS; + if (elapsedTime - lastIndicationTime >= intervalStep) { + lastIndicationTime = elapsedTime; + uint8_t progress = (elapsedTime * 100) / currentInfo.startDelay; +// indicate(progress); + print("delay: "); + printNumber(progress); + print("\n"); + } + } + } +} + +void BallEXT_Handler() { + if (ballDetected && millis() - ballReact_timer > ballReact_value) { + ballDetected = 0; + + if (currentInfo.state != RUN) { + print("BallDetected on idle\n"); + return; + } + + print("BallDetected "); + uint16_t period = ballReact_timer - noBallTimer; + printNumber(period); + print("ms\n"); + noBallTimer = ballReact_timer; + + switch (currentInfo.mode) { + case NoneMode: + + break; + case ShotMode: + if (currentInfo.shot.currentRepeatCount + 1 + < currentInfo.shot.shot.countRepeatShot + || !currentInfo.shot.shot.countRepeatShot) { + // nextRepeatCount + print("Shot "); + printNumber(currentInfo.shot.currentRepeatCount); + print("\n\n"); + saveInfoBlock(); + currentInfo.shot.currentRepeatCount++; + } else { + // shotDone + stopShooting(); + print("Shot DONE\n"); + } + infoBlock.statInfo.totalShots++; + break; + case ProgramMode: + + break; + case MacroMode: + + break; + default: + break; + } + + } +} + +long map(long x, long in_min, long in_max, long out_min, long out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; } void Robot_INIT() { @@ -96,16 +225,15 @@ void Robot_INIT() { } -void doShot(Shot *shot) { - SetServo(0, shot->rotationHorizontal); - SetServo(1, shot->rotationVertical); - SetServo(2, shot->rotationAxial); - Vz1 = shot->speedRollerTop; - Vz2 = shot->speedRollerBottom; +void shotApply(Shot *shot) { + setPos(shot->rotationAxial, shot->rotationHorizontal, + shot->rotationVertical); + setRollersSpeed(shot->speedRollerTop, shot->speedRollerBottom); setScrewkSpeed(shot->speedScrew); + noBallTimer = millis(); } -void startShooting() { +void startShooting(uint32_t delayTime) { switch (currentInfo.mode) { case ShotMode: print("StartShooting\n"); @@ -114,23 +242,27 @@ void startShooting() { print("isExist "); printNumber(currentInfo.shot.shot.isExist); - print("countRepeatShot; "); + print("\ncountRepeatShot; "); printNumber(currentInfo.shot.shot.countRepeatShot); - print("speedRollerTop; "); + print("\nspeedRollerTop; "); printNumber(currentInfo.shot.shot.speedRollerTop); - print("speedRollerBottom; "); + print("\nspeedRollerBottom; "); printNumber(currentInfo.shot.shot.speedRollerBottom); - print("speedScrew; "); + print("\nspeedScrew; "); printNumber(currentInfo.shot.shot.speedScrew); - print("rotationAxial; "); + print("\nrotationAxial; "); printNumber(currentInfo.shot.shot.rotationAxial); - print("rotationHorizontal; "); + print("\nrotationHorizontal; "); printNumber(currentInfo.shot.shot.rotationHorizontal); - print("rotationVertical; "); + print("\nrotationVertical; "); printNumber(currentInfo.shot.shot.rotationVertical); - - currentInfo.state.isShooting = 1; - doShot(¤tInfo.shot.shot); + print("\n\n"); + postDelayShot = ¤tInfo.shot.shot; +#if PRE_RUN_DELAY_MODE == 0 +#elif PRE_RUN_DELAY_MODE == 1 + setPosFromShot(postDelayShot); +#endif + robotStateStart(delayTime); } else { print("Current Shot is NULL\n"); // TODO: sound_ERR(); ledFX_ERR(); @@ -148,24 +280,23 @@ void startShooting() { } void stopShooting() { - currentInfo.state.isPause = 0; - currentInfo.state.isShooting = 0; - + robotStateStop(); setScrewkSpeed(0); setRollersSpeed(100, 100); setPosDefault(); } -void doShotForever(uint8_t number) { - -} - uint8_t prepareShot(uint8_t number) { Shot shot; getShot(number, &shot); if (shot.isExist) { currentInfo.mode = ShotMode; currentInfo.shot.shot = shot; + currentInfo.shot.currentRepeatCount = 0; + noBallTimeout = calculatePeriod(shot.speedScrew)*NOBALL_TIMEOUT_MULTIPLIER; + print("noBallTimeout: "); + printNumber(noBallTimeout); + print("\n"); return 1; } else { // TODO: sound_ERR(); ledFX_ERR(); @@ -175,32 +306,35 @@ uint8_t prepareShot(uint8_t number) { } void setPosSingle(ServoMap servo, uint8_t value) { - ServoSetting* currentServo = &infoBlock.hwInfo.servos[servo]; - uint8_t inv = currentServo->invert; - if (servo == SERVO_AXIAL) - inv = !inv; + ServoSetting *currentServo = &infoBlock.hwInfo.servos[servo]; + uint8_t inv = currentServo->invert; + if (servo == SERVO_AXIAL) + inv = !inv; - if (inv) - value = 180 - value; + if (inv) + value = 180 - value; - if(value > 90){ - value = map(value, 91, 180, currentServo->def, currentServo->max); - }else if(value < 90) { - value = map(value, 89, 0, currentServo->def, currentServo->min); - } else { - value = currentServo->def; - } + if (value > 90) { + value = map(value, 91, 180, currentServo->def, currentServo->max); + } else if (value < 90) { + value = map(value, 89, 0, currentServo->def, currentServo->min); + } else { + value = currentServo->def; + } - - SetServo(servo, value); + SetServo(servo, value); } - void setPos(uint8_t axial, uint8_t horizontal, uint8_t vertical) { setPosSingle(SERVO_AXIAL, axial); setPosSingle(SERVO_HORIZONTAL, horizontal); setPosSingle(SERVO_VERTICAL, vertical); } + +void setPosFromShot(Shot* shot){ + setPos(shot->rotationAxial, shot->rotationHorizontal, shot->rotationVertical); +} + void setPosDefault() { setPos(infoBlock.hwInfo.servos[SERVO_AXIAL].def, infoBlock.hwInfo.servos[SERVO_HORIZONTAL].def, diff --git a/Core/Src/UART3_CMD_Handler.c b/Core/Src/UART3_CMD_Handler.c index f4bb33f..0701a1b 100644 --- a/Core/Src/UART3_CMD_Handler.c +++ b/Core/Src/UART3_CMD_Handler.c @@ -31,6 +31,7 @@ uint8_t checkLen(uint8_t cmd, uint8_t current_length, uint8_t required_length) { return 1; } +// 10 void UART3_SaveShot(uint8_t *dataPtr, uint8_t len) { const uint8_t MIN_PARAM_LENGTH = 8; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) @@ -44,9 +45,11 @@ void UART3_SaveShot(uint8_t *dataPtr, uint8_t len) { shot.speedRollerTop = dataPtr[3] + 100; shot.speedRollerBottom = dataPtr[4] + 100; shot.speedScrew = map(dataPtr[5], 0, 120, 0, 100); - shot.rotationAxial = map(dataPtr[6], -99, 99, 0, 180); - shot.rotationHorizontal = map(dataPtr[7], -99, 99, 90 - 45, 90 + 45); - shot.rotationVertical = 180 - dataPtr[8]; + shot.rotationAxial = map((int8_t)dataPtr[6], -99, 99, 0, 180); + shot.rotationHorizontal = map((int8_t)dataPtr[7], -99, 99, 0, 180); + shot.rotationVertical = 180 - (int8_t)dataPtr[8] - 90; + + saveShot(shotIndx, &shot); @@ -106,6 +109,7 @@ void UART3_SaveMacro(uint8_t *dataPtr, uint8_t len) { SendResponse(dataPtr[0], 0, NULL, 0); } + void UART3_StartMacro(uint8_t *dataPtr, uint8_t len) { const uint8_t MIN_PARAM_LENGTH = 0; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) @@ -122,6 +126,7 @@ void UART3_StartProgram(uint8_t *dataPtr, uint8_t len) { SendResponse(dataPtr[0], 0, NULL, 0); } +// 102 void UART3_StartShot(uint8_t *dataPtr, uint8_t len) { const uint8_t MIN_PARAM_LENGTH = 1; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) @@ -129,19 +134,23 @@ void UART3_StartShot(uint8_t *dataPtr, uint8_t len) { uint8_t shotIndx = dataPtr[1]; prepareShot(shotIndx); - startShooting(); + startShooting(infoBlock.hwInfo.timings.preRun); SendResponse(dataPtr[0], 0, NULL, 0); } +// 110 void UART3_Stop(uint8_t *dataPtr, uint8_t len) { const uint8_t MIN_PARAM_LENGTH = 0; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) return; + stopShooting(); + SendResponse(dataPtr[0], 0, NULL, 0); } +// 13 void UART3_DeleteShot(uint8_t *dataPtr, uint8_t len) { const uint8_t MIN_PARAM_LENGTH = 1; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) @@ -153,6 +162,7 @@ void UART3_DeleteShot(uint8_t *dataPtr, uint8_t len) { SendResponse(dataPtr[0], 0, NULL, 0); } +// 14 void UART3_DeleteProgram(uint8_t *dataPtr, uint8_t len) { const uint8_t MIN_PARAM_LENGTH = 0; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) @@ -164,6 +174,7 @@ void UART3_DeleteProgram(uint8_t *dataPtr, uint8_t len) { SendResponse(dataPtr[0], 0, NULL, 0); } +// 15 void UART3_DeleteMacro(uint8_t *dataPtr, uint8_t len) { const uint8_t MIN_PARAM_LENGTH = 0; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) @@ -175,7 +186,7 @@ void UART3_DeleteMacro(uint8_t *dataPtr, uint8_t len) { SendResponse(dataPtr[0], 0, NULL, 0); } -//120 +// 120 void UART3_DeleteAllData(uint8_t *dataPtr, uint8_t len) { const uint8_t MIN_PARAM_LENGTH = 0; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) @@ -189,41 +200,45 @@ void UART3_DeleteAllData(uint8_t *dataPtr, uint8_t len) { SendResponse(dataPtr[0], 0, NULL, 0); } -//180 +// 180 void UART3_GetDeviceStatus(uint8_t *dataPtr, uint8_t len) { const uint8_t MIN_PARAM_LENGTH = 0; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) return; - uint8_t res = currentInfo.state.isShooting; + uint8_t res = currentInfo.state == RUN; SendResponse(dataPtr[0], 0, &res, sizeof(res)); } -//200 +// 200 void UART3_SetServoOffset(uint8_t *dataPtr, uint8_t len) { - const uint8_t MIN_PARAM_LENGTH = 3; + const uint8_t MIN_PARAM_LENGTH = 2; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) return; ServoMap servo = dataPtr[1]; ServoSetting *currentServo = &infoBlock.hwInfo.servos[servo]; - int16_t newDef = (dataPtr[2] << 8) | dataPtr[3]; + uint8_t newDef = dataPtr[2]; + + printNumber(newDef); + print("\n"); newDef += 90; // from center - if (newDef < 0) - newDef = 0; if (newDef > 180) newDef = 180; currentServo->def = newDef; + printNumber(newDef); + print("\n"); + saveInfoBlock(); SendResponse(dataPtr[0], 0, NULL, 0); } -//204 +// 205 void UART3_GetServoOffset(uint8_t *dataPtr, uint8_t len) { const uint8_t MIN_PARAM_LENGTH = 1; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) @@ -240,7 +255,7 @@ void UART3_GetServoOffset(uint8_t *dataPtr, uint8_t len) { SendResponse(dataPtr[0], 0, res, sizeof(res)); } -//201 +// 201 void UART3_SetServoMaxAngle(uint8_t *dataPtr, uint8_t len) { const uint8_t MIN_PARAM_LENGTH = 3; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) @@ -260,6 +275,26 @@ void UART3_SetServoMaxAngle(uint8_t *dataPtr, uint8_t len) { SendResponse(dataPtr[0], 0, NULL, 0); } +// 202 +void UART3_SetServoMinAngle(uint8_t *dataPtr, uint8_t len) { + const uint8_t MIN_PARAM_LENGTH = 3; + if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) + return; + + ServoMap servo = dataPtr[1]; + uint16_t minAngl = (dataPtr[2] << 8) | dataPtr[3]; + ServoSetting *currentServo = &infoBlock.hwInfo.servos[servo]; + + if (minAngl > 180) + minAngl = 180; + if (minAngl < 0) + minAngl = 0; + currentServo->min = minAngl; + + saveInfoBlock(); + SendResponse(dataPtr[0], 0, NULL, 0); +} + void UART3_GetServoMaxAngle(uint8_t *dataPtr, uint8_t len) { const uint8_t MIN_PARAM_LENGTH = 1; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) @@ -276,26 +311,6 @@ void UART3_GetServoMaxAngle(uint8_t *dataPtr, uint8_t len) { SendResponse(dataPtr[0], 0, res, sizeof(res)); } -//202 -void UART3_SetServoMinAngle(uint8_t *dataPtr, uint8_t len) { - const uint8_t MIN_PARAM_LENGTH = 3; - if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) - return; - - ServoMap servo = dataPtr[1]; - uint16_t minAngl = (dataPtr[2] << 8) | dataPtr[3]; - ServoSetting *currentServo = &infoBlock.hwInfo.servos[servo]; - - if (minAngl > 180) - minAngl = 180; - if (minAngl < 0) - minAngl = 0; - currentServo->min = minAngl; - - saveInfoBlock(); - SendResponse(dataPtr[0], 0, NULL, 0); -} - void UART3_GetServoMinAngle(uint8_t *dataPtr, uint8_t len) { const uint8_t MIN_PARAM_LENGTH = 1; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) @@ -312,7 +327,7 @@ void UART3_GetServoMinAngle(uint8_t *dataPtr, uint8_t len) { SendResponse(dataPtr[0], 0, res, sizeof(res)); } -//203 +// 203 void UART3_MoveServoToInitialPosition(uint8_t *dataPtr, uint8_t len) { const uint8_t MIN_PARAM_LENGTH = 1; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) @@ -323,7 +338,7 @@ void UART3_MoveServoToInitialPosition(uint8_t *dataPtr, uint8_t len) { SendResponse(dataPtr[0], 0, NULL, 0); } -//206 +// 206 void UART3_SetStartupDelay(uint8_t *dataPtr, uint8_t len) { const uint8_t MIN_PARAM_LENGTH = 2; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) @@ -335,7 +350,7 @@ void UART3_SetStartupDelay(uint8_t *dataPtr, uint8_t len) { SendResponse(dataPtr[0], 0, NULL, 0); } -//207 +// 207 void UART3_GetStartupDelay(uint8_t *dataPtr, uint8_t len) { const uint8_t MIN_PARAM_LENGTH = 0; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) @@ -349,7 +364,7 @@ void UART3_GetStartupDelay(uint8_t *dataPtr, uint8_t len) { SendResponse(dataPtr[0], 0, res, sizeof(res)); } -//210 !!!!!!!! +// 210 !!!!!!!! void UART3_SetMinRollerSpeed(uint8_t *dataPtr, uint8_t len) { const uint8_t MIN_PARAM_LENGTH = 0; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) @@ -358,7 +373,7 @@ void UART3_SetMinRollerSpeed(uint8_t *dataPtr, uint8_t len) { SendResponse(dataPtr[0], 0, NULL, 0); } -//211 !!!!!!!!!!! +// 211 !!!!!!!!!!! void UART3_GetMinRollerSpeed(uint8_t *dataPtr, uint8_t len) { const uint8_t MIN_PARAM_LENGTH = 0; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) @@ -370,7 +385,7 @@ void UART3_GetMinRollerSpeed(uint8_t *dataPtr, uint8_t len) { SendResponse(dataPtr[0], 0, res, sizeof(res)); } -//212 +// 212 void UART3_SetMinScrewSpeed(uint8_t *dataPtr, uint8_t len) { const uint8_t MIN_PARAM_LENGTH = 1; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) @@ -382,7 +397,7 @@ void UART3_SetMinScrewSpeed(uint8_t *dataPtr, uint8_t len) { SendResponse(dataPtr[0], 0, NULL, 0); } -//215 +// 215 void UART3_GetMinScrewSpeed(uint8_t *dataPtr, uint8_t len) { const uint8_t MIN_PARAM_LENGTH = 0; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) @@ -394,7 +409,7 @@ void UART3_GetMinScrewSpeed(uint8_t *dataPtr, uint8_t len) { SendResponse(dataPtr[0], 0, res, sizeof(res)); } -//214 +// 214 void UART3_SetServoInvertFlag(uint8_t *dataPtr, uint8_t len) { const uint8_t MIN_PARAM_LENGTH = 1; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) @@ -411,7 +426,7 @@ void UART3_SetServoInvertFlag(uint8_t *dataPtr, uint8_t len) { SendResponse(dataPtr[0], 0, NULL, 0); } -//215 +// 215 void UART3_GetServoInvertFlag(uint8_t *dataPtr, uint8_t len) { const uint8_t MIN_PARAM_LENGTH = 0; if (!checkLen(dataPtr[0], len, MIN_PARAM_LENGTH)) @@ -447,7 +462,7 @@ void UART3_ReadStatistics(uint8_t *dataPtr, uint8_t len) { StatusStruct res; - res.status = currentInfo.state.isShooting; + res.status = currentInfo.state == RUN; res.shot_number = currentInfo.shot.index; res.program_number = currentInfo.program.index; res.macro_number = currentInfo.macro.index; diff --git a/Core/Src/UART3_Handler.c b/Core/Src/UART3_Handler.c index fa911af..f48bf1e 100644 --- a/Core/Src/UART3_Handler.c +++ b/Core/Src/UART3_Handler.c @@ -18,14 +18,12 @@ extern UART_HandleTypeDef huart3; void UART3_CMD_Handler(uint8_t *dataPtr, uint8_t len); - - void UART3_START() { HAL_UART_Receive_DMA(&huart3, uart_rx_buffer, UART_BUFFER_SIZE); } volatile uint32_t last_rx_time = 0; -volatile uint32_t rx_complete_timeout = 10; +volatile uint32_t rx_complete_timeout = 15; volatile uint32_t old_pos = 0; volatile uint16_t rx_index = 0; extern DMA_HandleTypeDef hdma_usart3_rx; @@ -123,12 +121,56 @@ void process_uart_data(uint32_t old_pos, uint32_t new_pos) handle_rx_data(&uart_rx_buffer[0], new_pos); } } -volatile uint8_t rx_in_progress = 0; -void check_uart3_timeout(void) -{ +void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart) +{ + if (huart->Instance == USART3) + { + char error_msg[128]; + + // Логгирование состояния до перезапуска + snprintf(error_msg, sizeof(error_msg), + "UART3 Error Detected: Code = 0x%02X, DMA Counter = %lu\n", + huart->ErrorCode, __HAL_DMA_GET_COUNTER(&hdma_usart3_rx)); + CDC_Transmit_FS((uint8_t*) error_msg, strlen(error_msg)); + + // Останавливаем UART и DMA + HAL_UART_DMAStop(huart); + + // Очищаем флаги всех возможных ошибок + __HAL_UART_CLEAR_FEFLAG(huart); // Сброс ошибки кадра + __HAL_UART_CLEAR_PEFLAG(huart); // Сброс ошибки четности + __HAL_UART_CLEAR_NEFLAG(huart); // Сброс ошибки шума + __HAL_UART_CLEAR_OREFLAG(huart); // Сброс ошибки переполнения + + // Проверка, не повторяется ли ошибка через несколько циклов + static int error_count = 0; + error_count++; + if (error_count > 1) + { + NVIC_SystemReset(); // Полный перезапуск системы после n ошибок + } + + // Деинициализация и повторная инициализация UART + HAL_UART_DeInit(huart); + HAL_UART_Init(huart); + + // Перезапуск DMA + HAL_UART_Receive_DMA(huart, uart_rx_buffer, UART_BUFFER_SIZE); + + // Логгирование состояния после перезапуска + snprintf(error_msg, sizeof(error_msg), + "UART3 DMA reception restarted: DMA Counter = %lu\n", + __HAL_DMA_GET_COUNTER(&hdma_usart3_rx)); + CDC_Transmit_FS((uint8_t*) error_msg, strlen(error_msg)); + } } + + + + +uint8_t rx_in_progress = 0; void UART3_Handler() { uint32_t pos = UART_BUFFER_SIZE - __HAL_DMA_GET_COUNTER(&hdma_usart3_rx); @@ -243,9 +285,6 @@ void UART3_CMD_Handler(uint8_t *dataPtr, uint8_t len) { case 200: UART3_SetServoOffset(dataPtr, len); break; - case 204: - UART3_GetServoOffset(dataPtr, len); - break; case 201: UART3_SetServoMaxAngle(dataPtr, len); break; @@ -255,6 +294,12 @@ void UART3_CMD_Handler(uint8_t *dataPtr, uint8_t len) { case 203: UART3_MoveServoToInitialPosition(dataPtr, len); break; +// case 204: +// UART3_GetServoOffset(dataPtr, len); +// break; + case 205: + UART3_GetServoOffset(dataPtr, len); + break; case 206: UART3_SetStartupDelay(dataPtr, len); break; diff --git a/Core/Src/main.c b/Core/Src/main.c index 02bdd2a..a148953 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -53,6 +53,8 @@ /* Private variables ---------------------------------------------------------*/ I2C_HandleTypeDef hi2c1; +IWDG_HandleTypeDef hiwdg; + TIM_HandleTypeDef htim1; TIM_HandleTypeDef htim2; TIM_HandleTypeDef htim3; @@ -93,6 +95,7 @@ static void MX_TIM1_Init(void); static void MX_TIM2_Init(void); static void MX_TIM3_Init(void); static void MX_USART3_UART_Init(void); +static void MX_IWDG_Init(void); /* USER CODE BEGIN PFP */ /* USER CODE END PFP */ @@ -143,6 +146,7 @@ int main(void) { MX_TIM2_Init(); MX_TIM3_Init(); MX_USART3_UART_Init(); + MX_IWDG_Init(); /* USER CODE BEGIN 2 */ __HAL_RCC_USART3_CLK_ENABLE(); @@ -174,9 +178,9 @@ int main(void) { IR_CMD_Handler(); UART3_Handler(); + RobotTick(); - forTimer(blinkTimer, 500) - { + forTimer(blinkTimer, 500) { resetForTimer(blinkTimer); GPIOC->ODR ^= GPIO_PIN_13; // unsigned char text[] = "Hello\n"; @@ -201,6 +205,7 @@ int main(void) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ + HAL_IWDG_Refresh(&hiwdg); } /* USER CODE END 3 */ } @@ -217,10 +222,12 @@ void SystemClock_Config(void) { /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI + | RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; RCC_OscInitStruct.HSIState = RCC_HSI_ON; + RCC_OscInitStruct.LSIState = RCC_LSI_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6; @@ -279,6 +286,32 @@ static void MX_I2C1_Init(void) { } +/** + * @brief IWDG Initialization Function + * @param None + * @retval None + */ +static void MX_IWDG_Init(void) { + + /* USER CODE BEGIN IWDG_Init 0 */ + + /* USER CODE END IWDG_Init 0 */ + + /* USER CODE BEGIN IWDG_Init 1 */ + + /* USER CODE END IWDG_Init 1 */ + hiwdg.Instance = IWDG; + hiwdg.Init.Prescaler = IWDG_PRESCALER_64; + hiwdg.Init.Reload = 625 * 5; + if (HAL_IWDG_Init(&hiwdg) != HAL_OK) { + Error_Handler(); + } + /* USER CODE BEGIN IWDG_Init 2 */ + + /* USER CODE END IWDG_Init 2 */ + +} + /** * @brief TIM1 Initialization Function * @param None diff --git a/Core/Src/stm32f1xx_it.c b/Core/Src/stm32f1xx_it.c index ef2592e..adb143e 100644 --- a/Core/Src/stm32f1xx_it.c +++ b/Core/Src/stm32f1xx_it.c @@ -31,7 +31,8 @@ #include "Print.h" #include "UART3_Handler.h" -#include "SimpleTimer.h" +#include "RobotFunctions.h" + /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ @@ -469,22 +470,9 @@ void SysTick_Handler(void) void EXTI0_IRQHandler(void) { /* USER CODE BEGIN EXTI0_IRQn 0 */ -// if (avto == 1) -// { -// if (rejim_number < rejim[0]) -// rejim_number++; -// else -// rejim_number = 1; -// -// SetServo(0, rejim[1 + (rejim_number - 1) * 6]); -// SetServo(1, rejim[2 + (rejim_number - 1) * 6]); -// SetServo(2, rejim[3 + (rejim_number - 1) * 6]); -// Vz1 = rejim[4 + (rejim_number - 1) * 6]; -// Vz2 = rejim[5 + (rejim_number - 1) * 6]; -// TIM1->CCR1 = 0; -// TIM1->CCR2 = (uint16_t)(40 * rejim[6 + (rejim_number - 1) * 6]); -// vi = 0; // zapis grafika start -// } + + BallEXT(); + /* USER CODE END EXTI0_IRQn 0 */ HAL_GPIO_EXTI_IRQHandler(BALL_EXT_Pin); /* USER CODE BEGIN EXTI0_IRQn 1 */ diff --git a/StackSport.ioc b/StackSport.ioc index cc8055b..f131318 100644 --- a/StackSport.ioc +++ b/StackSport.ioc @@ -15,21 +15,25 @@ Dma.USART3_RX.0.Priority=DMA_PRIORITY_HIGH Dma.USART3_RX.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority File.Version=6 GPIO.groupedBy=Group By Peripherals +IWDG.IPParameters=Prescaler,Reload +IWDG.Prescaler=IWDG_PRESCALER_64 +IWDG.Reload=625*5 KeepUserPlacement=false Mcu.CPN=STM32F103C8T6 Mcu.Family=STM32F1 Mcu.IP0=DMA Mcu.IP1=I2C1 -Mcu.IP10=USB_DEVICE -Mcu.IP2=NVIC -Mcu.IP3=RCC -Mcu.IP4=SYS -Mcu.IP5=TIM1 -Mcu.IP6=TIM2 -Mcu.IP7=TIM3 -Mcu.IP8=USART3 -Mcu.IP9=USB -Mcu.IPNb=11 +Mcu.IP10=USB +Mcu.IP11=USB_DEVICE +Mcu.IP2=IWDG +Mcu.IP3=NVIC +Mcu.IP4=RCC +Mcu.IP5=SYS +Mcu.IP6=TIM1 +Mcu.IP7=TIM2 +Mcu.IP8=TIM3 +Mcu.IP9=USART3 +Mcu.IPNb=12 Mcu.Name=STM32F103C(8-B)Tx Mcu.Package=LQFP48 Mcu.Pin0=PC13-TAMPER-RTC @@ -48,11 +52,12 @@ Mcu.Pin2=PD1-OSC_OUT Mcu.Pin20=PA14 Mcu.Pin21=PB6 Mcu.Pin22=PB7 -Mcu.Pin23=VP_SYS_VS_Systick -Mcu.Pin24=VP_TIM1_VS_ClockSourceINT -Mcu.Pin25=VP_TIM2_VS_ClockSourceINT -Mcu.Pin26=VP_TIM3_VS_ClockSourceINT -Mcu.Pin27=VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS +Mcu.Pin23=VP_IWDG_VS_IWDG +Mcu.Pin24=VP_SYS_VS_Systick +Mcu.Pin25=VP_TIM1_VS_ClockSourceINT +Mcu.Pin26=VP_TIM2_VS_ClockSourceINT +Mcu.Pin27=VP_TIM3_VS_ClockSourceINT +Mcu.Pin28=VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS Mcu.Pin3=PA0-WKUP Mcu.Pin4=PA1 Mcu.Pin5=PA2 @@ -60,7 +65,7 @@ Mcu.Pin6=PA3 Mcu.Pin7=PA4 Mcu.Pin8=PA5 Mcu.Pin9=PA6 -Mcu.PinsNb=28 +Mcu.PinsNb=29 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F103C8Tx @@ -266,6 +271,8 @@ USB_DEVICE.IPParameters=VirtualMode,VirtualModeFS,CLASS_NAME_FS,APP_RX_DATA_SIZE USB_DEVICE.MANUFACTURER_STRING=StackSport USB_DEVICE.VirtualMode=Cdc USB_DEVICE.VirtualModeFS=Cdc_FS +VP_IWDG_VS_IWDG.Mode=IWDG_Activate +VP_IWDG_VS_IWDG.Signal=IWDG_VS_IWDG VP_SYS_VS_Systick.Mode=SysTick VP_SYS_VS_Systick.Signal=SYS_VS_Systick VP_TIM1_VS_ClockSourceINT.Mode=Internal