14 Commits

Author SHA1 Message Date
9e281ac636 启用 MEMTRACE
Signed-off-by: a1012112796 <1012112796@qq.com>
2024-05-21 11:29:25 +08:00
4c94f53f69 添加看门狗驱动
Signed-off-by: a1012112796 <1012112796@qq.com>
2024-05-15 20:04:04 +08:00
64c191ce47 修正 reset_fc 的逻辑
Signed-off-by: a1012112796 <1012112796@qq.com>
2024-01-25 09:09:43 +08:00
12dbf59150 pwm 驱动优化
实测发现, 改为低电平作为有效电平后,输出脉宽更准确一些,
故作此修改。另外移除了一段无效代码逻辑,降低理解负担。

Signed-off-by: a1012112796 <1012112796@qq.com>
2024-01-24 13:55:07 +08:00
32d8112577 iap 优化,避免 v8 升级失败
Signed-off-by: a1012112796 <1012112796@qq.com>
2023-12-08 08:42:05 +08:00
1830fad2a7 简化 log
Signed-off-by: a1012112796 <1012112796@qq.com>
2023-12-06 10:31:11 +08:00
4a3d864e8a 修正 can 参数
Signed-off-by: a1012112796 <1012112796@qq.com>
2023-12-01 11:30:53 +08:00
424fbe755c Merge branch 'zzc/dev/param_cfg' into main_f413
* zzc/dev/param_cfg:
  核算can 波特率
2023-11-30 17:34:27 +08:00
130297f5ec 核算can 波特率
Signed-off-by: a1012112796 <1012112796@qq.com>
2023-11-30 17:17:08 +08:00
HWJ
ec738f7452 Merge remote-tracking branch 'remotes/origin/zzc/dev/param_cfg' into main_f413 2023-08-01 17:21:31 +08:00
716843e921 允许 iap 升级不含 header 的普通固件
Signed-off-by: a1012112796 <1012112796@qq.com>
2023-08-01 10:22:00 +08:00
a4d8cf1511 console 口改为 uart8
Signed-off-by: a1012112796 <1012112796@qq.com>
2023-07-25 19:00:26 +08:00
HWJ
b8fa9e69cd 更新工程文件 2023-07-25 16:07:51 +08:00
383f0b8021 输入捕获驱动补充 TIM12 定义
Signed-off-by: a1012112796 <1012112796@qq.com>
2023-06-12 17:27:49 +08:00
25 changed files with 479 additions and 265 deletions

53
.config
View File

@@ -66,7 +66,7 @@ CONFIG_RT_USING_SMALL_MEM_AS_HEAP=y
# CONFIG_RT_USING_SLAB_AS_HEAP is not set
# CONFIG_RT_USING_USERHEAP is not set
# CONFIG_RT_USING_NOHEAP is not set
# CONFIG_RT_USING_MEMTRACE is not set
CONFIG_RT_USING_MEMTRACE=y
# CONFIG_RT_USING_HEAP_ISR is not set
CONFIG_RT_USING_HEAP=y
@@ -78,7 +78,7 @@ CONFIG_RT_USING_DEVICE=y
# CONFIG_RT_USING_INTERRUPT_INFO is not set
CONFIG_RT_USING_CONSOLE=y
CONFIG_RT_CONSOLEBUF_SIZE=256
CONFIG_RT_CONSOLE_DEVICE_NAME="uart4"
CONFIG_RT_CONSOLE_DEVICE_NAME="uart8"
CONFIG_RT_VER_NUM=0x50000
CONFIG_ARCH_ARM=y
CONFIG_RT_USING_CPU_FFS=y
@@ -255,7 +255,6 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
# CONFIG_PKG_USING_KAWAII_MQTT is not set
# CONFIG_PKG_USING_BC28_MQTT is not set
# CONFIG_PKG_USING_WEBTERMINAL is not set
# CONFIG_PKG_USING_LIBMODBUS is not set
# CONFIG_PKG_USING_FREEMODBUS is not set
# CONFIG_PKG_USING_NANOPB is not set
@@ -333,6 +332,7 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
# CONFIG_PKG_USING_NET_SERVER is not set
# CONFIG_PKG_USING_ZFTP is not set
# CONFIG_PKG_USING_WOL is not set
# CONFIG_PKG_USING_ZEPHYR_POLLING is not set
#
# security packages
@@ -401,18 +401,13 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
# CONFIG_PKG_USING_MP3PLAYER is not set
# CONFIG_PKG_USING_TINYJPEG is not set
# CONFIG_PKG_USING_UGUI is not set
#
# PainterEngine: A cross-platform graphics application framework written in C language
#
# CONFIG_PKG_USING_PAINTERENGINE is not set
# CONFIG_PKG_USING_PAINTERENGINE_AUX is not set
# CONFIG_PKG_USING_MCURSES is not set
# CONFIG_PKG_USING_TERMBOX is not set
# CONFIG_PKG_USING_VT100 is not set
# CONFIG_PKG_USING_QRCODE is not set
# CONFIG_PKG_USING_GUIENGINE is not set
# CONFIG_PKG_USING_PERSIMMON is not set
# CONFIG_PKG_USING_3GPP_AMRNB is not set
#
# tools packages
@@ -422,6 +417,7 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
# CONFIG_PKG_USING_EASYLOGGER is not set
# CONFIG_PKG_USING_SYSTEMVIEW is not set
# CONFIG_PKG_USING_SEGGER_RTT is not set
# CONFIG_PKG_USING_RTT_AUTO_EXE_CMD is not set
# CONFIG_PKG_USING_RDB is not set
# CONFIG_PKG_USING_ULOG_EASYFLASH is not set
# CONFIG_PKG_USING_LOGMGR is not set
@@ -459,6 +455,7 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
# CONFIG_PKG_USING_HASH_MATCH is not set
# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
# CONFIG_PKG_USING_VOFA_PLUS is not set
# CONFIG_PKG_USING_RT_TRACE is not set
#
# system packages
@@ -538,6 +535,7 @@ CONFIG_PKG_RT_VSNPRINTF_FULL_VER="latest"
# CONFIG_PKG_USING_QPC is not set
# CONFIG_PKG_USING_AGILE_UPGRADE is not set
# CONFIG_PKG_USING_FLASH_BLOB is not set
# CONFIG_PKG_USING_MLIBC is not set
#
# peripheral libraries and drivers
@@ -609,6 +607,7 @@ CONFIG_PKG_RT_VSNPRINTF_FULL_VER="latest"
# CONFIG_PKG_USING_CW2015 is not set
# CONFIG_PKG_USING_ICM20608 is not set
# CONFIG_PKG_USING_PAJ7620 is not set
# CONFIG_PKG_USING_STHS34PF80 is not set
#
# touch drivers
@@ -621,6 +620,7 @@ CONFIG_PKG_RT_VSNPRINTF_FULL_VER="latest"
# CONFIG_PKG_USING_FT5426 is not set
# CONFIG_PKG_USING_FT6236 is not set
# CONFIG_PKG_USING_XPT2046_TOUCH is not set
# CONFIG_PKG_USING_CST816X is not set
# CONFIG_PKG_USING_REALTEK_AMEBA is not set
# CONFIG_PKG_USING_STM32_SDIO is not set
# CONFIG_PKG_USING_ESP_IDF is not set
@@ -633,7 +633,6 @@ CONFIG_PKG_RT_VSNPRINTF_FULL_VER="latest"
# CONFIG_PKG_USING_LKDGUI is not set
# CONFIG_PKG_USING_NRF5X_SDK is not set
# CONFIG_PKG_USING_NRFX is not set
# CONFIG_PKG_USING_WM_LIBRARIES is not set
#
# Kendryte SDK
@@ -647,6 +646,7 @@ CONFIG_PKG_RT_VSNPRINTF_FULL_VER="latest"
# CONFIG_PKG_USING_AT24CXX is not set
# CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set
# CONFIG_PKG_USING_PCA9685 is not set
# CONFIG_PKG_USING_ILI9341 is not set
# CONFIG_PKG_USING_I2C_TOOLS is not set
# CONFIG_PKG_USING_NRF24L01 is not set
# CONFIG_PKG_USING_RPLIDAR is not set
@@ -690,14 +690,17 @@ CONFIG_PKG_RT_VSNPRINTF_FULL_VER="latest"
# CONFIG_PKG_USING_MISAKA_AT24CXX is not set
# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set
# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set
# CONFIG_PKG_USING_BL_MCU_SDK is not set
# CONFIG_PKG_USING_SOFT_SERIAL is not set
# CONFIG_PKG_USING_MB85RS16 is not set
# CONFIG_PKG_USING_RFM300 is not set
# CONFIG_PKG_USING_IO_INPUT_FILTER is not set
# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set
# CONFIG_PKG_USING_LRF_NV7LIDAR is not set
# CONFIG_PKG_USING_AIP650 is not set
# CONFIG_PKG_USING_FINGERPRINT is not set
# CONFIG_PKG_USING_BT_ECB02C is not set
# CONFIG_PKG_USING_UAT is not set
# CONFIG_PKG_USING_SPI_TOOLS is not set
#
# AI packages
@@ -716,7 +719,10 @@ CONFIG_PKG_RT_VSNPRINTF_FULL_VER="latest"
# Signal Processing and Control Algorithm Packages
#
# CONFIG_PKG_USING_FIRE_PID_CURVE is not set
# CONFIG_PKG_USING_QPID is not set
# CONFIG_PKG_USING_UKAL is not set
# CONFIG_PKG_USING_DIGITALCTRL is not set
# CONFIG_PKG_USING_KISSFFT is not set
#
# miscellaneous packages
@@ -747,6 +753,7 @@ CONFIG_PKG_RT_VSNPRINTF_FULL_VER="latest"
# CONFIG_PKG_USING_TETRIS is not set
# CONFIG_PKG_USING_DONUT is not set
# CONFIG_PKG_USING_COWSAY is not set
# CONFIG_PKG_USING_MORSE is not set
# CONFIG_PKG_USING_LIBCSV is not set
# CONFIG_PKG_USING_OPTPARSE is not set
# CONFIG_PKG_USING_FASTLZ is not set
@@ -762,7 +769,6 @@ CONFIG_PKG_RT_VSNPRINTF_FULL_VER="latest"
# CONFIG_PKG_USING_DSTR is not set
# CONFIG_PKG_USING_TINYFRAME is not set
# CONFIG_PKG_USING_KENDRYTE_DEMO is not set
# CONFIG_PKG_USING_DIGITALCTRL is not set
# CONFIG_PKG_USING_UPACKER is not set
# CONFIG_PKG_USING_UPARAM is not set
# CONFIG_PKG_USING_HELLO is not set
@@ -788,8 +794,9 @@ CONFIG_PKG_RT_VSNPRINTF_FULL_VER="latest"
# CONFIG_PKG_USING_RTDUINO is not set
#
# Projects
# Projects and Demos
#
# CONFIG_PKG_USING_ARDUINO_MSGQ_C_CPP_DEMO is not set
# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set
# CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set
# CONFIG_PKG_USING_ARDUINO_MATLAB_SUPPORT is not set
@@ -936,13 +943,19 @@ CONFIG_PKG_RT_VSNPRINTF_FULL_VER="latest"
#
# Display
#
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_GFX_LIBRARY is not set
# CONFIG_PKG_USING_ARDUINO_U8G2 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ST7735 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SSD1306 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ILI9341 is not set
# CONFIG_PKG_USING_SEEED_TM1637 is not set
#
# Timing
#
# CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set
# CONFIG_PKG_USING_ARDUINO_TICKER is not set
# CONFIG_PKG_USING_ARDUINO_TASKSCHEDULER is not set
#
# Data Processing
@@ -966,10 +979,17 @@ CONFIG_PKG_RT_VSNPRINTF_FULL_VER="latest"
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8574 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCA9685 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_PCF85063TP is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TPA2016 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DRV2605 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS1841 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS3502 is not set
#
# Other
#
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MFRC630 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI5351 is not set
# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set
#
# Signal IO
@@ -1063,10 +1083,15 @@ CONFIG_BSP_USING_CAPTURE2=y
# CONFIG_BSP_USING_CAPTURE2_CH2 is not set
CONFIG_BSP_USING_CAPTURE2_CH3=y
CONFIG_BSP_USING_CAPTURE2_CH4=y
CONFIG_BSP_USING_CAPTURE12=y
CONFIG_BSP_USING_CAPTURE12_CH1=y
CONFIG_BSP_USING_CAPTURE12_CH2=y
# CONFIG_BSP_USING_CAPTURE12_CH3 is not set
# CONFIG_BSP_USING_CAPTURE12_CH4 is not set
CONFIG_BSP_USING_ADC=y
CONFIG_BSP_USING_ADC1=y
# CONFIG_BSP_USING_ONCHIP_RTC is not set
# CONFIG_BSP_USING_WDT is not set
CONFIG_BSP_USING_WDT=y
CONFIG_BSP_USING_ON_CHIP_FLASH=y
# CONFIG_BSP_USING_USBD is not set
# CONFIG_BSP_USING_RNG is not set

File diff suppressed because one or more lines are too long

View File

@@ -5,6 +5,9 @@ ADC1.NbrOfConversionFlag=1
ADC1.Rank-0\#ChannelRegularConversion=1
ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_3CYCLES
ADC1.master=1
CAD.formats=
CAD.pinconfig=
CAD.provider=
CAN1.BS1=CAN_BS1_4TQ
CAN1.CalculateBaudRate=520833
CAN1.CalculateTimeBit=1920
@@ -27,30 +30,31 @@ Mcu.CPN=STM32F413VGT6
Mcu.Family=STM32F4
Mcu.IP0=ADC1
Mcu.IP1=CAN1
Mcu.IP10=TIM1
Mcu.IP11=TIM2
Mcu.IP12=TIM3
Mcu.IP13=TIM4
Mcu.IP14=TIM12
Mcu.IP15=UART4
Mcu.IP16=UART5
Mcu.IP17=UART7
Mcu.IP18=UART8
Mcu.IP19=UART9
Mcu.IP10=SYS
Mcu.IP11=TIM1
Mcu.IP12=TIM2
Mcu.IP13=TIM3
Mcu.IP14=TIM4
Mcu.IP15=TIM12
Mcu.IP16=UART4
Mcu.IP17=UART5
Mcu.IP18=UART7
Mcu.IP19=UART8
Mcu.IP2=CAN2
Mcu.IP20=UART10
Mcu.IP21=USART1
Mcu.IP22=USART2
Mcu.IP23=USART3
Mcu.IP24=USART6
Mcu.IP20=UART9
Mcu.IP21=UART10
Mcu.IP22=USART1
Mcu.IP23=USART2
Mcu.IP24=USART3
Mcu.IP25=USART6
Mcu.IP3=CAN3
Mcu.IP4=I2C3
Mcu.IP5=NVIC
Mcu.IP6=RCC
Mcu.IP7=SPI2
Mcu.IP8=SPI4
Mcu.IP9=SYS
Mcu.IPNb=25
Mcu.IP5=IWDG
Mcu.IP6=NVIC
Mcu.IP7=RCC
Mcu.IP8=SPI2
Mcu.IP9=SPI4
Mcu.IPNb=26
Mcu.Name=STM32F413V(G-H)Tx
Mcu.Package=LQFP100
Mcu.Pin0=PE2
@@ -108,20 +112,21 @@ Mcu.Pin55=PB8
Mcu.Pin56=PB9
Mcu.Pin57=PE0
Mcu.Pin58=PE1
Mcu.Pin59=VP_SYS_VS_Systick
Mcu.Pin59=VP_IWDG_VS_IWDG
Mcu.Pin6=PH1 - OSC_OUT
Mcu.Pin60=VP_TIM1_VS_ClockSourceINT
Mcu.Pin61=VP_TIM3_VS_ClockSourceINT
Mcu.Pin62=VP_TIM4_VS_ClockSourceINT
Mcu.Pin60=VP_SYS_VS_Systick
Mcu.Pin61=VP_TIM1_VS_ClockSourceINT
Mcu.Pin62=VP_TIM3_VS_ClockSourceINT
Mcu.Pin63=VP_TIM4_VS_ClockSourceINT
Mcu.Pin7=PC0
Mcu.Pin8=PC1
Mcu.Pin9=PC2
Mcu.PinsNb=63
Mcu.PinsNb=64
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F413VGTx
MxCube.Version=6.6.1
MxDb.Version=DB.6.0.60
MxCube.Version=6.10.0
MxDb.Version=DB.6.0.100
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.ForceEnableDMAVector=true
@@ -264,10 +269,13 @@ ProjectManager.PreviousToolchain=
ProjectManager.ProjectBuild=false
ProjectManager.ProjectFileName=CubeMX_Config.ioc
ProjectManager.ProjectName=CubeMX_Config
ProjectManager.ProjectStructure=
ProjectManager.RegisterCallBack=
ProjectManager.StackSize=0x400
ProjectManager.TargetToolchain=MDK-ARM V5.32
ProjectManager.ToolChainLocation=
ProjectManager.UAScriptAfterPath=
ProjectManager.UAScriptBeforePath=
ProjectManager.UnderRoot=false
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_USART1_UART_Init-USART1-false-HAL-true,4-MX_USART2_UART_Init-USART2-false-HAL-true,5-MX_CAN1_Init-CAN1-false-HAL-true,6-MX_CAN2_Init-CAN2-false-HAL-true,7-MX_ADC1_Init-ADC1-false-HAL-true,8-MX_CAN3_Init-CAN3-false-HAL-true,9-MX_I2C3_Init-I2C3-false-HAL-true,10-MX_SPI2_Init-SPI2-false-HAL-true,11-MX_SPI4_Init-SPI4-false-HAL-true,12-MX_TIM1_Init-TIM1-false-HAL-true,13-MX_TIM2_Init-TIM2-false-HAL-true,14-MX_TIM3_Init-TIM3-false-HAL-true,15-MX_TIM4_Init-TIM4-false-HAL-true,16-MX_TIM12_Init-TIM12-false-HAL-true,17-MX_UART4_Init-UART4-false-HAL-true,18-MX_UART5_Init-UART5-false-HAL-true,19-MX_UART7_Init-UART7-false-HAL-true,20-MX_UART8_Init-UART8-false-HAL-true,21-MX_UART9_Init-UART9-false-HAL-true,22-MX_UART10_Init-UART10-false-HAL-true,23-MX_USART3_UART_Init-USART3-false-HAL-true,24-MX_USART6_UART_Init-USART6-false-HAL-true
RCC.AHBFreq_Value=100000000
@@ -404,6 +412,8 @@ USART3.IPParameters=VirtualMode
USART3.VirtualMode=VM_ASYNC
USART6.IPParameters=VirtualMode
USART6.VirtualMode=VM_ASYNC
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

View File

@@ -7,7 +7,7 @@
******************************************************************************
* @attention
*
* Copyright (c) 2023 STMicroelectronics.
* Copyright (c) 2024 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
@@ -59,6 +59,7 @@ void Error_Handler(void);
/* USER CODE END EFP */
/* Private defines -----------------------------------------------------------*/
/* USER CODE BEGIN Private defines */
/* USER CODE END Private defines */

View File

@@ -37,50 +37,50 @@
*/
#define HAL_MODULE_ENABLED
#define HAL_ADC_MODULE_ENABLED
/* #define HAL_CRYP_MODULE_ENABLED */
/* #define HAL_CRYP_MODULE_ENABLED */
#define HAL_ADC_MODULE_ENABLED
#define HAL_CAN_MODULE_ENABLED
/* #define HAL_CRC_MODULE_ENABLED */
/* #define HAL_CAN_LEGACY_MODULE_ENABLED */
/* #define HAL_CRYP_MODULE_ENABLED */
/* #define HAL_DAC_MODULE_ENABLED */
/* #define HAL_DCMI_MODULE_ENABLED */
/* #define HAL_DMA2D_MODULE_ENABLED */
/* #define HAL_ETH_MODULE_ENABLED */
/* #define HAL_NAND_MODULE_ENABLED */
/* #define HAL_NOR_MODULE_ENABLED */
/* #define HAL_PCCARD_MODULE_ENABLED */
/* #define HAL_SRAM_MODULE_ENABLED */
/* #define HAL_SDRAM_MODULE_ENABLED */
/* #define HAL_HASH_MODULE_ENABLED */
/* #define HAL_CRC_MODULE_ENABLED */
/* #define HAL_CAN_LEGACY_MODULE_ENABLED */
/* #define HAL_DAC_MODULE_ENABLED */
/* #define HAL_DCMI_MODULE_ENABLED */
/* #define HAL_DMA2D_MODULE_ENABLED */
/* #define HAL_ETH_MODULE_ENABLED */
/* #define HAL_ETH_LEGACY_MODULE_ENABLED */
/* #define HAL_NAND_MODULE_ENABLED */
/* #define HAL_NOR_MODULE_ENABLED */
/* #define HAL_PCCARD_MODULE_ENABLED */
/* #define HAL_SRAM_MODULE_ENABLED */
/* #define HAL_SDRAM_MODULE_ENABLED */
/* #define HAL_HASH_MODULE_ENABLED */
#define HAL_I2C_MODULE_ENABLED
/* #define HAL_I2S_MODULE_ENABLED */
/* #define HAL_IWDG_MODULE_ENABLED */
/* #define HAL_LTDC_MODULE_ENABLED */
/* #define HAL_RNG_MODULE_ENABLED */
/* #define HAL_RTC_MODULE_ENABLED */
/* #define HAL_SAI_MODULE_ENABLED */
/* #define HAL_SD_MODULE_ENABLED */
/* #define HAL_MMC_MODULE_ENABLED */
/* #define HAL_I2S_MODULE_ENABLED */
#define HAL_IWDG_MODULE_ENABLED
/* #define HAL_LTDC_MODULE_ENABLED */
/* #define HAL_RNG_MODULE_ENABLED */
/* #define HAL_RTC_MODULE_ENABLED */
/* #define HAL_SAI_MODULE_ENABLED */
/* #define HAL_SD_MODULE_ENABLED */
/* #define HAL_MMC_MODULE_ENABLED */
#define HAL_SPI_MODULE_ENABLED
#define HAL_TIM_MODULE_ENABLED
#define HAL_UART_MODULE_ENABLED
/* #define HAL_USART_MODULE_ENABLED */
/* #define HAL_IRDA_MODULE_ENABLED */
/* #define HAL_SMARTCARD_MODULE_ENABLED */
/* #define HAL_SMBUS_MODULE_ENABLED */
/* #define HAL_WWDG_MODULE_ENABLED */
/* #define HAL_PCD_MODULE_ENABLED */
/* #define HAL_HCD_MODULE_ENABLED */
/* #define HAL_DSI_MODULE_ENABLED */
/* #define HAL_QSPI_MODULE_ENABLED */
/* #define HAL_QSPI_MODULE_ENABLED */
/* #define HAL_CEC_MODULE_ENABLED */
/* #define HAL_FMPI2C_MODULE_ENABLED */
/* #define HAL_FMPSMBUS_MODULE_ENABLED */
/* #define HAL_SPDIFRX_MODULE_ENABLED */
/* #define HAL_DFSDM_MODULE_ENABLED */
/* #define HAL_LPTIM_MODULE_ENABLED */
/* #define HAL_USART_MODULE_ENABLED */
/* #define HAL_IRDA_MODULE_ENABLED */
/* #define HAL_SMARTCARD_MODULE_ENABLED */
/* #define HAL_SMBUS_MODULE_ENABLED */
/* #define HAL_WWDG_MODULE_ENABLED */
/* #define HAL_PCD_MODULE_ENABLED */
/* #define HAL_HCD_MODULE_ENABLED */
/* #define HAL_DSI_MODULE_ENABLED */
/* #define HAL_QSPI_MODULE_ENABLED */
/* #define HAL_QSPI_MODULE_ENABLED */
/* #define HAL_CEC_MODULE_ENABLED */
/* #define HAL_FMPI2C_MODULE_ENABLED */
/* #define HAL_FMPSMBUS_MODULE_ENABLED */
/* #define HAL_SPDIFRX_MODULE_ENABLED */
/* #define HAL_DFSDM_MODULE_ENABLED */
/* #define HAL_LPTIM_MODULE_ENABLED */
#define HAL_GPIO_MODULE_ENABLED
#define HAL_EXTI_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
@@ -214,7 +214,7 @@
#define MAC_ADDR5 0U
/* Definition of the Ethernet driver buffers size and count */
#define ETH_RX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for receive */
#define ETH_RX_BUF_SIZE /* buffer size for receive */
#define ETH_TX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for transmit */
#define ETH_RXBUFNB 4U /* 4 Rx buffers of size ETH_RX_BUF_SIZE */
#define ETH_TXBUFNB 4U /* 4 Tx buffers of size ETH_TX_BUF_SIZE */
@@ -222,7 +222,7 @@
/* Section 2: PHY configuration section */
/* DP83848_PHY_ADDRESS Address*/
#define DP83848_PHY_ADDRESS 0x01U
#define DP83848_PHY_ADDRESS
/* PHY Reset delay these values are based on a 1 ms Systick interrupt*/
#define PHY_RESET_DELAY 0x000000FFU
/* PHY Configuration delay */
@@ -252,10 +252,10 @@
#define PHY_JABBER_DETECTION ((uint16_t)0x0002U) /*!< Jabber condition detected */
/* Section 4: Extended PHY Registers */
#define PHY_SR ((uint16_t)0x10U) /*!< PHY status register Offset */
#define PHY_SR ((uint16_t)) /*!< PHY status register Offset */
#define PHY_SPEED_STATUS ((uint16_t)0x0002U) /*!< PHY Speed mask */
#define PHY_DUPLEX_STATUS ((uint16_t)0x0004U) /*!< PHY Duplex mask */
#define PHY_SPEED_STATUS ((uint16_t)) /*!< PHY Speed mask */
#define PHY_DUPLEX_STATUS ((uint16_t)) /*!< PHY Duplex mask */
/* ################## SPI peripheral configuration ########################## */
@@ -327,6 +327,10 @@
#include "stm32f4xx_hal_eth.h"
#endif /* HAL_ETH_MODULE_ENABLED */
#ifdef HAL_ETH_LEGACY_MODULE_ENABLED
#include "stm32f4xx_hal_eth_legacy.h"
#endif /* HAL_ETH_LEGACY_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32f4xx_hal_flash.h"
#endif /* HAL_FLASH_MODULE_ENABLED */

View File

@@ -6,7 +6,7 @@
******************************************************************************
* @attention
*
* Copyright (c) 2023 STMicroelectronics.
* Copyright (c) 2024 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file

View File

@@ -7,7 +7,7 @@
******************************************************************************
* @attention
*
* Copyright (c) 2023 STMicroelectronics.
* Copyright (c) 2024 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
@@ -20,6 +20,7 @@
/* Includes ------------------------------------------------------------------*/
#include "main.h"
/* USER CODE BEGIN Includes */
/* USER CODE END Includes */
@@ -528,7 +529,7 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
*/
GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_11;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF1_TIM1;
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
@@ -586,7 +587,7 @@ void HAL_TIM_IC_MspInit(TIM_HandleTypeDef* htim_ic)
*/
GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF1_TIM2;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

View File

@@ -6,7 +6,7 @@
******************************************************************************
* @attention
*
* Copyright (c) 2023 STMicroelectronics.
* Copyright (c) 2024 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
@@ -73,7 +73,7 @@ void NMI_Handler(void)
/* USER CODE END NonMaskableInt_IRQn 0 */
HAL_RCC_NMI_IRQHandler();
/* USER CODE BEGIN NonMaskableInt_IRQn 1 */
while (1)
while (1)
{
}
/* USER CODE END NonMaskableInt_IRQn 1 */

View File

@@ -317,6 +317,24 @@ menu "On-chip Peripheral Drivers"
default n
endif
menuconfig BSP_USING_CAPTURE12
bool "Enable capture12"
default n
if BSP_USING_CAPTURE12
config BSP_USING_CAPTURE12_CH1
bool "Enable capture12 channel1"
default n
config BSP_USING_CAPTURE12_CH2
bool "Enable capture12 channel2"
default n
config BSP_USING_CAPTURE12_CH3
bool "Enable capture12 channel3"
default n
config BSP_USING_CAPTURE12_CH4
bool "Enable capture12 channel4"
default n
endif
endif
menuconfig BSP_USING_ADC

View File

@@ -84,9 +84,6 @@ static void reset_fc(int argc, char **argv)
}
rt_kprintf("\n the system will be reset after %ds\n", second);
rt_enter_critical();
rt_console_set_device(RT_NULL);
rt_exit_critical();
rt_thread_delay(1000 * second);
rt_hw_cpu_reset();
@@ -107,3 +104,6 @@ INIT_BOARD_EXPORT(stm32_adc_init);
extern int stm32_capture_init(void);
INIT_DEVICE_EXPORT(stm32_capture_init);
extern int rt_wdt_init(void);
INIT_BOARD_EXPORT(rt_wdt_init);

View File

@@ -123,6 +123,7 @@ rt_err_t port_rx_ind(rt_device_t dev, rt_size_t size)
* 作用 & 说明
* - 记录固件对应硬件 & 版本信息
* - 简便起见,不包含校验信息
* - 允许 iap 升级不含 header 的普通固件
*
* index len desc
* 0 4 'XYFC'
@@ -137,14 +138,14 @@ static int _check_head(const rt_uint8_t *buf, rt_size_t len)
{
if (len < 8)
{
return -1;
return 0;
}
for (int i = 0; i < sizeof(FIXED_HEAD); i++)
{
if (FIXED_HEAD[i] != buf[i])
{
return -2;
return 0;
}
}
@@ -394,11 +395,11 @@ static int _iap_entry(rt_bool_t is_boot)
_response_cmd(IAP_V5_CMD_ONE_REPLY);
rt_thread_mdelay(200);
if (!iap_v5_req_char(console_dev, &_wait, 'c', 1000))
{
err = RT_ENOSYS;
goto _exit;
}
// if (!iap_v5_req_char(console_dev, &_wait, 'c', 1000))
// {
// err = RT_ENOSYS;
// goto _exit;
// }
_response_cmd(IAP_V5_CMD_C_REPLY);
@@ -409,6 +410,7 @@ static int _iap_entry(rt_bool_t is_boot)
rt_kprintf("rt_malloc failed\n");
goto _exit;
}
ctx->parent.v5_iap_adapt = RT_TRUE;
ctx->flash = fal_partition_find(IapAppAddr? IAP_FLASH_BOOT_SEC: IAP_FLASH_APP_SEC);
if (ctx->flash == RT_NULL)

View File

@@ -51,7 +51,7 @@ static const struct stm32_baud_rate_tab can_baud_rate_tab[] =
{CAN20kBaud, (CAN_SJW_2TQ | CAN_BS1_9TQ | CAN_BS2_5TQ | 150)},
{CAN10kBaud, (CAN_SJW_2TQ | CAN_BS1_9TQ | CAN_BS2_5TQ | 300)}
};
#else /* APB1 45MHz(max) */
#else /* APB1 50MHz(max) */
static const struct stm32_baud_rate_tab can_baud_rate_tab[] =
{
#ifdef BSP_USING_CAN168M
@@ -59,14 +59,14 @@ static const struct stm32_baud_rate_tab can_baud_rate_tab[] =
#else
{CAN1MBaud, (CAN_SJW_2TQ | CAN_BS1_6TQ | CAN_BS2_3TQ | 5)},
#endif
{CAN800kBaud, (CAN_SJW_2TQ | CAN_BS1_8TQ | CAN_BS2_5TQ | 4)},
{CAN500kBaud, (CAN_SJW_2TQ | CAN_BS1_9TQ | CAN_BS2_5TQ | 6)},
{CAN250kBaud, (CAN_SJW_2TQ | CAN_BS1_9TQ | CAN_BS2_5TQ | 12)},
{CAN125kBaud, (CAN_SJW_2TQ | CAN_BS1_9TQ | CAN_BS2_5TQ | 24)},
{CAN100kBaud, (CAN_SJW_2TQ | CAN_BS1_9TQ | CAN_BS2_5TQ | 30)},
{CAN50kBaud, (CAN_SJW_2TQ | CAN_BS1_9TQ | CAN_BS2_5TQ | 60)},
{CAN20kBaud, (CAN_SJW_2TQ | CAN_BS1_9TQ | CAN_BS2_5TQ | 150)},
{CAN10kBaud, (CAN_SJW_2TQ | CAN_BS1_9TQ | CAN_BS2_5TQ | 300)}
// {CAN800kBaud, (CAN_SJW_2TQ | CAN_BS1_8TQ | CAN_BS2_5TQ | 4)},
{CAN500kBaud, (CAN_SJW_2TQ | CAN_BS1_6TQ | CAN_BS2_3TQ | 10)},
{CAN250kBaud, (CAN_SJW_2TQ | CAN_BS1_6TQ | CAN_BS2_3TQ | 20)},
{CAN125kBaud, (CAN_SJW_2TQ | CAN_BS1_4TQ | CAN_BS2_3TQ | 50)},
{CAN100kBaud, (CAN_SJW_2TQ | CAN_BS1_3TQ | CAN_BS2_6TQ | 50)},
{CAN50kBaud, (CAN_SJW_2TQ | CAN_BS1_1TQ | CAN_BS2_3TQ | 200)},
{CAN20kBaud, (CAN_SJW_2TQ | CAN_BS1_3TQ | CAN_BS2_6TQ | 250)},
{CAN10kBaud, (CAN_SJW_2TQ | CAN_BS1_12TQ | CAN_BS2_7TQ | 250)}
};
#endif
#elif defined (SOC_SERIES_STM32F7)/* APB1 54MHz(max) */

View File

@@ -28,6 +28,13 @@
.timerx = 2, \
}
#define CAPTURE12_CONFIG \
{ \
.timer.Instance = TIM12, \
.iqrn = TIM8_BRK_TIM12_IRQn, \
.timerx = 12, \
}
#define LOG_TAG "drv.tcap"
#include <drv_log.h>
@@ -93,6 +100,12 @@ enum
#ifdef BSP_USING_CAPTURE10
CAPTURE10_INDEX,
#endif
#ifdef BSP_USING_CAPTURE11
CAPTURE11_INDEX,
#endif
#ifdef BSP_USING_CAPTURE12
CAPTURE12_INDEX,
#endif
};
static struct stm32_capture stm32_capture_obj[] =
@@ -127,6 +140,12 @@ static struct stm32_capture stm32_capture_obj[] =
#ifdef BSP_USING_CAPTURE10
CAPTURE10_CONFIG,
#endif
#ifdef BSP_USING_CAPTURE11
CAPTURE11_CONFIG,
#endif
#ifdef BSP_USING_CAPTURE12
CAPTURE12_CONFIG,
#endif
};
struct stm32_capture_device
@@ -261,6 +280,12 @@ static struct stm32_capture_device stm32_capture_devices[] =
#ifdef BSP_USING_CAPTURE10_CH4
{{0}, &stm32_capture_obj[CAPTURE10_INDEX], 4, {0}},
#endif
#ifdef BSP_USING_CAPTURE12_CH1
{{0}, &stm32_capture_obj[CAPTURE12_INDEX], 1, {0}},
#endif
#ifdef BSP_USING_CAPTURE12_CH2
{{0}, &stm32_capture_obj[CAPTURE12_INDEX], 2, {0}},
#endif
};
static rt_uint64_t get_timer_clock(TIM_HandleTypeDef *htim)
@@ -437,6 +462,15 @@ void TIM1_CC_IRQHandler(void)
rt_interrupt_leave();
}
void TIM8_BRK_TIM12_IRQHandler(void)
{
/* enter interrupt */
rt_interrupt_enter();
HAL_TIM_IRQHandler(&stm32_capture_obj[CAPTURE12_INDEX].timer);
/* leave interrupt */
rt_interrupt_leave();
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
int i = 0;

View File

@@ -264,14 +264,6 @@ static rt_err_t drv_pwm_get(TIM_HandleTypeDef *htim, struct rt_pwm_configuration
rt_uint64_t tim_clock;
tim_clock = tim_clock_get(htim);
if (__HAL_TIM_GET_CLOCKDIVISION(htim) == TIM_CLOCKDIVISION_DIV2)
{
tim_clock = tim_clock / 2;
}
else if (__HAL_TIM_GET_CLOCKDIVISION(htim) == TIM_CLOCKDIVISION_DIV4)
{
tim_clock = tim_clock / 4;
}
/* Convert nanosecond to frequency and duty cycle. 1s = 1 * 1000 * 1000 * 1000 ns */
tim_clock /= 1000000UL;
@@ -357,6 +349,7 @@ static rt_err_t drv_pwm_set_pulse(TIM_HandleTypeDef *htim, struct rt_pwm_configu
tim_clock /= 1000000UL;
period = (__HAL_TIM_GET_AUTORELOAD(htim) + 1) * (htim->Instance->PSC + 1) * 1000UL / tim_clock;
configuration->pulse = period - configuration->pulse; // 改为低电平有效,故需要计算一下低电平的脉宽
pulse = (rt_uint64_t)configuration->pulse * (__HAL_TIM_GET_AUTORELOAD(htim) + 1) / period;
if (pulse < MIN_PULSE)
@@ -452,7 +445,7 @@ static rt_err_t stm32_hw_pwm_init(struct stm32_pwm *device)
oc_config.OCMode = TIM_OCMODE_PWM1;
oc_config.Pulse = 0;
oc_config.OCPolarity = TIM_OCPOLARITY_HIGH;
oc_config.OCPolarity = TIM_OCPOLARITY_LOW;
oc_config.OCFastMode = TIM_OCFAST_DISABLE;
oc_config.OCNIdleState = TIM_OCNIDLESTATE_RESET;
oc_config.OCIdleState = TIM_OCIDLESTATE_RESET;

View File

@@ -126,6 +126,6 @@ int rt_wdt_init(void)
LOG_D("wdt device register success.");
return RT_EOK;
}
INIT_BOARD_EXPORT(rt_wdt_init);
//INIT_BOARD_EXPORT(rt_wdt_init);
#endif /* RT_USING_WDT */

View File

@@ -311,12 +311,12 @@
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>10</FileNumber>
<FileType>1</FileType>
<FileType>8</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_crt_init.c</PathWithFileName>
<FilenameWithoutPath>cxx_crt_init.c</FilenameWithoutPath>
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_crt.cpp</PathWithFileName>
<FilenameWithoutPath>cxx_crt.cpp</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -335,12 +335,12 @@
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>12</FileNumber>
<FileType>8</FileType>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_crt.cpp</PathWithFileName>
<FilenameWithoutPath>cxx_crt.cpp</FilenameWithoutPath>
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_crt_init.c</PathWithFileName>
<FilenameWithoutPath>cxx_crt_init.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -604,7 +604,7 @@
<Group>
<GroupName>Drivers</GroupName>
<tvExp>1</tvExp>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
@@ -740,6 +740,18 @@
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>44</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>libraries\HAL_Drivers\drv_wdt.c</PathWithFileName>
<FilenameWithoutPath>drv_wdt.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
@@ -748,18 +760,6 @@
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>44</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>rt-thread\components\fal\src\fal_rtt.c</PathWithFileName>
<FilenameWithoutPath>fal_rtt.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>45</FileNumber>
@@ -791,6 +791,18 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>rt-thread\components\fal\src\fal_rtt.c</PathWithFileName>
<FilenameWithoutPath>fal_rtt.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>48</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>rt-thread\components\fal\src\fal.c</PathWithFileName>
<FilenameWithoutPath>fal.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
@@ -806,7 +818,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>48</FileNumber>
<FileNumber>49</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -818,7 +830,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>49</FileNumber>
<FileNumber>50</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -830,7 +842,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>50</FileNumber>
<FileNumber>51</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -842,7 +854,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>51</FileNumber>
<FileNumber>52</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -862,7 +874,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>52</FileNumber>
<FileNumber>53</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -876,13 +888,13 @@
<Group>
<GroupName>Kernel</GroupName>
<tvExp>0</tvExp>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>53</FileNumber>
<FileNumber>54</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -894,7 +906,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>54</FileNumber>
<FileNumber>55</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -906,7 +918,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>55</FileNumber>
<FileNumber>56</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -918,7 +930,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>56</FileNumber>
<FileNumber>57</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -930,7 +942,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>57</FileNumber>
<FileNumber>58</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -942,7 +954,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>58</FileNumber>
<FileNumber>59</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -954,7 +966,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>59</FileNumber>
<FileNumber>60</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -966,7 +978,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>60</FileNumber>
<FileNumber>61</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -978,7 +990,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>61</FileNumber>
<FileNumber>62</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -990,7 +1002,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>62</FileNumber>
<FileNumber>63</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1002,7 +1014,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>63</FileNumber>
<FileNumber>64</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1014,7 +1026,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>64</FileNumber>
<FileNumber>65</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1026,7 +1038,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>65</FileNumber>
<FileNumber>66</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1046,7 +1058,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>66</FileNumber>
<FileNumber>67</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1058,7 +1070,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>67</FileNumber>
<FileNumber>68</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1070,7 +1082,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>68</FileNumber>
<FileNumber>69</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1082,7 +1094,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>69</FileNumber>
<FileNumber>70</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1094,7 +1106,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>70</FileNumber>
<FileNumber>71</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1106,7 +1118,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>71</FileNumber>
<FileNumber>72</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1118,7 +1130,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>72</FileNumber>
<FileNumber>73</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1130,7 +1142,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>73</FileNumber>
<FileNumber>74</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1142,7 +1154,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>74</FileNumber>
<FileNumber>75</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1154,7 +1166,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>75</FileNumber>
<FileNumber>76</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1166,7 +1178,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>76</FileNumber>
<FileNumber>77</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1178,7 +1190,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>77</FileNumber>
<FileNumber>78</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1190,7 +1202,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>78</FileNumber>
<FileNumber>79</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1202,7 +1214,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>79</FileNumber>
<FileNumber>80</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1214,7 +1226,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>80</FileNumber>
<FileNumber>81</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1226,7 +1238,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>81</FileNumber>
<FileNumber>82</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1238,7 +1250,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>82</FileNumber>
<FileNumber>83</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1250,7 +1262,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>83</FileNumber>
<FileNumber>84</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1262,7 +1274,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>84</FileNumber>
<FileNumber>85</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1274,7 +1286,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>85</FileNumber>
<FileNumber>86</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1286,7 +1298,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>86</FileNumber>
<FileNumber>87</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1298,7 +1310,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>87</FileNumber>
<FileNumber>88</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1310,7 +1322,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>88</FileNumber>
<FileNumber>89</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1322,7 +1334,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>89</FileNumber>
<FileNumber>90</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1334,7 +1346,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>90</FileNumber>
<FileNumber>91</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1346,7 +1358,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>91</FileNumber>
<FileNumber>92</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1358,7 +1370,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>92</FileNumber>
<FileNumber>93</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1370,7 +1382,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>93</FileNumber>
<FileNumber>94</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1390,7 +1402,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>94</FileNumber>
<FileNumber>95</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1404,13 +1416,13 @@
<Group>
<GroupName>Utilities</GroupName>
<tvExp>1</tvExp>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>12</GroupNumber>
<FileNumber>95</FileNumber>
<FileNumber>96</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1422,7 +1434,7 @@
</File>
<File>
<GroupNumber>12</GroupNumber>
<FileNumber>96</FileNumber>
<FileNumber>97</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1434,7 +1446,7 @@
</File>
<File>
<GroupNumber>12</GroupNumber>
<FileNumber>97</FileNumber>
<FileNumber>98</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>

View File

@@ -434,9 +434,9 @@
<FilePath>rt-thread\components\libc\cplusplus\cxx_Thread.cpp</FilePath>
</File>
<File>
<FileName>cxx_crt_init.c</FileName>
<FileType>1</FileType>
<FilePath>rt-thread\components\libc\cplusplus\cxx_crt_init.c</FilePath>
<FileName>cxx_crt.cpp</FileName>
<FileType>8</FileType>
<FilePath>rt-thread\components\libc\cplusplus\cxx_crt.cpp</FilePath>
</File>
<File>
<FileName>cxx_Mutex.cpp</FileName>
@@ -444,9 +444,9 @@
<FilePath>rt-thread\components\libc\cplusplus\cxx_Mutex.cpp</FilePath>
</File>
<File>
<FileName>cxx_crt.cpp</FileName>
<FileType>8</FileType>
<FilePath>rt-thread\components\libc\cplusplus\cxx_crt.cpp</FilePath>
<FileName>cxx_crt_init.c</FileName>
<FileType>1</FileType>
<FilePath>rt-thread\components\libc\cplusplus\cxx_crt_init.c</FilePath>
</File>
<File>
<FileName>cxx_Semaphore.cpp</FileName>
@@ -618,16 +618,16 @@
<FileType>1</FileType>
<FilePath>libraries\HAL_Drivers\drv_usart.c</FilePath>
</File>
<File>
<FileName>drv_wdt.c</FileName>
<FileType>1</FileType>
<FilePath>libraries\HAL_Drivers\drv_wdt.c</FilePath>
</File>
</Files>
</Group>
<Group>
<GroupName>Fal</GroupName>
<Files>
<File>
<FileName>fal_rtt.c</FileName>
<FileType>1</FileType>
<FilePath>rt-thread\components\fal\src\fal_rtt.c</FilePath>
</File>
<File>
<FileName>fal_partition.c</FileName>
<FileType>1</FileType>
@@ -638,6 +638,11 @@
<FileType>1</FileType>
<FilePath>rt-thread\components\fal\src\fal_flash.c</FilePath>
</File>
<File>
<FileName>fal_rtt.c</FileName>
<FileType>1</FileType>
<FilePath>rt-thread\components\fal\src\fal_rtt.c</FilePath>
</File>
<File>
<FileName>fal.c</FileName>
<FileType>1</FileType>

View File

@@ -189,6 +189,6 @@ void rt_hw_inputcapture_isr(struct rt_inputcapture_device *inputcapture, rt_bool
{
/* indicate to upper layer application */
if (inputcapture->parent.rx_indicate != RT_NULL)
inputcapture->parent.rx_indicate(&inputcapture->parent, receive_size);
inputcapture->parent.rx_indicate(&inputcapture->parent, data.is_high);
}
}

View File

@@ -663,7 +663,7 @@ void elog_output(uint8_t level, const char *tag, const char *file, const char *f
{
va_list args;
static char line_buffer[256] = {0};
rt_snprintf(line_buffer, sizeof(line_buffer), "[%s:%s:%d] %s", file, func, line, format);
rt_snprintf(line_buffer, sizeof(line_buffer), "%s", format);
/* args point to the first variable parameter */
va_start(args, format);

View File

@@ -4,7 +4,7 @@ cwd = GetCurrentDir()
src = Split('''
ymodem.c
''')
CPPPATH = [cwd]
if GetDepend('YMODEM_USING_FILE_TRANSFER'):

View File

@@ -30,6 +30,16 @@ struct custom_ctx
char fpath[DFS_PATH_MAX];
};
static const char *_get_path_lastname(const char *path)
{
char *ptr;
if ((ptr = (char *)strrchr(path, '/')) == NULL)
return path;
/* skip the '/' then return */
return ++ptr;
}
static enum rym_code _rym_recv_begin(
struct rym_ctx *ctx,
rt_uint8_t *buf,
@@ -125,7 +135,18 @@ static enum rym_code _rym_send_begin(
rt_kprintf("error open file.\n");
return RYM_ERR_FILE;
}
rt_sprintf((char *)buf, "%s%c%d", (char *) & (cctx->fpath[1]), insert_0, file_buf.st_size);
const char *fdst = _get_path_lastname(cctx->fpath);
if(fdst != cctx->fpath)
{
fdst = dfs_normalize_path(RT_NULL, fdst);
if (fdst == RT_NULL)
{
return RYM_ERR_FILE;
}
}
rt_sprintf((char *)buf, "%s%c%d", fdst, insert_0, file_buf.st_size);
return RYM_CODE_SOH;
}
@@ -153,6 +174,10 @@ static enum rym_code _rym_send_data(
ctx->stage = RYM_STAGE_FINISHING;
}
if (read_size > 128)
{
return RYM_CODE_STX;
}
return RYM_CODE_SOH;
}
@@ -174,7 +199,7 @@ static rt_err_t rym_download_file(rt_device_t idev,const char *file_path)
if (!ctx)
{
rt_kprintf("rt_malloc failed\n");
return RT_ENOMEM;
return -RT_ENOMEM;
}
ctx->fd = -1;
rt_strncpy(ctx->fpath, file_path, DFS_PATH_MAX);
@@ -194,7 +219,7 @@ static rt_err_t rym_upload_file(rt_device_t idev, const char *file_path)
if (!ctx)
{
rt_kprintf("rt_malloc failed\n");
return RT_ENOMEM;
return -RT_ENOMEM;
}
ctx->fd = -1;
rt_strncpy(ctx->fpath, file_path, DFS_PATH_MAX);

View File

@@ -0,0 +1,17 @@
#ifndef __RY_SY_H__
#define __RY_SY_H__
#include "dfs.h"
#include "ymodem.h"
struct rym_file_ctx
{
struct rym_ctx parent;
int fd;
int flen;
char fpath[DFS_PATH_MAX];
};
rt_err_t rym_download_file(rt_device_t idev, struct rym_file_ctx *ctx, rt_bool_t v5_adapt);
#endif

View File

@@ -1,5 +1,5 @@
/*
* COPYRIGHT (C) 2011-2021, Real-Thread Information Technology Ltd
* COPYRIGHT (C) 2011-2023, Real-Thread Information Technology Ltd
* All rights reserved
*
* SPDX-License-Identifier: Apache-2.0
@@ -121,7 +121,7 @@ static enum rym_code _rym_read_code(
}
/* the caller should at least alloc _RYM_STX_PKG_SZ buffer */
static rt_size_t _rym_read_data(
static rt_ssize_t _rym_read_data(
struct rym_ctx *ctx,
rt_size_t len)
{
@@ -149,31 +149,44 @@ static rt_err_t _rym_send_packet(
rt_uint16_t send_crc;
rt_uint8_t index_inv = ~index;
rt_size_t writelen = 0;
rt_size_t packetlen = 0;
send_crc = CRC16(ctx->buf + 3, _RYM_SOH_PKG_SZ - 5);
switch(code)
{
case RYM_CODE_SOH:
packetlen = _RYM_SOH_PKG_SZ;
break;
case RYM_CODE_STX:
packetlen = _RYM_STX_PKG_SZ;
break;
default:
return -RT_ERROR;
}
send_crc = CRC16(ctx->buf + 3, packetlen - 5);
ctx->buf[0] = code;
ctx->buf[1] = index;
ctx->buf[2] = index_inv;
ctx->buf[131] = (rt_uint8_t)(send_crc >> 8);
ctx->buf[132] = (rt_uint8_t)send_crc & 0xff;
ctx->buf[packetlen - 2] = (rt_uint8_t)(send_crc >> 8);
ctx->buf[packetlen - 1] = (rt_uint8_t)send_crc & 0xff;
do
{
writelen += rt_device_write(ctx->dev, 0, ctx->buf + writelen,
_RYM_SOH_PKG_SZ - writelen);
packetlen - writelen);
}
while (writelen < _RYM_SOH_PKG_SZ);
while (writelen < packetlen);
return RT_EOK;
}
static rt_size_t _rym_putchar(struct rym_ctx *ctx, rt_uint8_t code)
static rt_ssize_t _rym_putchar(struct rym_ctx *ctx, rt_uint8_t code)
{
rt_device_write(ctx->dev, 0, &code, sizeof(code));
return 1;
}
static rt_size_t _rym_getchar(struct rym_ctx *ctx)
static rt_ssize_t _rym_getchar(struct rym_ctx *ctx)
{
rt_uint8_t getc_ack;
@@ -276,7 +289,9 @@ static rt_err_t _rym_do_send_handshake(
/* congratulations, check passed. */
if (ctx->on_begin && ctx->on_begin(ctx, ctx->buf + 3, data_sz - 5) != RYM_CODE_SOH)
{
return -RYM_ERR_CODE;
}
code = RYM_CODE_SOH;
_rym_send_packet(ctx, code, index);
@@ -349,6 +364,7 @@ static rt_err_t _rym_do_trans(struct rym_ctx *ctx)
_rym_putchar(ctx, RYM_CODE_ACK);
_rym_putchar(ctx, RYM_CODE_C);
ctx->stage = RYM_STAGE_ESTABLISHED;
rt_size_t errors = 0;
while (1)
{
@@ -360,36 +376,61 @@ static rt_err_t _rym_do_trans(struct rym_ctx *ctx)
RYM_WAIT_PKG_TICK);
switch (code)
{
case RYM_CODE_SOH:
data_sz = 128;
break;
case RYM_CODE_STX:
data_sz = 1024;
break;
case RYM_CODE_EOT:
return RT_EOK;
default:
return -RYM_ERR_CODE;
case RYM_CODE_SOH:
data_sz = 128;
break;
case RYM_CODE_STX:
data_sz = 1024;
break;
case RYM_CODE_EOT:
return RT_EOK;
default:
errors++;
if(errors > RYM_MAX_ERRORS)
{
return -RYM_ERR_CODE;/* Abort communication */
}
else
{
_rym_putchar(ctx, RYM_CODE_NAK);/* Ask for a packet */
continue;
}
};
err = _rym_trans_data(ctx, data_sz, &code);
if (err != RT_EOK)
return err;
{
errors++;
if(errors > RYM_MAX_ERRORS)
{
return err;/* Abort communication */
}
else
{
_rym_putchar(ctx, RYM_CODE_NAK);/* Ask for a packet */
continue;
}
}
else
{
errors = 0;
}
switch (code)
{
case RYM_CODE_CAN:
/* the spec require multiple CAN */
for (i = 0; i < RYM_END_SESSION_SEND_CAN_NUM; i++)
{
_rym_putchar(ctx, RYM_CODE_CAN);
}
return -RYM_ERR_CAN;
case RYM_CODE_ACK:
_rym_putchar(ctx, RYM_CODE_ACK);
break;
default:
// wrong code
break;
case RYM_CODE_CAN:
/* the spec require multiple CAN */
for (i = 0; i < RYM_END_SESSION_SEND_CAN_NUM; i++)
{
_rym_putchar(ctx, RYM_CODE_CAN);
}
return -RYM_ERR_CAN;
case RYM_CODE_ACK:
_rym_putchar(ctx, RYM_CODE_ACK);
break;
default:
// wrong code
break;
};
}
}
@@ -402,21 +443,20 @@ static rt_err_t _rym_do_send_trans(struct rym_ctx *ctx)
rt_uint32_t index = 1;
rt_uint8_t getc_ack;
data_sz = _RYM_SOH_PKG_SZ;
data_sz = _RYM_STX_PKG_SZ;
while (1)
{
if (ctx->on_data && ctx->on_data(ctx, ctx->buf + 3, data_sz - 5) != RYM_CODE_SOH)
if (!ctx->on_data)
{
return -RYM_ERR_CODE;
code = RYM_CODE_SOH;
}
code = ctx->on_data(ctx, ctx->buf + 3, data_sz - 5);
_rym_send_packet(ctx, code, index);
index++;
rt_device_set_rx_indicate(ctx->dev, _rym_rx_ind);
getc_ack = _rym_getchar(ctx);
if (getc_ack != RYM_CODE_ACK)
{
return -RYM_ERR_ACK;
@@ -429,6 +469,8 @@ static rt_err_t _rym_do_send_trans(struct rym_ctx *ctx)
return RT_EOK;
}
// 发送EOT飞控回复ACK和'C'然后发送SOH空数据然后回复ACK然后等待飞控下发B5,5B,03,BB表示升级成功
static rt_err_t _rym_do_fin(struct rym_ctx *ctx)
{
enum rym_code code;
@@ -442,10 +484,15 @@ static rt_err_t _rym_do_fin(struct rym_ctx *ctx)
if (ctx->on_end)
ctx->on_end(ctx, ctx->buf + 3, 128);
_rym_putchar(ctx, RYM_CODE_NAK);
code = _rym_read_code(ctx, RYM_WAIT_PKG_TICK);
if (code != RYM_CODE_EOT)
return -RYM_ERR_CODE;
if (!ctx->v5_iap_adapt)
{
_rym_putchar(ctx, RYM_CODE_NAK);
code = _rym_read_code(ctx, RYM_WAIT_PKG_TICK);
if (code != RYM_CODE_EOT)
{
return -RYM_ERR_CODE;
}
}
_rym_putchar(ctx, RYM_CODE_ACK);
_rym_putchar(ctx, RYM_CODE_C);
@@ -460,7 +507,9 @@ static rt_err_t _rym_do_fin(struct rym_ctx *ctx)
data_sz = _RYM_STX_PKG_SZ;
}
else
{
return -RYM_ERR_CODE;
}
i = _rym_read_data(ctx, _RYM_SOH_PKG_SZ - 1);
if (i != (_RYM_SOH_PKG_SZ - 1))
@@ -558,11 +607,6 @@ static rt_err_t _rym_do_recv(
while (1)
{
err = _rym_do_trans(ctx);
if (err != RT_EOK)
{
rt_free(ctx->buf);
return err;
}
err = _rym_do_fin(ctx);
if (err != RT_EOK)
@@ -669,6 +713,11 @@ __exit:
_rym_the_ctx = RT_NULL;
if (res != RT_EOK)
{
rt_kprintf("rym_recv_on_device err: %d\n", res);
}
return res;
}

View File

@@ -58,6 +58,11 @@ enum rym_code
#define RYM_END_SESSION_SEND_CAN_NUM 0x07
#endif
/* how many retries were made when the error occurred */
#ifndef RYM_MAX_ERRORS
#define RYM_MAX_ERRORS ((rt_size_t)20)
#endif
enum rym_stage
{
RYM_STAGE_NONE = 0,
@@ -105,6 +110,16 @@ struct rym_ctx
struct rt_semaphore sem;
rt_device_t dev;
/**
* @brief 适配 v5 iap 升级逻辑, 流程如下:
*
* 收到 EOT 后返回 ACT 'C';
* 收到一包空数据后返回 ACT, 正常结束 IAP
* 逻辑.
*
*/
rt_bool_t v5_iap_adapt;
};
/* recv a file on device dev with ymodem session ctx.

View File

@@ -38,6 +38,7 @@
#define RT_USING_MEMPOOL
#define RT_USING_SMALL_MEM
#define RT_USING_SMALL_MEM_AS_HEAP
#define RT_USING_MEMTRACE
#define RT_USING_HEAP
/* Kernel Device Object */
@@ -45,7 +46,7 @@
#define RT_USING_DEVICE
#define RT_USING_CONSOLE
#define RT_CONSOLEBUF_SIZE 256
#define RT_CONSOLE_DEVICE_NAME "uart4"
#define RT_CONSOLE_DEVICE_NAME "uart8"
#define RT_VER_NUM 0x50000
#define ARCH_ARM
#define RT_USING_CPU_FFS
@@ -170,9 +171,6 @@
/* u8g2: a monochrome graphic library */
/* PainterEngine: A cross-platform graphics application framework written in C language */
/* tools packages */
@@ -222,7 +220,7 @@
/* Arduino libraries */
/* Projects */
/* Projects and Demos */
/* Sensors */
@@ -247,6 +245,7 @@
/* Other */
/* Signal IO */
@@ -313,8 +312,12 @@
#define BSP_USING_CAPTURE2
#define BSP_USING_CAPTURE2_CH3
#define BSP_USING_CAPTURE2_CH4
#define BSP_USING_CAPTURE12
#define BSP_USING_CAPTURE12_CH1
#define BSP_USING_CAPTURE12_CH2
#define BSP_USING_ADC
#define BSP_USING_ADC1
#define BSP_USING_WDT
#define BSP_USING_ON_CHIP_FLASH
/* Board extended module Drivers */