10 Commits

Author SHA1 Message Date
0c72d22804 为参数配置保存预备一块 flash 扇区
Signed-off-by: a1012112796 <1012112796@qq.com>
2023-03-27 17:31:37 +08:00
e75971d084 调整 con 波特率为460800
Signed-off-by: a1012112796 <1012112796@qq.com>
2023-02-13 09:31:53 +08:00
a8e6be3cfe 修正 pwm 驱动
Signed-off-by: a1012112796 <1012112796@qq.com>
2023-02-13 08:48:46 +08:00
b2d3238dc2 定时器输入捕获驱动实现
Signed-off-by: a1012112796 <1012112796@qq.com>
2023-01-17 11:00:29 +08:00
9ebd4970a0 adc 驱动: 适配温度接口 & 逻辑小改
Signed-off-by: a1012112796 <1012112796@qq.com>
2023-01-14 10:36:14 +08:00
ba71d92b5b adc 驱动启用
Signed-off-by: a1012112796 <1012112796@qq.com>
2023-01-11 10:33:31 +08:00
e639054d89 启用 pwm 设备
Signed-off-by: a1012112796 <1012112796@qq.com>
2023-01-06 15:25:18 +08:00
34b4188c72 移除 shell 自动初始化
Signed-off-by: a1012112796 <1012112796@qq.com>
2023-01-03 14:26:39 +08:00
1ec5bc8ffd iap 完善 & 浮点数printf 适配
Signed-off-by: a1012112796 <1012112796@qq.com>
2023-01-03 13:16:29 +08:00
669e1f1e77 413 1m 波特率核算
Signed-off-by: a1012112796 <1012112796@qq.com>
2022-12-27 17:20:20 +08:00
33 changed files with 2830 additions and 829 deletions
+310 -27
View File
@@ -135,9 +135,9 @@ CONFIG_RT_USING_CAN=y
# CONFIG_RT_USING_I2C is not set
# CONFIG_RT_USING_PHY is not set
CONFIG_RT_USING_PIN=y
# CONFIG_RT_USING_ADC is not set
CONFIG_RT_USING_ADC=y
# CONFIG_RT_USING_DAC is not set
# CONFIG_RT_USING_PWM is not set
CONFIG_RT_USING_PWM=y
# CONFIG_RT_USING_MTD_NOR is not set
# CONFIG_RT_USING_MTD_NAND is not set
# CONFIG_RT_USING_PM is not set
@@ -150,7 +150,8 @@ CONFIG_RT_USING_WDT=y
# CONFIG_RT_USING_TOUCH is not set
# CONFIG_RT_USING_HWCRYPTO is not set
# CONFIG_RT_USING_PULSE_ENCODER is not set
# CONFIG_RT_USING_INPUT_CAPTURE is not set
CONFIG_RT_USING_INPUT_CAPTURE=y
CONFIG_RT_INPUT_CAPTURE_RB_SIZE=100
# CONFIG_RT_USING_WIFI is not set
#
@@ -220,7 +221,7 @@ CONFIG_ULOG_ASYNC_OUTPUT_THREAD_PRIORITY=30
#
# log format
#
# CONFIG_ULOG_OUTPUT_FLOAT is not set
CONFIG_ULOG_OUTPUT_FLOAT=y
CONFIG_ULOG_USING_COLOR=y
CONFIG_ULOG_OUTPUT_TIME=y
# CONFIG_ULOG_TIME_USING_TIMESTAMP is not set
@@ -322,6 +323,8 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
# CONFIG_PKG_USING_AGILE_FTP is not set
# CONFIG_PKG_USING_EMBEDDEDPROTO is not set
# CONFIG_PKG_USING_RT_LINK_HW is not set
# CONFIG_PKG_USING_RYANMQTT is not set
# CONFIG_PKG_USING_RYANW5500 is not set
# CONFIG_PKG_USING_LORA_PKT_FWD is not set
# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set
# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set
@@ -329,6 +332,7 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
# CONFIG_PKG_USING_SMALL_MODBUS is not set
# CONFIG_PKG_USING_NET_SERVER is not set
# CONFIG_PKG_USING_ZFTP is not set
# CONFIG_PKG_USING_WOL is not set
#
# security packages
@@ -420,7 +424,6 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
# CONFIG_PKG_USING_SEGGER_RTT is not set
# CONFIG_PKG_USING_RDB is not set
# CONFIG_PKG_USING_ULOG_EASYFLASH is not set
# CONFIG_PKG_USING_ULOG_FILE is not set
# CONFIG_PKG_USING_LOGMGR is not set
# CONFIG_PKG_USING_ADBD is not set
# CONFIG_PKG_USING_COREMARK is not set
@@ -454,7 +457,6 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
# CONFIG_PKG_USING_CBOX is not set
# CONFIG_PKG_USING_SNOWFLAKE is not set
# CONFIG_PKG_USING_HASH_MATCH is not set
# CONFIG_PKG_USING_FIRE_PID_CURVE is not set
# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
# CONFIG_PKG_USING_VOFA_PLUS is not set
@@ -467,7 +469,15 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
#
# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
# CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set
CONFIG_PKG_USING_RT_VSNPRINTF_FULL=y
CONFIG_PKG_RT_VSNPRINTF_FULL_PATH="/packages/system/enhanced-kservice/rt_vsnprintf_full"
# CONFIG_RT_VSNPRINTF_FULL_REPLACING_SPRINTF is not set
# CONFIG_RT_VSNPRINTF_FULL_REPLACING_SNPRINTF is not set
# CONFIG_RT_VSNPRINTF_FULL_REPLACING_PRINTF is not set
# CONFIG_RT_VSNPRINTF_FULL_REPLACING_VSPRINTF is not set
# CONFIG_RT_VSNPRINTF_FULL_REPLACING_VSNPRINTF is not set
CONFIG_PKG_USING_RT_VSNPRINTF_FULL_LATEST_VERSION=y
CONFIG_PKG_RT_VSNPRINTF_FULL_VER="latest"
#
# acceleration: Assembly language or algorithmic acceleration packages
@@ -527,19 +537,93 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
# CONFIG_PKG_USING_TFDB is not set
# CONFIG_PKG_USING_QPC is not set
# CONFIG_PKG_USING_AGILE_UPGRADE is not set
# CONFIG_PKG_USING_FLASH_BLOB is not set
#
# peripheral libraries and drivers
#
# CONFIG_PKG_USING_SENSORS_DRIVERS is not set
# CONFIG_PKG_USING_REALTEK_AMEBA is not set
#
# sensors drivers
#
# CONFIG_PKG_USING_LSM6DSM is not set
# CONFIG_PKG_USING_LSM6DSL is not set
# CONFIG_PKG_USING_LPS22HB is not set
# CONFIG_PKG_USING_HTS221 is not set
# CONFIG_PKG_USING_LSM303AGR is not set
# CONFIG_PKG_USING_BME280 is not set
# CONFIG_PKG_USING_BME680 is not set
# CONFIG_PKG_USING_BMA400 is not set
# CONFIG_PKG_USING_BMI160_BMX160 is not set
# CONFIG_PKG_USING_SPL0601 is not set
# CONFIG_PKG_USING_MS5805 is not set
# CONFIG_PKG_USING_DA270 is not set
# CONFIG_PKG_USING_DF220 is not set
# CONFIG_PKG_USING_HSHCAL001 is not set
# CONFIG_PKG_USING_BH1750 is not set
# CONFIG_PKG_USING_MPU6XXX is not set
# CONFIG_PKG_USING_AHT10 is not set
# CONFIG_PKG_USING_AP3216C is not set
# CONFIG_PKG_USING_TSL4531 is not set
# CONFIG_PKG_USING_DS18B20 is not set
# CONFIG_PKG_USING_DHT11 is not set
# CONFIG_PKG_USING_DHTXX is not set
# CONFIG_PKG_USING_GY271 is not set
# CONFIG_PKG_USING_GP2Y10 is not set
# CONFIG_PKG_USING_SGP30 is not set
# CONFIG_PKG_USING_HDC1000 is not set
# CONFIG_PKG_USING_BMP180 is not set
# CONFIG_PKG_USING_BMP280 is not set
# CONFIG_PKG_USING_SHTC1 is not set
# CONFIG_PKG_USING_BMI088 is not set
# CONFIG_PKG_USING_HMC5883 is not set
# CONFIG_PKG_USING_MAX6675 is not set
# CONFIG_PKG_USING_TMP1075 is not set
# CONFIG_PKG_USING_SR04 is not set
# CONFIG_PKG_USING_CCS811 is not set
# CONFIG_PKG_USING_PMSXX is not set
# CONFIG_PKG_USING_RT3020 is not set
# CONFIG_PKG_USING_MLX90632 is not set
# CONFIG_PKG_USING_MLX90393 is not set
# CONFIG_PKG_USING_MLX90392 is not set
# CONFIG_PKG_USING_MLX90397 is not set
# CONFIG_PKG_USING_MS5611 is not set
# CONFIG_PKG_USING_MAX31865 is not set
# CONFIG_PKG_USING_VL53L0X is not set
# CONFIG_PKG_USING_INA260 is not set
# CONFIG_PKG_USING_MAX30102 is not set
# CONFIG_PKG_USING_INA226 is not set
# CONFIG_PKG_USING_LIS2DH12 is not set
# CONFIG_PKG_USING_HS300X is not set
# CONFIG_PKG_USING_ZMOD4410 is not set
# CONFIG_PKG_USING_ISL29035 is not set
# CONFIG_PKG_USING_MMC3680KJ is not set
# CONFIG_PKG_USING_QMP6989 is not set
# CONFIG_PKG_USING_BALANCE is not set
# CONFIG_PKG_USING_SHT2X is not set
# CONFIG_PKG_USING_SHT3X is not set
# CONFIG_PKG_USING_AD7746 is not set
# CONFIG_PKG_USING_ADT74XX is not set
# CONFIG_PKG_USING_MAX17048 is not set
# CONFIG_PKG_USING_AS7341 is not set
# CONFIG_PKG_USING_CW2015 is not set
# CONFIG_PKG_USING_ICM20608 is not set
# CONFIG_PKG_USING_PAJ7620 is not set
#
# touch drivers
#
# CONFIG_PKG_USING_GT9147 is not set
# CONFIG_PKG_USING_GT1151 is not set
# CONFIG_PKG_USING_GT917S is not set
# CONFIG_PKG_USING_GT911 is not set
# CONFIG_PKG_USING_FT6206 is not set
# 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_REALTEK_AMEBA is not set
# CONFIG_PKG_USING_STM32_SDIO is not set
# CONFIG_PKG_USING_ESP_IDF is not set
# CONFIG_PKG_USING_ICM20608 is not set
# CONFIG_PKG_USING_BUTTON is not set
# CONFIG_PKG_USING_PCF8574 is not set
# CONFIG_PKG_USING_SX12XX is not set
@@ -562,12 +646,9 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
# CONFIG_PKG_USING_AGILE_LED is not set
# CONFIG_PKG_USING_AT24CXX is not set
# CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set
# CONFIG_PKG_USING_AD7746 is not set
# CONFIG_PKG_USING_PCA9685 is not set
# CONFIG_PKG_USING_I2C_TOOLS is not set
# CONFIG_PKG_USING_NRF24L01 is not set
# CONFIG_PKG_USING_TOUCH_DRIVERS is not set
# CONFIG_PKG_USING_MAX17048 is not set
# CONFIG_PKG_USING_RPLIDAR is not set
# CONFIG_PKG_USING_AS608 is not set
# CONFIG_PKG_USING_RC522 is not set
@@ -582,7 +663,6 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
# CONFIG_PKG_USING_CAN_YMODEM is not set
# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set
# CONFIG_PKG_USING_QLED is not set
# CONFIG_PKG_USING_PAJ7620 is not set
# CONFIG_PKG_USING_AGILE_CONSOLE is not set
# CONFIG_PKG_USING_LD3320 is not set
# CONFIG_PKG_USING_WK2124 is not set
@@ -613,10 +693,11 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
# 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_CW2015 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_FINGERPRINT is not set
#
# AI packages
@@ -631,6 +712,12 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
# CONFIG_PKG_USING_QUEST is not set
# CONFIG_PKG_USING_NAXOS is not set
#
# Signal Processing and Control Algorithm Packages
#
# CONFIG_PKG_USING_FIRE_PID_CURVE is not set
# CONFIG_PKG_USING_UKAL is not set
#
# miscellaneous packages
#
@@ -682,7 +769,6 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
# CONFIG_PKG_USING_VI is not set
# CONFIG_PKG_USING_KI is not set
# CONFIG_PKG_USING_ARMv7M_DWT is not set
# CONFIG_PKG_USING_UKAL is not set
# CONFIG_PKG_USING_CRCLIB is not set
# CONFIG_PKG_USING_LWGPS is not set
# CONFIG_PKG_USING_STATE_MACHINE is not set
@@ -693,27 +779,165 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
# CONFIG_PKG_USING_SLCAN2RTT is not set
# CONFIG_PKG_USING_SOEM is not set
# CONFIG_PKG_USING_QPARAM is not set
# CONFIG_PKG_USING_CorevMCU_CLI is not set
# CONFIG_PKG_USING_GET_IRQ_PRIORITY is not set
#
# Arduino libraries
#
# CONFIG_PKG_USING_RTDUINO is not set
#
# Projects
#
# 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
#
# Sensors
#
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BUSIO is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AHTX0 is not set
# CONFIG_PKG_USING_ARDUINO_DHT_SENSOR is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_BMP280 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_LIS3DHTR is not set
# CONFIG_PKG_USING_ARDUINO_SENSOR_DEVICE_DRIVERS is not set
# CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL375 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L0X is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L1X is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL6180X is not set
# CONFIG_PKG_USING_ADAFRUIT_MAX31855 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31865 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31856 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX6675 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90614 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS1 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AHTX0 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS0 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP280 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADT7410 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME680 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9808 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4728 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA219 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR390 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL345 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DHT is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9600 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM6DS is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO055 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX1704X is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMC56X3 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90393 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90395 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ICM20X is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DPS310 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTS221 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT4X is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT31 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL343 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME280 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS726X is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AMG88XX is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2320 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2315 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR329_LTR303 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085_UNIFIED is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183_UNIFIED is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP3XX is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MS8607 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3MDL is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90640 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMA8451 is not set
# CONFIG_PKG_USING_ADAFRUIT_MSA301 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL115A2 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X_RVC is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS2MDL is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303DLH_MAG is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LC709203F is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CAP1188 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CCS811 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_NAU7802 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS331 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS2X is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS35HW is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303_ACCEL is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3DH is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8591 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL3115A2 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPR121 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPRLS is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPU6050 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCT2075 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PM25AQI is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_EMC2101 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXAS21002C is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SCD30 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXOS8700 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HMC5883_UNIFIED is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP30 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP006 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TLA202X is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCS34725 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI7021 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI1145 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP40 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHTC3 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HDC1000 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU21DF is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS7341 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU31D is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSORLAB is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA260 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP007_LIBRARY is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_L3GD20 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP117 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSC2007 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2561 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2591_LIBRARY is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VCNL4040 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6070 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6075 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML7700 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_LIS3DHTR is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_DHT is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_ADXL335 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_ADXL345 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_BME280 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_BMP280 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_H3LIS331DL is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_MMA7660 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_TSL2561 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_PAJ7620 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_VL53L0X is not set
# CONFIG_PKG_USING_SEEED_ITG3200 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_SHT31 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_HP20X is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_DRV2605L is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_BBM150 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_HMC5883L is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_LSM303DLH is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_TCS3414CS is not set
# CONFIG_PKG_USING_SEEED_MP503 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_BMP085 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_HIGHTEMP is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_VEML6070 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_SI1145 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_SHT35 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_AT42QT1070 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_LSM6DS3 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_HDC1000 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_HM3301 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_MCP9600 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_LTC2941 is not set
# CONFIG_PKG_USING_ARDUINO_SEEED_LDC1612 is not set
#
# Display
#
# CONFIG_PKG_USING_ARDUINO_U8G2 is not set
# CONFIG_PKG_USING_SEEED_TM1637 is not set
#
# Timing
@@ -721,10 +945,47 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
# CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set
#
# Projects
# Data Processing
#
# CONFIG_PKG_USING_ARDUINO_KALMANFILTER is not set
# CONFIG_PKG_USING_ARDUINO_ARDUINOJSON is not set
#
# Data Storage
#
#
# Communication
#
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PN532 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI4713 is not set
#
# Device Control
#
# 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
#
# Other
#
#
# Signal IO
#
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BUSIO is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCA8418 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP23017 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADS1X15 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AW9523 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP3008 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4725 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BD3491FS is not set
#
# Uncategorized
#
# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set
# CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set
CONFIG_SOC_FAMILY_STM32=y
CONFIG_SOC_SERIES_STM32F4=y
@@ -780,8 +1041,30 @@ CONFIG_BSP_USING_CAN3=y
# CONFIG_BSP_USING_SPI is not set
# CONFIG_BSP_USING_I2C1 is not set
# CONFIG_BSP_USING_TIM is not set
# CONFIG_BSP_USING_PWM is not set
# CONFIG_BSP_USING_ADC is not set
CONFIG_BSP_USING_PWM=y
CONFIG_BSP_USING_PWM3=y
CONFIG_BSP_USING_PWM3_CH1=y
CONFIG_BSP_USING_PWM3_CH2=y
CONFIG_BSP_USING_PWM3_CH3=y
CONFIG_BSP_USING_PWM3_CH4=y
CONFIG_BSP_USING_PWM4=y
CONFIG_BSP_USING_PWM4_CH1=y
CONFIG_BSP_USING_PWM4_CH2=y
CONFIG_BSP_USING_PWM4_CH3=y
CONFIG_BSP_USING_PWM4_CH4=y
CONFIG_BSP_USING_CAPTURE=y
CONFIG_BSP_USING_CAPTURE1=y
CONFIG_BSP_USING_CAPTURE1_CH1=y
CONFIG_BSP_USING_CAPTURE1_CH2=y
# CONFIG_BSP_USING_CAPTURE1_CH3 is not set
# CONFIG_BSP_USING_CAPTURE1_CH4 is not set
CONFIG_BSP_USING_CAPTURE2=y
# CONFIG_BSP_USING_CAPTURE2_CH1 is not set
# CONFIG_BSP_USING_CAPTURE2_CH2 is not set
CONFIG_BSP_USING_CAPTURE2_CH3=y
CONFIG_BSP_USING_CAPTURE2_CH4=y
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_ON_CHIP_FLASH=y
+1 -1
View File
@@ -13,7 +13,6 @@
build
Debug
documentation/html
packages/
*~
*.o
*.obj
@@ -40,3 +39,4 @@ RTE/
settings/
*.uvguix*
cconfig.h
packages/packages.dbsqlite
+37 -47
View File
@@ -74,51 +74,49 @@ Mcu.Pin24=PE8
Mcu.Pin25=PE9
Mcu.Pin26=PE11
Mcu.Pin27=PE12
Mcu.Pin28=PE13
Mcu.Pin29=PE14
Mcu.Pin28=PB10
Mcu.Pin29=PB12
Mcu.Pin3=PE5
Mcu.Pin30=PB10
Mcu.Pin31=PB12
Mcu.Pin32=PB13
Mcu.Pin33=PB14
Mcu.Pin34=PB15
Mcu.Pin35=PD14
Mcu.Pin36=PD15
Mcu.Pin37=PC6
Mcu.Pin38=PC7
Mcu.Pin39=PC9
Mcu.Pin30=PB13
Mcu.Pin31=PB14
Mcu.Pin32=PB15
Mcu.Pin33=PD14
Mcu.Pin34=PD15
Mcu.Pin35=PC6
Mcu.Pin36=PC7
Mcu.Pin37=PC9
Mcu.Pin38=PA8
Mcu.Pin39=PA9
Mcu.Pin4=PE6
Mcu.Pin40=PA8
Mcu.Pin41=PA9
Mcu.Pin42=PA10
Mcu.Pin43=PA11
Mcu.Pin44=PA12
Mcu.Pin45=PA13
Mcu.Pin46=PA14
Mcu.Pin47=PC10
Mcu.Pin48=PC11
Mcu.Pin49=PC12
Mcu.Pin40=PA10
Mcu.Pin41=PA11
Mcu.Pin42=PA12
Mcu.Pin43=PA13
Mcu.Pin44=PA14
Mcu.Pin45=PC10
Mcu.Pin46=PC11
Mcu.Pin47=PC12
Mcu.Pin48=PD2
Mcu.Pin49=PD5
Mcu.Pin5=PH0 - OSC_IN
Mcu.Pin50=PD2
Mcu.Pin51=PD5
Mcu.Pin52=PD6
Mcu.Pin53=PB3
Mcu.Pin54=PB4
Mcu.Pin55=PB6
Mcu.Pin56=PB7
Mcu.Pin57=PB8
Mcu.Pin58=PB9
Mcu.Pin59=PE0
Mcu.Pin50=PD6
Mcu.Pin51=PB3
Mcu.Pin52=PB4
Mcu.Pin53=PB6
Mcu.Pin54=PB7
Mcu.Pin55=PB8
Mcu.Pin56=PB9
Mcu.Pin57=PE0
Mcu.Pin58=PE1
Mcu.Pin59=VP_SYS_VS_Systick
Mcu.Pin6=PH1 - OSC_OUT
Mcu.Pin60=PE1
Mcu.Pin61=VP_SYS_VS_Systick
Mcu.Pin62=VP_TIM1_VS_ClockSourceINT
Mcu.Pin63=VP_TIM3_VS_ClockSourceINT
Mcu.Pin64=VP_TIM4_VS_ClockSourceINT
Mcu.Pin60=VP_TIM1_VS_ClockSourceINT
Mcu.Pin61=VP_TIM3_VS_ClockSourceINT
Mcu.Pin62=VP_TIM4_VS_ClockSourceINT
Mcu.Pin7=PC0
Mcu.Pin8=PC1
Mcu.Pin9=PC2
Mcu.PinsNb=65
Mcu.PinsNb=63
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F413VGTx
@@ -224,8 +222,6 @@ PE1.Signal=UART8_TX
PE11.Signal=S_TIM1_CH2
PE12.Mode=Full_Duplex_Master
PE12.Signal=SPI4_SCK
PE13.Signal=S_TIM1_CH3
PE14.Signal=S_TIM1_CH4
PE2.Mode=Asynchronous
PE2.Signal=UART10_RX
PE3.Mode=Asynchronous
@@ -338,10 +334,6 @@ SH.S_TIM1_CH1.0=TIM1_CH1,Input_Capture1_from_TI1
SH.S_TIM1_CH1.ConfNb=1
SH.S_TIM1_CH2.0=TIM1_CH2,Input_Capture2_from_TI2
SH.S_TIM1_CH2.ConfNb=1
SH.S_TIM1_CH3.0=TIM1_CH3,Input_Capture3_from_TI3
SH.S_TIM1_CH3.ConfNb=1
SH.S_TIM1_CH4.0=TIM1_CH4,Input_Capture4_from_TI4
SH.S_TIM1_CH4.ConfNb=1
SH.S_TIM2_CH3.0=TIM2_CH3,Input_Capture3_from_TI3
SH.S_TIM2_CH3.ConfNb=1
SH.S_TIM2_CH4.0=TIM2_CH4,Input_Capture4_from_TI4
@@ -375,9 +367,7 @@ SPI4.VirtualNSS=VM_NSSHARD
SPI4.VirtualType=VM_MASTER
TIM1.Channel-Input_Capture1_from_TI1=TIM_CHANNEL_1
TIM1.Channel-Input_Capture2_from_TI2=TIM_CHANNEL_2
TIM1.Channel-Input_Capture3_from_TI3=TIM_CHANNEL_3
TIM1.Channel-Input_Capture4_from_TI4=TIM_CHANNEL_4
TIM1.IPParameters=Channel-Input_Capture1_from_TI1,Channel-Input_Capture2_from_TI2,Channel-Input_Capture3_from_TI3,Channel-Input_Capture4_from_TI4
TIM1.IPParameters=Channel-Input_Capture1_from_TI1,Channel-Input_Capture2_from_TI2
TIM12.Channel-Input_Capture1_from_TI1=TIM_CHANNEL_1
TIM12.Channel-Input_Capture2_from_TI2=TIM_CHANNEL_2
TIM12.IPParameters=Channel-Input_Capture1_from_TI1,Channel-Input_Capture2_from_TI2
+1 -1
View File
@@ -7,7 +7,7 @@
******************************************************************************
* @attention
*
* Copyright (c) 2022 STMicroelectronics.
* Copyright (c) 2023 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
+1 -1
View File
@@ -6,7 +6,7 @@
******************************************************************************
* @attention
*
* Copyright (c) 2022 STMicroelectronics.
* Copyright (c) 2023 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
+5 -9
View File
@@ -7,7 +7,7 @@
******************************************************************************
* @attention
*
* Copyright (c) 2022 STMicroelectronics.
* Copyright (c) 2023 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
@@ -525,12 +525,10 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
/**TIM1 GPIO Configuration
PE9 ------> TIM1_CH1
PE11 ------> TIM1_CH2
PE13 ------> TIM1_CH3
PE14 ------> TIM1_CH4
*/
GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_11|GPIO_PIN_13|GPIO_PIN_14;
GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_11;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF1_TIM1;
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
@@ -588,7 +586,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_NOPULL;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF1_TIM2;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
@@ -703,10 +701,8 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
/**TIM1 GPIO Configuration
PE9 ------> TIM1_CH1
PE11 ------> TIM1_CH2
PE13 ------> TIM1_CH3
PE14 ------> TIM1_CH4
*/
HAL_GPIO_DeInit(GPIOE, GPIO_PIN_9|GPIO_PIN_11|GPIO_PIN_13|GPIO_PIN_14);
HAL_GPIO_DeInit(GPIOE, GPIO_PIN_9|GPIO_PIN_11);
/* USER CODE BEGIN TIM1_MspDeInit 1 */
+1 -1
View File
@@ -6,7 +6,7 @@
******************************************************************************
* @attention
*
* Copyright (c) 2022 STMicroelectronics.
* Copyright (c) 2023 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
+77 -6
View File
@@ -194,7 +194,7 @@ menu "On-chip Peripheral Drivers"
depends on BSP_USING_SPI2
select BSP_SPI2_TX_USING_DMA
default n
endif
menuconfig BSP_USING_I2C1
@@ -238,14 +238,85 @@ menu "On-chip Peripheral Drivers"
default n
select RT_USING_PWM
if BSP_USING_PWM
menuconfig BSP_USING_PWM2
bool "Enable timer2 output PWM"
menuconfig BSP_USING_PWM3
bool "Enable timer3 output PWM"
default n
if BSP_USING_PWM2
config BSP_USING_PWM2_CH4
bool "Enable PWM2 channel4"
if BSP_USING_PWM3
config BSP_USING_PWM3_CH1
bool "Enable PWM3 channel1"
default n
config BSP_USING_PWM3_CH2
bool "Enable PWM3 channel2"
default n
config BSP_USING_PWM3_CH3
bool "Enable PWM3 channel3"
default n
config BSP_USING_PWM3_CH4
bool "Enable PWM3 channel4"
default n
endif
menuconfig BSP_USING_PWM4
bool "Enable timer4 output PWM"
default n
if BSP_USING_PWM4
config BSP_USING_PWM4_CH1
bool "Enable PWM4 channel1"
default n
config BSP_USING_PWM4_CH2
bool "Enable PWM4 channel2"
default n
config BSP_USING_PWM4_CH3
bool "Enable PWM4 channel3"
default n
config BSP_USING_PWM4_CH4
bool "Enable PWM4 channel4"
default n
endif
endif
menuconfig BSP_USING_CAPTURE
bool "Enable input capture"
default n
select RT_USING_INPUT_CAPTURE
if BSP_USING_CAPTURE
menuconfig BSP_USING_CAPTURE1
bool "Enable capture1"
default n
if BSP_USING_CAPTURE1
config BSP_USING_CAPTURE1_CH1
bool "Enable capture1 channel1"
default n
config BSP_USING_CAPTURE1_CH2
bool "Enable capture1 channel2"
default n
config BSP_USING_CAPTURE1_CH3
bool "Enable capture1 channel3"
default n
config BSP_USING_CAPTURE1_CH4
bool "Enable capture1 channel4"
default n
endif
menuconfig BSP_USING_CAPTURE2
bool "Enable capture2"
default n
if BSP_USING_CAPTURE2
config BSP_USING_CAPTURE2_CH1
bool "Enable capture2 channel1"
default n
config BSP_USING_CAPTURE2_CH2
bool "Enable capture2 channel2"
default n
config BSP_USING_CAPTURE2_CH3
bool "Enable capture2 channel3"
default n
config BSP_USING_CAPTURE2_CH4
bool "Enable capture2 channel4"
default n
endif
endif
menuconfig BSP_USING_ADC
+9
View File
@@ -98,3 +98,12 @@ INIT_PREV_EXPORT(ulog_console_backend_init);
extern int rt_hw_can_init(void);
INIT_BOARD_EXPORT(rt_hw_can_init);
extern int stm32_pwm_init(void);
INIT_DEVICE_EXPORT(stm32_pwm_init);
extern int stm32_adc_init(void);
INIT_BOARD_EXPORT(stm32_adc_init);
extern int stm32_capture_init(void);
INIT_APP_EXPORT(stm32_capture_init);
+7 -3
View File
@@ -22,10 +22,12 @@
#define STM32_FLASH_START_ADRESS_64K (STM32_FLASH_START_ADRESS_16K + FLASH_SIZE_GRANULARITY_16K)
#define STM32_FLASH_START_ADRESS_128K (STM32_FLASH_START_ADRESS_64K + FLASH_SIZE_GRANULARITY_64K)
#define FLASH_SIZE_APP (5 * 128 * 1024)
#define FLASH_SIZE_APP (4 * 128 * 1024)
#define FLASH_SIZE_PARAM (128 * 1024)
#define FLASH_SIZE_LOG (2 * 128 * 1024)
#define FLASH_OFFSET_LOG (FLASH_SIZE_APP)
#define FLASH_OFFSET_PARAM (FLASH_SIZE_APP)
#define FLASH_OFFSET_LOG (FLASH_SIZE_APP + FLASH_SIZE_PARAM)
extern const struct fal_flash_dev stm32_onchip_flash_16k;
extern const struct fal_flash_dev stm32_onchip_flash_64k;
@@ -46,7 +48,8 @@ extern const struct fal_flash_dev stm32_onchip_flash_128k;
* @brief flash 分配:
* section addr size
* 0 - 4 0x08000000 128kb bootloader
* 5 - 9 0x08020000 640kb app
* 5 - 8 0x08020000 512KB app
* 9 0x080A0000 128KB param
* 10 - 11 0x080C0000 256kb ulog
*
*/
@@ -54,6 +57,7 @@ extern const struct fal_flash_dev stm32_onchip_flash_128k;
{ \
{FAL_PART_MAGIC_WROD, "boot", "onchip_flash_64k", 0 , FLASH_SIZE_GRANULARITY_16K + FLASH_SIZE_GRANULARITY_64K , 0}, \
{FAL_PART_MAGIC_WROD, "app", "onchip_flash_128k", 0 , FLASH_SIZE_APP, 0}, \
{FAL_PART_MAGIC_WROD, "param", "onchip_flash_128k", FLASH_OFFSET_PARAM , FLASH_SIZE_PARAM, 0}, \
{FAL_PART_MAGIC_WROD, "ulog", "onchip_flash_128k", FLASH_OFFSET_LOG , FLASH_SIZE_LOG, 0}, \
}
+89 -9
View File
@@ -116,10 +116,60 @@ rt_err_t port_rx_ind(rt_device_t dev, rt_size_t size)
#define RT_BUF_SIZE (1024)
/*
* 固件格式:
*
* 作用 & 说明
* - 记录固件对应硬件 & 版本信息
* - 简便起见,不包含校验信息
*
* index len desc
* 0 4 'XYFC'
* 4 4 固件信息长度
* 8 N 固件信息 ('类型'-'版本')
* 8+N M 固件数据
*/
static const char FIXED_HEAD[] = {'X', 'Y', 'F', 'C'};
extern const char IAP_BIN_PREFIX[];
static int _check_head(const rt_uint8_t *buf, rt_size_t len)
{
if (len < 8)
{
return -1;
}
for (int i = 0; i < sizeof(FIXED_HEAD); i++)
{
if (FIXED_HEAD[i] != buf[i])
{
return -2;
}
}
rt_uint32_t real = *((const rt_uint32_t *)&buf[4]);
rt_uint32_t want = rt_strlen(IAP_BIN_PREFIX);
if (real <= want || len - 8 < real)
{
return -3;
}
for(int i = 0; i < want; i++)
{
if (IAP_BIN_PREFIX[i] != buf[8 + i])
{
return -4;
}
}
return real + 8;
}
struct custom_ctx {
struct rym_ctx parent;
int32_t file_size;
int32_t w_index;
int32_t recevied_head;
const struct fal_partition *flash;
rt_uint8_t ck_buffer[RT_BUF_SIZE];
};
@@ -167,11 +217,8 @@ static enum rym_code _rym_recv_begin(
return RYM_CODE_CAN;
}
if (fal_partition_erase(cctx->flash, 0, cctx->file_size) < 0)
{
return RYM_CODE_CAN;
}
cctx->w_index = 0;
cctx->recevied_head = 0;
return RYM_CODE_ACK;
}
@@ -185,6 +232,23 @@ static enum rym_code _rym_recv_data(
RT_ASSERT(cctx);
RT_ASSERT(len <= RT_BUF_SIZE);
int offset = 0;
if (cctx->recevied_head == 0)
{
offset = _check_head(buf, len);
if (offset < 0)
{
return RYM_ERR_FILE;
}
if (fal_partition_erase(cctx->flash, 0, cctx->file_size) < 0)
{
return RYM_CODE_CAN;
}
cctx->recevied_head = 1;
}
if (cctx->w_index >= cctx->file_size)
{
return RYM_CODE_ACK;
@@ -195,22 +259,22 @@ static enum rym_code _rym_recv_data(
len = cctx->file_size - cctx->w_index;
}
if (fal_partition_write(cctx->flash, cctx->w_index, buf, len) <= 0)
if (fal_partition_write(cctx->flash, cctx->w_index, &buf[offset], len - offset) <= 0)
{
return RYM_CODE_CAN;
}
if (fal_partition_read(cctx->flash, cctx->w_index, cctx->ck_buffer, len) <= 0)
if (fal_partition_read(cctx->flash, cctx->w_index, cctx->ck_buffer, len - offset) <= 0)
{
return RYM_CODE_CAN;
}
for (int i = 0; i < len; i++)
for (int i = 0; i < len - offset; i++)
{
if (cctx->ck_buffer[i] != buf[i])
if (cctx->ck_buffer[i] != buf[i + offset])
return RYM_CODE_CAN;
}
cctx->w_index += len;
cctx->w_index += len - offset;
return RYM_CODE_ACK;
}
@@ -309,6 +373,8 @@ int iap_main_entry(void)
return _iap_entry(RT_TRUE);
}
#include "shell.h"
static int _iap_entry(rt_bool_t is_boot)
{
if (IapAppAddr && is_boot)
@@ -316,6 +382,11 @@ static int _iap_entry(rt_bool_t is_boot)
return 0;
}
if ((!IapAppAddr) && is_boot)
{
finsh_set_prompt("msh (IAP)");
}
rt_err_t err = RT_EOK;
struct custom_ctx *ctx = RT_NULL;
rt_device_t console = rt_console_get_device();
@@ -336,6 +407,10 @@ static int _iap_entry(rt_bool_t is_boot)
ports[i] = rt_device_find(name);
RT_ASSERT(ports[i]);
struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT;
config.baud_rate = BAUD_RATE_460800;
rt_device_control(ports[i], RT_DEVICE_CTRL_CONFIG, &config);
rt_device_set_rx_indicate(ports[i], port_rx_ind);
rt_device_open(ports[i], RT_DEVICE_OFLAG_RDWR | RT_DEVICE_FLAG_INT_RX);
}
@@ -347,6 +422,11 @@ static int _iap_entry(rt_bool_t is_boot)
odev_rx_ind = ports[0]->rx_indicate;
rt_device_set_rx_indicate(ports[0], port_rx_ind);
struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT;
config.baud_rate = BAUD_RATE_460800;
rt_device_control(ports[0], RT_DEVICE_CTRL_CONFIG, &config);
rt_device_open(ports[0], RT_DEVICE_OFLAG_RDWR | RT_DEVICE_FLAG_INT_RX);
}
+3
View File
@@ -105,6 +105,9 @@ if GetDepend(['BSP_USING_USBD']):
if GetDepend(['BSP_USING_PULSE_ENCODER']):
src += ['drv_pulse_encoder.c']
if GetDepend(['BSP_USING_CAPTURE']):
src += ['drv_inputcapture.c']
if GetDepend(['BSP_USING_USBH']):
src += ['drv_usbh.c']
+12 -33
View File
@@ -98,7 +98,7 @@ static rt_uint8_t stm32_adc_get_resolution(struct rt_adc_device *device)
static rt_uint32_t stm32_adc_get_channel(rt_uint32_t channel)
{
rt_uint32_t stm32_channel = 0;
rt_uint32_t stm32_channel = RT_UINT32_MAX;
switch (channel)
{
@@ -167,6 +167,11 @@ static rt_uint32_t stm32_adc_get_channel(rt_uint32_t channel)
case 19:
stm32_channel = ADC_CHANNEL_19;
break;
#endif
#ifdef ADC_CHANNEL_TEMPSENSOR
case 32:
stm32_channel = ADC_CHANNEL_TEMPSENSOR;
break;
#endif
}
@@ -191,37 +196,11 @@ static rt_err_t stm32_adc_get_value(struct rt_adc_device *device, rt_uint32_t ch
rt_memset(&ADC_ChanConf, 0, sizeof(ADC_ChanConf));
#ifndef ADC_CHANNEL_16
if (channel == 16)
/* set stm32 ADC channel */
ADC_ChanConf.Channel = stm32_adc_get_channel(channel);
if (ADC_ChanConf.Channel == RT_UINT32_MAX)
{
LOG_E("ADC channel must not be 16.");
return -RT_ERROR;
}
#endif
/* ADC channel number is up to 17 */
#if !defined(ADC_CHANNEL_18)
if (channel <= 17)
/* ADC channel number is up to 19 */
#elif defined(ADC_CHANNEL_19)
if (channel <= 19)
/* ADC channel number is up to 18 */
#else
if (channel <= 18)
#endif
{
/* set stm32 ADC channel */
ADC_ChanConf.Channel = stm32_adc_get_channel(channel);
}
else
{
#if !defined(ADC_CHANNEL_18)
LOG_E("ADC channel must be between 0 and 17.");
#elif defined(ADC_CHANNEL_19)
LOG_E("ADC channel must be between 0 and 19.");
#else
LOG_E("ADC channel must be between 0 and 18.");
#endif
LOG_E("ADC channel%d isn't exist", channel);
return -RT_ERROR;
}
@@ -297,7 +276,7 @@ static const struct rt_adc_ops stm_adc_ops =
.get_vref = stm32_adc_get_vref,
};
static int stm32_adc_init(void)
int stm32_adc_init(void)
{
int result = RT_EOK;
/* save adc name */
@@ -349,6 +328,6 @@ static int stm32_adc_init(void)
return result;
}
INIT_BOARD_EXPORT(stm32_adc_init);
// INIT_BOARD_EXPORT(stm32_adc_init);
#endif /* BSP_USING_ADC */
+1 -1
View File
@@ -57,7 +57,7 @@ static const struct stm32_baud_rate_tab can_baud_rate_tab[] =
#ifdef BSP_USING_CAN168M
{CAN1MBaud, (CAN_SJW_1TQ | CAN_BS1_3TQ | CAN_BS2_3TQ | 6)},
#else
{CAN1MBaud, (CAN_SJW_2TQ | CAN_BS1_9TQ | CAN_BS2_5TQ | 3)},
{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)},
+6
View File
@@ -197,6 +197,12 @@ void rt_hw_board_init(void)
rt_hw_usart_init();
#endif
struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT;
config.baud_rate = BAUD_RATE_460800;
rt_device_t dev = rt_device_find(RT_CONSOLE_DEVICE_NAME);
RT_ASSERT(dev);
rt_device_control(dev, RT_DEVICE_CTRL_CONFIG, &config);
/* Set the shell console output device */
#if defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE)
rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
+605
View File
@@ -0,0 +1,605 @@
/*
* Copyright (c) 2006-2022, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
*/
#include <board.h>
#ifdef BSP_USING_CAPTURE
#include "drv_config.h"
#define CAPTURE1_CONFIG \
{ \
.timer.Instance = TIM1, \
.iqrn = TIM1_CC_IRQn, \
.timerx = 1, \
.advanced = RT_TRUE, \
}
#define CAPTURE2_CONFIG \
{ \
.timer.Instance = TIM2, \
.iqrn = TIM2_IRQn, \
.timerx = 2, \
}
#define LOG_TAG "drv.tcap"
#include <drv_log.h>
#define MAX_PERIOD 65535
#define MAX_PULSE 1000
typedef enum {
POLARITY_BOTHEDGE,
POLARITY_RISING,
POLARITY_FALLING,
}trigger_polarity;
struct pulse_data
{
rt_uint32_t last_overflow;
rt_uint32_t last_cnt;
trigger_polarity polarity;
};
struct stm32_capture_device;
struct stm32_capture
{
TIM_HandleTypeDef timer;
IRQn_Type iqrn;
rt_uint8_t timerx;
rt_uint8_t advanced;
rt_uint8_t inited;
rt_uint32_t tim_overflow;
struct stm32_capture_device *channels[4];
};
enum
{
#ifdef BSP_USING_CAPTURE1
CAPTURE1_INDEX,
#endif
#ifdef BSP_USING_CAPTURE2
CAPTURE2_INDEX,
#endif
#ifdef BSP_USING_CAPTURE3
CAPTURE3_INDEX,
#endif
#ifdef BSP_USING_CAPTURE4
CAPTURE4_INDEX,
#endif
#ifdef BSP_USING_CAPTURE5
CAPTURE5_INDEX,
#endif
#ifdef BSP_USING_CAPTURE6
CAPTURE6_INDEX,
#endif
#ifdef BSP_USING_CAPTURE7
CAPTURE7_INDEX,
#endif
#ifdef BSP_USING_CAPTURE8
CAPTURE8_INDEX,
#endif
#ifdef BSP_USING_CAPTURE9
CAPTURE9_INDEX,
#endif
#ifdef BSP_USING_CAPTURE10
CAPTURE10_INDEX,
#endif
};
static struct stm32_capture stm32_capture_obj[] =
{
#ifdef BSP_USING_CAPTURE1
CAPTURE1_CONFIG,
#endif
#ifdef BSP_USING_CAPTURE2
CAPTURE2_CONFIG,
#endif
#ifdef BSP_USING_CAPTURE3
CAPTURE3_CONFIG,
#endif
#ifdef BSP_USING_CAPTURE4
CAPTURE4_CONFIG,
#endif
#ifdef BSP_USING_CAPTURE5
CAPTURE5_CONFIG,
#endif
#ifdef BSP_USING_CAPTURE6
CAPTURE6_CONFIG,
#endif
#ifdef BSP_USING_CAPTURE7
CAPTURE7_CONFIG,
#endif
#ifdef BSP_USING_CAPTURE8
CAPTURE8_CONFIG,
#endif
#ifdef BSP_USING_CAPTURE9
CAPTURE9_CONFIG,
#endif
#ifdef BSP_USING_CAPTURE10
CAPTURE10_CONFIG,
#endif
};
struct stm32_capture_device
{
struct rt_inputcapture_device parent;
struct stm32_capture *timer;
rt_uint8_t ch;
rt_uint8_t opend;
struct pulse_data data;
rt_uint32_t pulsewidth_us;
};
static struct stm32_capture_device stm32_capture_devices[] =
{
#ifdef BSP_USING_CAPTURE1_CH1
{{0}, &stm32_capture_obj[CAPTURE1_INDEX], 1, {0}},
#endif
#ifdef BSP_USING_CAPTURE1_CH2
{{0}, &stm32_capture_obj[CAPTURE1_INDEX], 2, {0}},
#endif
#ifdef BSP_USING_CAPTURE1_CH3
{{0}, &stm32_capture_obj[CAPTURE1_INDEX], 3, {0}},
#endif
#ifdef BSP_USING_CAPTURE1_CH4
{{0}, &stm32_capture_obj[CAPTURE1_INDEX], 4, {0}},
#endif
#ifdef BSP_USING_CAPTURE2_CH1
{{0}, &stm32_capture_obj[CAPTURE2_INDEX], 1, {0}},
#endif
#ifdef BSP_USING_CAPTURE2_CH2
{{0}, &stm32_capture_obj[CAPTURE2_INDEX], 2, {0}},
#endif
#ifdef BSP_USING_CAPTURE2_CH3
{{0}, &stm32_capture_obj[CAPTURE2_INDEX], 3, {0}},
#endif
#ifdef BSP_USING_CAPTURE2_CH4
{{0}, &stm32_capture_obj[CAPTURE2_INDEX], 4, {0}},
#endif
#ifdef BSP_USING_CAPTURE3_CH1
{{0}, &stm32_capture_obj[CAPTURE3_INDEX], 1, {0}},
#endif
#ifdef BSP_USING_CAPTURE3_CH2
{{0}, &stm32_capture_obj[CAPTURE3_INDEX], 2, {0}},
#endif
#ifdef BSP_USING_CAPTURE3_CH3
{{0}, &stm32_capture_obj[CAPTURE3_INDEX], 3, {0}},
#endif
#ifdef BSP_USING_CAPTURE3_CH4
{{0}, &stm32_capture_obj[CAPTURE3_INDEX], 4, {0}},
#endif
#ifdef BSP_USING_CAPTURE4_CH1
{{0}, &stm32_capture_obj[CAPTURE4_INDEX], 1, {0}},
#endif
#ifdef BSP_USING_CAPTURE4_CH2
{{0}, &stm32_capture_obj[CAPTURE4_INDEX], 2, {0}},
#endif
#ifdef BSP_USING_CAPTURE4_CH3
{{0}, &stm32_capture_obj[CAPTURE4_INDEX], 3, {0}},
#endif
#ifdef BSP_USING_CAPTURE4_CH4
{{0}, &stm32_capture_obj[CAPTURE4_INDEX], 4, {0}},
#endif
#ifdef BSP_USING_CAPTURE5_CH1
{{0}, &stm32_capture_obj[CAPTURE5_INDEX], 1, {0}},
#endif
#ifdef BSP_USING_CAPTURE5_CH2
{{0}, &stm32_capture_obj[CAPTURE5_INDEX], 2, {0}},
#endif
#ifdef BSP_USING_CAPTURE5_CH3
{{0}, &stm32_capture_obj[CAPTURE5_INDEX], 3, {0}},
#endif
#ifdef BSP_USING_CAPTURE5_CH4
{{0}, &stm32_capture_obj[CAPTURE5_INDEX], 4, {0}},
#endif
#ifdef BSP_USING_CAPTURE6_CH1
{{0}, &stm32_capture_obj[CAPTURE6_INDEX], 1, {0}},
#endif
#ifdef BSP_USING_CAPTURE6_CH2
{{0}, &stm32_capture_obj[CAPTURE6_INDEX], 2, {0}},
#endif
#ifdef BSP_USING_CAPTURE6_CH3
{{0}, &stm32_capture_obj[CAPTURE6_INDEX], 3, {0}},
#endif
#ifdef BSP_USING_CAPTURE6_CH4
{{0}, &stm32_capture_obj[CAPTURE6_INDEX], 4, {0}},
#endif
#ifdef BSP_USING_CAPTURE7_CH1
{{0}, &stm32_capture_obj[CAPTURE7_INDEX], 1, {0}},
#endif
#ifdef BSP_USING_CAPTURE7_CH2
{{0}, &stm32_capture_obj[CAPTURE7_INDEX], 2, {0}},
#endif
#ifdef BSP_USING_CAPTURE7_CH3
{{0}, &stm32_capture_obj[CAPTURE7_INDEX], 3, {0}},
#endif
#ifdef BSP_USING_CAPTURE7_CH4
{{0}, &stm32_capture_obj[CAPTURE7_INDEX], 4, {0}},
#endif
#ifdef BSP_USING_CAPTURE8_CH1
{{0}, &stm32_capture_obj[CAPTURE8_INDEX], 1, {0}},
#endif
#ifdef BSP_USING_CAPTURE8_CH2
{{0}, &stm32_capture_obj[CAPTURE8_INDEX], 2, {0}},
#endif
#ifdef BSP_USING_CAPTURE8_CH3
{{0}, &stm32_capture_obj[CAPTURE8_INDEX], 3, {0}},
#endif
#ifdef BSP_USING_CAPTURE8_CH4
{{0}, &stm32_capture_obj[CAPTURE8_INDEX], 4, {0}},
#endif
#ifdef BSP_USING_CAPTURE9_CH1
{{0}, &stm32_capture_obj[CAPTURE9_INDEX], 1, {0}},
#endif
#ifdef BSP_USING_CAPTURE9_CH2
{{0}, &stm32_capture_obj[CAPTURE9_INDEX], 2, {0}},
#endif
#ifdef BSP_USING_CAPTURE9_CH3
{{0}, &stm32_capture_obj[CAPTURE9_INDEX], 3, {0}},
#endif
#ifdef BSP_USING_CAPTURE9_CH4
{{0}, &stm32_capture_obj[CAPTURE9_INDEX], 4, {0}},
#endif
#ifdef BSP_USING_CAPTURE10_CH1
{{0}, &stm32_capture_obj[CAPTURE10_INDEX], 1, {0}},
#endif
#ifdef BSP_USING_CAPTURE10_CH2
{{0}, &stm32_capture_obj[CAPTURE10_INDEX], 2, {0}},
#endif
#ifdef BSP_USING_CAPTURE10_CH3
{{0}, &stm32_capture_obj[CAPTURE10_INDEX], 3, {0}},
#endif
#ifdef BSP_USING_CAPTURE10_CH4
{{0}, &stm32_capture_obj[CAPTURE10_INDEX], 4, {0}},
#endif
};
static rt_uint64_t get_timer_clock(TIM_HandleTypeDef *htim)
{
rt_uint64_t tim_clock = 0;
#if defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7)
if (htim->Instance == TIM9 || htim->Instance == TIM10 || htim->Instance == TIM11 || htim->Instance == TIM1 || htim->Instance == TIM8)
#elif defined(SOC_SERIES_STM32L4)
if (htim->Instance == TIM15 || htim->Instance == TIM16 || htim->Instance == TIM17)
#elif defined(SOC_SERIES_STM32MP1)
if (htim->Instance == TIM4)
#elif defined(SOC_SERIES_STM32F1) || defined(SOC_SERIES_STM32F0) || defined(SOC_SERIES_STM32G0)
if (0)
#endif
{
#if !defined(SOC_SERIES_STM32F0) && !defined(SOC_SERIES_STM32G0)
#ifdef STM32F413xx
tim_clock = HAL_RCC_GetPCLK2Freq();
#else
tim_clock = HAL_RCC_GetPCLK2Freq() * 2;
#endif
#endif
}
else
{
#if defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32F0) || defined(SOC_SERIES_STM32G0)
tim_clock = HAL_RCC_GetPCLK1Freq();
#else
tim_clock = HAL_RCC_GetPCLK1Freq() * 2;
#endif
}
return tim_clock;
}
static void rt_hw_capture_timer_init(struct stm32_capture *device)
{
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
TIM_MasterConfigTypeDef sMasterConfig = {0};
TIM_IC_InitTypeDef sConfigIC = {0};
rt_uint64_t tim_clock;
if (device->inited)
{
return;
}
tim_clock = get_timer_clock(&device->timer) / 1000000;
/* configure the timer to ic mode */
device->timer.Init.Prescaler = tim_clock-1;
device->timer.Init.CounterMode = TIM_COUNTERMODE_UP;
device->timer.Init.Period = MAX_PERIOD-1;
device->timer.Init.AutoReloadPreload = MAX_PERIOD-1;
device->timer.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
#if defined(SOC_SERIES_STM32F1) || defined(SOC_SERIES_STM32L4)
device->timer.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
#else
device->timer.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
#endif
if (device->advanced && HAL_TIM_Base_Init(&device->timer) != HAL_OK)
{
Error_Handler();
}
if (HAL_TIM_IC_Init(&device->timer) != HAL_OK)
{
Error_Handler();
}
HAL_NVIC_SetPriority(device->iqrn, 0, 0);
HAL_NVIC_EnableIRQ(device->iqrn);
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
if (HAL_TIM_ConfigClockSource(&device->timer, &sClockSourceConfig) != HAL_OK)
{
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&device->timer, &sMasterConfig) != HAL_OK)
{
Error_Handler();
}
sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_RISING;
sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
sConfigIC.ICFilter = 0;
if (device->channels[0] != RT_NULL && HAL_TIM_IC_ConfigChannel(&device->timer, &sConfigIC, TIM_CHANNEL_1) != HAL_OK)
{
Error_Handler();
}
if (device->channels[1] != RT_NULL && HAL_TIM_IC_ConfigChannel(&device->timer, &sConfigIC, TIM_CHANNEL_2) != HAL_OK)
{
Error_Handler();
}
if (device->channels[2] != RT_NULL && HAL_TIM_IC_ConfigChannel(&device->timer, &sConfigIC, TIM_CHANNEL_3) != HAL_OK)
{
Error_Handler();
}
if (device->channels[3] != RT_NULL && HAL_TIM_IC_ConfigChannel(&device->timer, &sConfigIC, TIM_CHANNEL_4) != HAL_OK)
{
Error_Handler();
}
__HAL_TIM_DISABLE(&device->timer);
__HAL_TIM_SET_COUNTER(&device->timer,0);
__HAL_TIM_ENABLE_IT(&device->timer,TIM_IT_UPDATE);
__HAL_TIM_ENABLE(&device->timer);
device->inited = RT_TRUE;
}
static rt_err_t rt_hw_capture_open(struct rt_inputcapture_device *inputcapture)
{
struct stm32_capture_device *device_ch;
rt_uint32_t ch;
rt_enter_critical();
device_ch = rt_container_of(inputcapture, struct stm32_capture_device, parent);
if (device_ch->opend)
{
rt_exit_critical();
return RT_EOK;
}
device_ch->opend = RT_TRUE;
rt_hw_capture_timer_init(device_ch->timer);
rt_exit_critical();
switch (device_ch->ch)
{
case 1:
ch = TIM_CHANNEL_1;
break;
case 2:
ch = TIM_CHANNEL_2;
break;
case 3:
ch = TIM_CHANNEL_3;
break;
default:
ch = TIM_CHANNEL_4;
break;
}
HAL_TIM_IC_Start_IT(&device_ch->timer->timer, ch);
return RT_EOK;
}
void TIM2_IRQHandler(void)
{
/* enter interrupt */
rt_interrupt_enter();
HAL_TIM_IRQHandler(&stm32_capture_obj[CAPTURE2_INDEX].timer);
/* leave interrupt */
rt_interrupt_leave();
}
void TIM1_CC_IRQHandler(void)
{
/* enter interrupt */
rt_interrupt_enter();
HAL_TIM_IRQHandler(&stm32_capture_obj[CAPTURE1_INDEX].timer);
/* leave interrupt */
rt_interrupt_leave();
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
int i = 0;
for (i = 0; i < sizeof(stm32_capture_obj) / sizeof(stm32_capture_obj[0]); i++)
{
if (stm32_capture_obj[i].timer.Instance == htim->Instance)
{
stm32_capture_obj[i].tim_overflow ++;
}
}
}
static void _capture_computer(struct stm32_capture_device *dev, rt_uint32_t channel)
{
rt_uint32_t trigger_overflow = 0;
rt_uint32_t trigger_cnt = 0;
if (dev->data.polarity == POLARITY_RISING)
{
TIM_RESET_CAPTUREPOLARITY(&dev->timer->timer, channel);
TIM_SET_CAPTUREPOLARITY(&dev->timer->timer,channel, TIM_ICPOLARITY_FALLING);
dev->data.polarity = POLARITY_FALLING;
}
else
{
TIM_RESET_CAPTUREPOLARITY(&dev->timer->timer, channel);
TIM_SET_CAPTUREPOLARITY(&dev->timer->timer,channel, TIM_ICPOLARITY_RISING);
dev->data.polarity = POLARITY_RISING;
}
trigger_cnt = HAL_TIM_ReadCapturedValue(&dev->timer->timer, channel);
trigger_overflow = dev->timer->tim_overflow;
if((trigger_overflow < dev->data.last_overflow) ||
((trigger_overflow - dev->data.last_overflow) > MAX_PULSE))
{
dev->data.last_overflow = trigger_overflow;
dev->data.last_cnt = trigger_cnt;
return;
}
dev->pulsewidth_us = (trigger_overflow - dev->data.last_overflow)*MAX_PERIOD
+ trigger_cnt - dev->data.last_cnt;
rt_hw_inputcapture_isr(&dev->parent, dev->data.polarity != POLARITY_FALLING);
dev->data.last_overflow = trigger_overflow;
dev->data.last_cnt = trigger_cnt;
return;
}
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
int i = 0;
rt_uint32_t ch, to;
for (i = 0; i < sizeof(stm32_capture_devices) / sizeof(stm32_capture_devices[0]); i++)
{
switch (stm32_capture_devices[i].ch)
{
case 1:
ch = HAL_TIM_ACTIVE_CHANNEL_1;
to = TIM_CHANNEL_1;
break;
case 2:
ch = HAL_TIM_ACTIVE_CHANNEL_2;
to = TIM_CHANNEL_2;
break;
case 3:
ch = HAL_TIM_ACTIVE_CHANNEL_3;
to = TIM_CHANNEL_3;
break;
default:
ch = HAL_TIM_ACTIVE_CHANNEL_4;
to = TIM_CHANNEL_4;
break;
}
if (htim->Channel == ch && htim->Instance == stm32_capture_devices[i].timer->timer.Instance)
{
_capture_computer(&stm32_capture_devices[i], to);
}
}
}
static rt_err_t rt_hw_capture_get_pulsewidth (struct rt_inputcapture_device *inputcapture, rt_uint32_t *pulsewidth_us)
{
struct stm32_capture_device *device;
device = rt_container_of(inputcapture, struct stm32_capture_device, parent);
*pulsewidth_us = device->pulsewidth_us;
return RT_EOK;
}
static rt_err_t rt_hw_capture_init (struct rt_inputcapture_device *inputcapture)
{
return RT_EOK;
}
static rt_err_t rt_hw_capture_close (struct rt_inputcapture_device *inputcapture)
{
struct stm32_capture_device *device_ch;
rt_uint32_t ch;
rt_enter_critical();
device_ch = rt_container_of(inputcapture, struct stm32_capture_device, parent);
if (!device_ch->opend)
{
rt_exit_critical();
return RT_EOK;
}
switch (device_ch->ch)
{
case 1:
ch = TIM_CHANNEL_1;
break;
case 2:
ch = TIM_CHANNEL_2;
break;
case 3:
ch = TIM_CHANNEL_3;
break;
default:
ch = TIM_CHANNEL_4;
break;
}
HAL_TIM_IC_Stop_IT(&device_ch->timer->timer, ch);
device_ch->opend = RT_FALSE;
rt_exit_critical();
return RT_EOK;
}
static const struct rt_inputcapture_ops _drv_ops = {
.init = rt_hw_capture_init,
.open = rt_hw_capture_open,
.close = rt_hw_capture_close,
.get_pulsewidth = rt_hw_capture_get_pulsewidth,
};
int stm32_capture_init(void)
{
int i = 0;
char name[] = "tc00ch0";
for (i = 0; i < sizeof(stm32_capture_devices) / sizeof(stm32_capture_devices[0]); i++)
{
stm32_capture_devices[i].timer->channels[stm32_capture_devices[i].ch - 1] = &stm32_capture_devices[i];
stm32_capture_devices[i].parent.ops = &_drv_ops;
rt_snprintf(name, sizeof(name),"tc%dch%d", stm32_capture_devices[i].timer->timerx, stm32_capture_devices[i].ch);
rt_device_inputcapture_register(&stm32_capture_devices[i].parent, name, RT_NULL);
}
return RT_EOK;
}
#endif
+72 -64
View File
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2006-2022, RT-Thread Development Team
* Copyright (c) 2006-2023, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
@@ -11,7 +11,7 @@
#include <board.h>
#ifdef RT_USING_PWM
#ifdef BSP_USING_PWM
#include "drv_config.h"
#include <drivers/rt_drv_pwm.h>
@@ -21,7 +21,44 @@
#define MAX_PERIOD 65535
#define MIN_PERIOD 3
#define MIN_PULSE 2
#define MIN_PULSE 1
/* APBx timer clocks frequency doubler state related to APB1CLKDivider value */
void stm32_tim_pclkx_doubler_get(rt_uint32_t *pclk1_doubler, rt_uint32_t *pclk2_doubler)
{
rt_uint32_t flatency = 0;
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
RT_ASSERT(pclk1_doubler != RT_NULL);
RT_ASSERT(pclk1_doubler != RT_NULL);
HAL_RCC_GetClockConfig(&RCC_ClkInitStruct, &flatency);
*pclk1_doubler = 1;
*pclk2_doubler = 1;
#if defined(SOC_SERIES_STM32MP1)
if (RCC_ClkInitStruct.APB1_Div != RCC_APB1_DIV1)
{
*pclk1_doubler = 2;
}
if (RCC_ClkInitStruct.APB2_Div != RCC_APB2_DIV1)
{
*pclk2_doubler = 2;
}
#else
if (RCC_ClkInitStruct.APB1CLKDivider != RCC_HCLK_DIV1)
{
*pclk1_doubler = 2;
}
#if !(defined(SOC_SERIES_STM32F0) || defined(SOC_SERIES_STM32G0))
if (RCC_ClkInitStruct.APB2CLKDivider != RCC_HCLK_DIV1)
{
*pclk2_doubler = 2;
}
#endif
#endif
}
extern void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
@@ -159,68 +196,26 @@ static struct stm32_pwm stm32_pwm_obj[] =
#endif
};
/* APBx timer clocks frequency doubler state related to APB1CLKDivider value */
static void pclkx_doubler_get(rt_uint32_t *pclk1_doubler, rt_uint32_t *pclk2_doubler)
{
uint32_t flatency = 0;
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
RT_ASSERT(pclk1_doubler != RT_NULL);
RT_ASSERT(pclk1_doubler != RT_NULL);
HAL_RCC_GetClockConfig(&RCC_ClkInitStruct, &flatency);
*pclk1_doubler = 1;
*pclk2_doubler = 1;
#if defined(SOC_SERIES_STM32MP1)
if (RCC_ClkInitStruct.APB1_Div != RCC_APB1_DIV1)
{
*pclk1_doubler = 2;
}
if (RCC_ClkInitStruct.APB2_Div != RCC_APB2_DIV1)
{
*pclk2_doubler = 2;
}
#else
if (RCC_ClkInitStruct.APB1CLKDivider != RCC_HCLK_DIV1)
{
*pclk1_doubler = 2;
}
#if !defined(SOC_SERIES_STM32F0) && !defined(SOC_SERIES_STM32G0)
if (RCC_ClkInitStruct.APB2CLKDivider != RCC_HCLK_DIV1)
{
*pclk2_doubler = 2;
}
#endif
#endif
}
static rt_uint64_t tim_clock_get(TIM_HandleTypeDef *htim)
{
rt_uint32_t pclk1_doubler, pclk2_doubler;
rt_uint64_t tim_clock;
pclkx_doubler_get(&pclk1_doubler, &pclk2_doubler);
stm32_tim_pclkx_doubler_get(&pclk1_doubler, &pclk2_doubler);
#if defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7)
if (htim->Instance == TIM9 || htim->Instance == TIM10 || htim->Instance == TIM11)
#elif defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32H7)|| defined(SOC_SERIES_STM32F3)
if (htim->Instance == TIM15 || htim->Instance == TIM16 || htim->Instance == TIM17)
#elif defined(SOC_SERIES_STM32MP1)
if (htim->Instance == TIM4)
#elif defined(SOC_SERIES_STM32F1) || defined(SOC_SERIES_STM32F0) || defined(SOC_SERIES_STM32G0)
if (0)
#endif
/* Some series may only have APBPERIPH_BASE, don't have HAL_RCC_GetPCLK2Freq */
#if defined(APBPERIPH_BASE)
tim_clock = (rt_uint32_t)(HAL_RCC_GetPCLK1Freq() * pclk1_doubler);
#elif defined(APB1PERIPH_BASE) || defined(APB2PERIPH_BASE)
if ((rt_uint32_t)htim->Instance >= APB2PERIPH_BASE)
{
#if !defined(SOC_SERIES_STM32F0) && !defined(SOC_SERIES_STM32G0)
tim_clock = (rt_uint32_t)(HAL_RCC_GetPCLK2Freq() * pclk2_doubler);
#endif
}
else
{
tim_clock = (rt_uint32_t)(HAL_RCC_GetPCLK1Freq() * pclk1_doubler);
}
#endif
return tim_clock;
}
@@ -312,9 +307,10 @@ static rt_err_t drv_pwm_set(TIM_HandleTypeDef *htim, struct rt_pwm_configuration
{
pulse = MIN_PULSE;
}
else if (pulse > period)
/*To determine user input, output high level is required*/
else if (pulse >= period)
{
pulse = period;
pulse = period + 1;
}
__HAL_TIM_SET_COMPARE(htim, channel, pulse - 1);
@@ -396,7 +392,7 @@ static rt_err_t drv_pwm_control(struct rt_device_pwm *device, int cmd, void *arg
case PWM_CMD_GET:
return drv_pwm_get(htim, configuration);
default:
return RT_EINVAL;
return -RT_EINVAL;
}
}
@@ -442,13 +438,16 @@ static rt_err_t stm32_hw_pwm_init(struct stm32_pwm *device)
goto __exit;
}
master_config.MasterOutputTrigger = TIM_TRGO_RESET;
master_config.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(tim, &master_config) != HAL_OK)
if(IS_TIM_MASTER_INSTANCE(tim->Instance))
{
LOG_E("%s master config failed", device->name);
result = -RT_ERROR;
goto __exit;
master_config.MasterOutputTrigger = TIM_TRGO_RESET;
master_config.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(tim, &master_config) != HAL_OK)
{
LOG_E("%s master config failed", device->name);
result = -RT_ERROR;
goto __exit;
}
}
oc_config.OCMode = TIM_OCMODE_PWM1;
@@ -631,6 +630,15 @@ static void pwm_get_channel(void)
#ifdef BSP_USING_PWM12_CH2
stm32_pwm_obj[PWM12_INDEX].channel |= 1 << 1;
#endif
#ifdef BSP_USING_PWM13_CH1
stm32_pwm_obj[PWM13_INDEX].channel |= 1 << 0;
#endif
#ifdef BSP_USING_PWM14_CH1
stm32_pwm_obj[PWM14_INDEX].channel |= 1 << 0;
#endif
#ifdef BSP_USING_PWM15_CH1
stm32_pwm_obj[PWM15_INDEX].channel |= 1 << 0;
#endif
#ifdef BSP_USING_PWM16_CH1
stm32_pwm_obj[PWM16_INDEX].channel |= 1 << 0;
#endif
@@ -639,7 +647,7 @@ static void pwm_get_channel(void)
#endif
}
static int stm32_pwm_init(void)
int stm32_pwm_init(void)
{
int i = 0;
int result = RT_EOK;
@@ -675,5 +683,5 @@ static int stm32_pwm_init(void)
__exit:
return result;
}
INIT_DEVICE_EXPORT(stm32_pwm_init);
#endif /* RT_USING_PWM */
//INIT_DEVICE_EXPORT(stm32_pwm_init);
#endif /* BSP_USING_PWM */
+1 -1
View File
@@ -46,7 +46,7 @@ if GetDepend(['RT_USING_USB']):
if GetDepend(['RT_USING_CAN']):
src += ['STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c']
if GetDepend(['RT_USING_HWTIMER']) or GetDepend(['RT_USING_PWM']) or GetDepend(['RT_USING_PULSE_ENCODER']):
if GetDepend(['RT_USING_HWTIMER']) or GetDepend(['RT_USING_PWM']) or GetDepend(['RT_USING_PULSE_ENCODER']) or GetDepend(['RT_USING_INPUT_CAPTURE']):
src += ['STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c']
src += ['STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c']
src += ['STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_lptim.c']
+12
View File
@@ -0,0 +1,12 @@
import os
from building import *
objs = []
cwd = GetCurrentDir()
list = os.listdir(cwd)
for item in list:
if os.path.isfile(os.path.join(cwd, item, 'SConscript')):
objs = objs + SConscript(os.path.join(item, 'SConscript'))
Return('objs')
+7
View File
@@ -0,0 +1,7 @@
[
{
"path": "/packages/system/enhanced-kservice/rt_vsnprintf_full",
"ver": "latest",
"name": "RT_VSNPRINTF_FULL"
}
]
+1
View File
@@ -0,0 +1 @@
[]
@@ -0,0 +1,59 @@
# rt_vsnprintf 完整功能版本
在RT-Thread的kservice.c源码中的这些函数的实现是为了满足RT-Thread内核的自持能力即在不依赖标准C库的情况下RT-Thread核心代码也可以正常运行因此rt_kprintf、rt_sprintf、rt_snprintf、rt_vsnprintf这类打印函数或者称之为rt_kprintf家族函数仅仅满足内核的使用需求不会实现完整的、和标准C库一致的功能以减少ROM占用。但是很多社区小伙伴希望rt_kprintf家族函数可以支持上更多的功能例如打印浮点数据等等。因此本软件包实现了该功能。
本软件包实现了rt_kprintf家族函数的全功能版本因为rt_kprintf家族函数的核心功能都是调用rt_vsnprintf函数因此只需要重新实现rt_vsnprintf函数即可。本软件包基于开源项目[printf](https://github.com/eyalroz/printf)重新实现了rt_vsnprintf在4.1.0以及以上的RT-Thread版本中只需要安装本软件包即可。若RT-Thread低于4.1.0版本需要手动将kservice.c内的rt_vsnprintf函数注释掉再安装本软件包。
## 接管标准C库的printf家族函数仅支持4.1.0及以上版本)
本软件包有三个功能宏开关是否允许本软件包接管printf、sprintf以及snprintf函数默认为yes即接管。
也就是说安装本软件包后即便没有使能libc(RT_USING_LIBC)你可以正常的使用printf、sprintf以及snprintf函数当你调用这三个函数时会自动被rt_kprintf、rt_sprintf、rt_snprintf函数接管。你可以正常使用printf家族函数的所有功能。
```c
#include <stdio.h>
printf("hello world\n");
```
## ROM占用
GCC下占用8.6KB, Keil下占用8KB。远小于开启标准C库的ROM占用。
## 如何添加该软件包
```
RT-Thread online packages
system packages --->
enhanced kernel services --->
[*] rt_vsnprintf_full: fully functional version of rt_vsnprintf --->
Version (latest) --->
```
- 使用 `RT-Thread Studio` 打开 `RT-Thread Settings`, 点击添加软件包,输入关键字 `printf`, 添加 `rt_vsnprintf_full` 软件包,保存
![1](figures/1.png)
- 软件包目录下多出了一个 `rt_vsnprintf_full-latest`
![2](figures/2.png)
- 打开 rt_vsnprintf.c发现其中也实现了 rt_vsnprintf
```c
rt_int32_t rt_vsnprintf(char *buf, rt_size_t size, const char *fmt, va_list args)
{
return __vsnprintf(out_buffer, buf, size, fmt, args);
}
```
- 注释掉 kservice.c 中的 rt_vsnprintf **(只针对4.1.0版本以下)**
- 重新编译并运行 `rt_kprintf ` 和 `LOG_I`, 浮点数打印正常
![3](figures/3.png)
## 维护
[Meco Man](https://github.com/mysterywolf)
@@ -0,0 +1,14 @@
from building import *
src = ['rt_vsnprintf.c']
CPPDEFINES = []
if GetDepend('RT_VSNPRINTF_FULL_REPLACING_SPRINTF'):
CPPDEFINES += ['sprintf=rt_sprintf']
if GetDepend('RT_VSNPRINTF_FULL_REPLACING_SNPRINTF'):
CPPDEFINES += ['snprintf=rt_snprintf']
if GetDepend('RT_VSNPRINTF_FULL_REPLACING_PRINTF'):
CPPDEFINES += ['printf=rt_kprintf']
group = DefineGroup('rt_kprintf', src, depend = ['PKG_USING_RT_VSNPRINTF_FULL'], CPPDEFINES = CPPDEFINES)
Return('group')
Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

File diff suppressed because it is too large Load Diff
+253 -101
View File
@@ -303,18 +303,6 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_Semaphore.cpp</PathWithFileName>
<FilenameWithoutPath>cxx_Semaphore.cpp</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>10</FileNumber>
<FileType>8</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_Thread.cpp</PathWithFileName>
<FilenameWithoutPath>cxx_Thread.cpp</FilenameWithoutPath>
<RteFlg>0</RteFlg>
@@ -322,7 +310,7 @@
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>11</FileNumber>
<FileNumber>10</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -332,6 +320,18 @@
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>11</FileNumber>
<FileType>8</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_Mutex.cpp</PathWithFileName>
<FilenameWithoutPath>cxx_Mutex.cpp</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>12</FileNumber>
@@ -351,8 +351,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_Mutex.cpp</PathWithFileName>
<FilenameWithoutPath>cxx_Mutex.cpp</FilenameWithoutPath>
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_Semaphore.cpp</PathWithFileName>
<FilenameWithoutPath>cxx_Semaphore.cpp</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -535,6 +535,18 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>rt-thread\components\drivers\misc\adc.c</PathWithFileName>
<FilenameWithoutPath>adc.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>28</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>rt-thread\components\drivers\misc\pin.c</PathWithFileName>
<FilenameWithoutPath>pin.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
@@ -542,7 +554,31 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>28</FileNumber>
<FileNumber>29</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>rt-thread\components\drivers\misc\rt_drv_pwm.c</PathWithFileName>
<FilenameWithoutPath>rt_drv_pwm.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>30</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>rt-thread\components\drivers\misc\rt_inputcapture.c</PathWithFileName>
<FilenameWithoutPath>rt_inputcapture.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>31</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -554,7 +590,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>29</FileNumber>
<FileNumber>32</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -574,7 +610,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>30</FileNumber>
<FileNumber>33</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -586,7 +622,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>31</FileNumber>
<FileNumber>34</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -598,7 +634,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>32</FileNumber>
<FileNumber>35</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -610,7 +646,19 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>33</FileNumber>
<FileNumber>36</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>libraries\HAL_Drivers\drv_adc.c</PathWithFileName>
<FilenameWithoutPath>drv_adc.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>37</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -622,7 +670,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>34</FileNumber>
<FileNumber>38</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -634,7 +682,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>35</FileNumber>
<FileNumber>39</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -646,7 +694,7 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>36</FileNumber>
<FileNumber>40</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -658,7 +706,31 @@
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>37</FileNumber>
<FileNumber>41</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>libraries\HAL_Drivers\drv_inputcapture.c</PathWithFileName>
<FilenameWithoutPath>drv_inputcapture.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>42</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>libraries\HAL_Drivers\drv_pwm.c</PathWithFileName>
<FilenameWithoutPath>drv_pwm.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>43</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -672,37 +744,13 @@
<Group>
<GroupName>Fal</GroupName>
<tvExp>0</tvExp>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>38</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>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>39</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>rt-thread\components\fal\src\fal_flash.c</PathWithFileName>
<FilenameWithoutPath>fal_flash.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>40</FileNumber>
<FileNumber>44</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -714,7 +762,7 @@
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>41</FileNumber>
<FileNumber>45</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -724,6 +772,30 @@
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>46</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>rt-thread\components\fal\src\fal_flash.c</PathWithFileName>
<FilenameWithoutPath>fal_flash.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>47</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>
<bShared>0</bShared>
</File>
</Group>
<Group>
@@ -734,7 +806,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>42</FileNumber>
<FileNumber>48</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -746,7 +818,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>43</FileNumber>
<FileNumber>49</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -758,7 +830,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>44</FileNumber>
<FileNumber>50</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -770,7 +842,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>45</FileNumber>
<FileNumber>51</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -790,7 +862,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>46</FileNumber>
<FileNumber>52</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -810,7 +882,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>47</FileNumber>
<FileNumber>53</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -822,7 +894,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>48</FileNumber>
<FileNumber>54</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -834,7 +906,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>49</FileNumber>
<FileNumber>55</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -846,7 +918,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>50</FileNumber>
<FileNumber>56</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -858,7 +930,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>51</FileNumber>
<FileNumber>57</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -870,7 +942,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>52</FileNumber>
<FileNumber>58</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -882,7 +954,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>53</FileNumber>
<FileNumber>59</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -894,7 +966,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>54</FileNumber>
<FileNumber>60</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -906,7 +978,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>55</FileNumber>
<FileNumber>61</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -918,7 +990,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>56</FileNumber>
<FileNumber>62</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -930,7 +1002,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>57</FileNumber>
<FileNumber>63</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -942,7 +1014,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>58</FileNumber>
<FileNumber>64</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -954,7 +1026,7 @@
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>59</FileNumber>
<FileNumber>65</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -974,7 +1046,19 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>60</FileNumber>
<FileNumber>66</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_lptim.c</PathWithFileName>
<FilenameWithoutPath>stm32f4xx_hal_lptim.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>67</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -986,7 +1070,19 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>61</FileNumber>
<FileNumber>68</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_adc.c</PathWithFileName>
<FilenameWithoutPath>stm32f4xx_hal_adc.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>69</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -998,7 +1094,19 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>62</FileNumber>
<FileNumber>70</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c</PathWithFileName>
<FilenameWithoutPath>stm32f4xx_hal_tim_ex.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>71</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1010,19 +1118,19 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>63</FileNumber>
<FileNumber>72</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_crc.c</PathWithFileName>
<FilenameWithoutPath>stm32f4xx_hal_crc.c</FilenameWithoutPath>
<PathWithFileName>libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c</PathWithFileName>
<FilenameWithoutPath>stm32f4xx_hal_tim.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>64</FileNumber>
<FileNumber>73</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1034,7 +1142,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>65</FileNumber>
<FileNumber>74</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1046,7 +1154,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>66</FileNumber>
<FileNumber>75</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1058,7 +1166,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>67</FileNumber>
<FileNumber>76</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1070,7 +1178,19 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>68</FileNumber>
<FileNumber>77</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_crc.c</PathWithFileName>
<FilenameWithoutPath>stm32f4xx_hal_crc.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>78</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1082,7 +1202,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>69</FileNumber>
<FileNumber>79</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1094,7 +1214,19 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>70</FileNumber>
<FileNumber>80</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_adc_ex.c</PathWithFileName>
<FilenameWithoutPath>stm32f4xx_hal_adc_ex.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>81</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1106,7 +1238,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>71</FileNumber>
<FileNumber>82</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1118,7 +1250,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>72</FileNumber>
<FileNumber>83</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1130,7 +1262,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>73</FileNumber>
<FileNumber>84</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1142,7 +1274,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>74</FileNumber>
<FileNumber>85</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1154,7 +1286,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>75</FileNumber>
<FileNumber>86</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1166,7 +1298,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>76</FileNumber>
<FileNumber>87</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1178,7 +1310,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>77</FileNumber>
<FileNumber>88</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1190,7 +1322,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>78</FileNumber>
<FileNumber>89</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1202,7 +1334,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>79</FileNumber>
<FileNumber>90</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1214,7 +1346,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>80</FileNumber>
<FileNumber>91</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1226,7 +1358,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>81</FileNumber>
<FileNumber>92</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1238,7 +1370,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>82</FileNumber>
<FileNumber>93</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1251,14 +1383,34 @@
</Group>
<Group>
<GroupName>Utilities</GroupName>
<GroupName>rt_kprintf</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>83</FileNumber>
<FileNumber>94</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>packages\rt_vsnprintf_full-latest\rt_vsnprintf.c</PathWithFileName>
<FilenameWithoutPath>rt_vsnprintf.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>Utilities</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>12</GroupNumber>
<FileNumber>95</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1269,8 +1421,8 @@
<bShared>0</bShared>
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>84</FileNumber>
<GroupNumber>12</GroupNumber>
<FileNumber>96</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@@ -1281,8 +1433,8 @@
<bShared>0</bShared>
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>85</FileNumber>
<GroupNumber>12</GroupNumber>
<FileNumber>97</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
+88 -23
View File
@@ -16,8 +16,8 @@
<TargetCommonOption>
<Device>STM32F413VGTx</Device>
<Vendor>STMicroelectronics</Vendor>
<PackID>Keil.STM32F4xx_DFP.2.16.0</PackID>
<PackURL>http://www.keil.com/pack/</PackURL>
<PackID>Keil.STM32F4xx_DFP.2.17.0</PackID>
<PackURL>https://www.keil.com/pack/</PackURL>
<Cpu>IRAM(0x20000000,0x00050000) IROM(0x08000000,0x00100000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE</Cpu>
<FlashUtilSpec></FlashUtilSpec>
<StartupFile></StartupFile>
@@ -54,7 +54,7 @@
<CreateLib>1</CreateLib>
<CreateHexFile>0</CreateHexFile>
<DebugInformation>1</DebugInformation>
<BrowseInformation>0</BrowseInformation>
<BrowseInformation>1</BrowseInformation>
<ListingPath>.\build\keil\List\</ListingPath>
<HexFormatSelection>1</HexFormatSelection>
<Merge32K>0</Merge32K>
@@ -82,7 +82,7 @@
<AfterMake>
<RunUserProg1>1</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
<UserProg1Name>move_lib.bat</UserProg1Name>
<UserProg1Name>E:\xyfc\413\work\stm32f413\move_lib.bat</UserProg1Name>
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
@@ -428,11 +428,6 @@
<Group>
<GroupName>CPlusPlus</GroupName>
<Files>
<File>
<FileName>cxx_Semaphore.cpp</FileName>
<FileType>8</FileType>
<FilePath>rt-thread\components\libc\cplusplus\cxx_Semaphore.cpp</FilePath>
</File>
<File>
<FileName>cxx_Thread.cpp</FileName>
<FileType>8</FileType>
@@ -443,15 +438,20 @@
<FileType>1</FileType>
<FilePath>rt-thread\components\libc\cplusplus\cxx_crt_init.c</FilePath>
</File>
<File>
<FileName>cxx_Mutex.cpp</FileName>
<FileType>8</FileType>
<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>
</File>
<File>
<FileName>cxx_Mutex.cpp</FileName>
<FileName>cxx_Semaphore.cpp</FileName>
<FileType>8</FileType>
<FilePath>rt-thread\components\libc\cplusplus\cxx_Mutex.cpp</FilePath>
<FilePath>rt-thread\components\libc\cplusplus\cxx_Semaphore.cpp</FilePath>
</File>
</Files>
</Group>
@@ -528,11 +528,26 @@
<FileType>1</FileType>
<FilePath>rt-thread\components\drivers\ipc\workqueue.c</FilePath>
</File>
<File>
<FileName>adc.c</FileName>
<FileType>1</FileType>
<FilePath>rt-thread\components\drivers\misc\adc.c</FilePath>
</File>
<File>
<FileName>pin.c</FileName>
<FileType>1</FileType>
<FilePath>rt-thread\components\drivers\misc\pin.c</FilePath>
</File>
<File>
<FileName>rt_drv_pwm.c</FileName>
<FileType>1</FileType>
<FilePath>rt-thread\components\drivers\misc\rt_drv_pwm.c</FilePath>
</File>
<File>
<FileName>rt_inputcapture.c</FileName>
<FileType>1</FileType>
<FilePath>rt-thread\components\drivers\misc\rt_inputcapture.c</FilePath>
</File>
<File>
<FileName>serial.c</FileName>
<FileType>1</FileType>
@@ -563,6 +578,11 @@
<FileType>2</FileType>
<FilePath>libraries\STM32F4xx_HAL\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f413xx.s</FilePath>
</File>
<File>
<FileName>drv_adc.c</FileName>
<FileType>1</FileType>
<FilePath>libraries\HAL_Drivers\drv_adc.c</FilePath>
</File>
<File>
<FileName>drv_can.c</FileName>
<FileType>1</FileType>
@@ -583,6 +603,16 @@
<FileType>1</FileType>
<FilePath>libraries\HAL_Drivers\drv_gpio.c</FilePath>
</File>
<File>
<FileName>drv_inputcapture.c</FileName>
<FileType>1</FileType>
<FilePath>libraries\HAL_Drivers\drv_inputcapture.c</FilePath>
</File>
<File>
<FileName>drv_pwm.c</FileName>
<FileType>1</FileType>
<FilePath>libraries\HAL_Drivers\drv_pwm.c</FilePath>
</File>
<File>
<FileName>drv_usart.c</FileName>
<FileType>1</FileType>
@@ -593,16 +623,6 @@
<Group>
<GroupName>Fal</GroupName>
<Files>
<File>
<FileName>fal.c</FileName>
<FileType>1</FileType>
<FilePath>rt-thread\components\fal\src\fal.c</FilePath>
</File>
<File>
<FileName>fal_flash.c</FileName>
<FileType>1</FileType>
<FilePath>rt-thread\components\fal\src\fal_flash.c</FilePath>
</File>
<File>
<FileName>fal_rtt.c</FileName>
<FileType>1</FileType>
@@ -613,6 +633,16 @@
<FileType>1</FileType>
<FilePath>rt-thread\components\fal\src\fal_partition.c</FilePath>
</File>
<File>
<FileName>fal_flash.c</FileName>
<FileType>1</FileType>
<FilePath>rt-thread\components\fal\src\fal_flash.c</FilePath>
</File>
<File>
<FileName>fal.c</FileName>
<FileType>1</FileType>
<FilePath>rt-thread\components\fal\src\fal.c</FilePath>
</File>
</Files>
</Group>
<Group>
@@ -723,25 +753,40 @@
<Group>
<GroupName>Libraries</GroupName>
<Files>
<File>
<FileName>stm32f4xx_hal_lptim.c</FileName>
<FileType>1</FileType>
<FilePath>libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_lptim.c</FilePath>
</File>
<File>
<FileName>stm32f4xx_hal_flash_ex.c</FileName>
<FileType>1</FileType>
<FilePath>libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c</FilePath>
</File>
<File>
<FileName>stm32f4xx_hal_adc.c</FileName>
<FileType>1</FileType>
<FilePath>libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_adc.c</FilePath>
</File>
<File>
<FileName>stm32f4xx_hal_uart.c</FileName>
<FileType>1</FileType>
<FilePath>libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c</FilePath>
</File>
<File>
<FileName>stm32f4xx_hal_tim_ex.c</FileName>
<FileType>1</FileType>
<FilePath>libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c</FilePath>
</File>
<File>
<FileName>stm32f4xx_hal_rcc_ex.c</FileName>
<FileType>1</FileType>
<FilePath>libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c</FilePath>
</File>
<File>
<FileName>stm32f4xx_hal_crc.c</FileName>
<FileName>stm32f4xx_hal_tim.c</FileName>
<FileType>1</FileType>
<FilePath>libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_crc.c</FilePath>
<FilePath>libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c</FilePath>
</File>
<File>
<FileName>stm32f4xx_hal_cryp_ex.c</FileName>
@@ -763,6 +808,11 @@
<FileType>1</FileType>
<FilePath>libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_usart.c</FilePath>
</File>
<File>
<FileName>stm32f4xx_hal_crc.c</FileName>
<FileType>1</FileType>
<FilePath>libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_crc.c</FilePath>
</File>
<File>
<FileName>stm32f4xx_hal_pwr.c</FileName>
<FileType>1</FileType>
@@ -773,6 +823,11 @@
<FileType>1</FileType>
<FilePath>libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_iwdg.c</FilePath>
</File>
<File>
<FileName>stm32f4xx_hal_adc_ex.c</FileName>
<FileType>1</FileType>
<FilePath>libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_adc_ex.c</FilePath>
</File>
<File>
<FileName>stm32f4xx_hal_rcc.c</FileName>
<FileType>1</FileType>
@@ -840,6 +895,16 @@
</File>
</Files>
</Group>
<Group>
<GroupName>rt_kprintf</GroupName>
<Files>
<File>
<FileName>rt_vsnprintf.c</FileName>
<FileType>1</FileType>
<FilePath>packages\rt_vsnprintf_full-latest\rt_vsnprintf.c</FilePath>
</File>
</Files>
</Group>
<Group>
<GroupName>Utilities</GroupName>
<Files>
@@ -181,10 +181,7 @@ void rt_hw_inputcapture_isr(struct rt_inputcapture_device *inputcapture, rt_bool
}
data.is_high = level;
if (rt_ringbuffer_put(inputcapture->ringbuff, (rt_uint8_t *)&data, sizeof(struct rt_inputcapture_data)) == 0)
{
LOG_W("inputcapture ringbuffer doesn't have enough space.");
}
rt_ringbuffer_put(inputcapture->ringbuff, (rt_uint8_t *)&data, sizeof(struct rt_inputcapture_data));
receive_size = rt_ringbuffer_data_len(inputcapture->ringbuff) / sizeof(struct rt_inputcapture_data);
+1 -1
View File
@@ -797,7 +797,7 @@ int finsh_system_init(void)
rt_thread_startup(tid);
return 0;
}
INIT_APP_EXPORT(finsh_system_init);
// INIT_APP_EXPORT(finsh_system_init);
#endif /* RT_USING_FINSH */
-495
View File
@@ -645,501 +645,6 @@ void rt_show_version(void)
}
RTM_EXPORT(rt_show_version);
/* private function */
#define _ISDIGIT(c) ((unsigned)((c) - '0') < 10)
/**
* This function will duplicate a string.
*
* @param n is the string to be duplicated.
*
* @param base is support divide instructions value.
*
* @return the duplicated string pointer.
*/
#ifdef RT_KPRINTF_USING_LONGLONG
rt_inline int divide(long long *n, int base)
#else
rt_inline int divide(long *n, int base)
#endif /* RT_KPRINTF_USING_LONGLONG */
{
int res;
/* optimized for processor which does not support divide instructions. */
#ifdef RT_KPRINTF_USING_LONGLONG
res = (int)(((unsigned long long)*n) % base);
*n = (long long)(((unsigned long long)*n) / base);
#else
res = (int)(((unsigned long)*n) % base);
*n = (long)(((unsigned long)*n) / base);
#endif
return res;
}
rt_inline int skip_atoi(const char **s)
{
int i = 0;
while (_ISDIGIT(**s))
i = i * 10 + *((*s)++) - '0';
return i;
}
#define ZEROPAD (1 << 0) /* pad with zero */
#define SIGN (1 << 1) /* unsigned/signed long */
#define PLUS (1 << 2) /* show plus */
#define SPACE (1 << 3) /* space if plus */
#define LEFT (1 << 4) /* left justified */
#define SPECIAL (1 << 5) /* 0x */
#define LARGE (1 << 6) /* use 'ABCDEF' instead of 'abcdef' */
static char *print_number(char *buf,
char *end,
#ifdef RT_KPRINTF_USING_LONGLONG
long long num,
#else
long num,
#endif /* RT_KPRINTF_USING_LONGLONG */
int base,
int s,
#ifdef RT_PRINTF_PRECISION
int precision,
#endif /* RT_PRINTF_PRECISION */
int type)
{
char c, sign;
#ifdef RT_KPRINTF_USING_LONGLONG
char tmp[64];
#else
char tmp[32];
#endif /* RT_KPRINTF_USING_LONGLONG */
int precision_bak = precision;
const char *digits;
static const char small_digits[] = "0123456789abcdef";
static const char large_digits[] = "0123456789ABCDEF";
int i, size;
size = s;
digits = (type & LARGE) ? large_digits : small_digits;
if (type & LEFT)
type &= ~ZEROPAD;
c = (type & ZEROPAD) ? '0' : ' ';
/* get sign */
sign = 0;
if (type & SIGN)
{
if (num < 0)
{
sign = '-';
num = -num;
}
else if (type & PLUS)
sign = '+';
else if (type & SPACE)
sign = ' ';
}
#ifdef RT_PRINTF_SPECIAL
if (type & SPECIAL)
{
if (base == 2 || base == 16)
size -= 2;
else if (base == 8)
size--;
}
#endif /* RT_PRINTF_SPECIAL */
i = 0;
if (num == 0)
tmp[i++] = '0';
else
{
while (num != 0)
tmp[i++] = digits[divide(&num, base)];
}
#ifdef RT_PRINTF_PRECISION
if (i > precision)
precision = i;
size -= precision;
#else
size -= i;
#endif /* RT_PRINTF_PRECISION */
if (!(type & (ZEROPAD | LEFT)))
{
if ((sign) && (size > 0))
size--;
while (size-- > 0)
{
if (buf < end)
*buf = ' ';
++ buf;
}
}
if (sign)
{
if (buf < end)
{
*buf = sign;
}
-- size;
++ buf;
}
#ifdef RT_PRINTF_SPECIAL
if (type & SPECIAL)
{
if (base == 2)
{
if (buf < end)
*buf = '0';
++ buf;
if (buf < end)
*buf = 'b';
++ buf;
}
else if (base == 8)
{
if (buf < end)
*buf = '0';
++ buf;
}
else if (base == 16)
{
if (buf < end)
*buf = '0';
++ buf;
if (buf < end)
{
*buf = type & LARGE ? 'X' : 'x';
}
++ buf;
}
}
#endif /* RT_PRINTF_SPECIAL */
/* no align to the left */
if (!(type & LEFT))
{
while (size-- > 0)
{
if (buf < end)
*buf = c;
++ buf;
}
}
#ifdef RT_PRINTF_PRECISION
while (i < precision--)
{
if (buf < end)
*buf = '0';
++ buf;
}
#endif /* RT_PRINTF_PRECISION */
/* put number in the temporary buffer */
while (i-- > 0 && (precision_bak != 0))
{
if (buf < end)
*buf = tmp[i];
++ buf;
}
while (size-- > 0)
{
if (buf < end)
*buf = ' ';
++ buf;
}
return buf;
}
/**
* This function will fill a formatted string to buffer.
*
* @param buf is the buffer to save formatted string.
*
* @param size is the size of buffer.
*
* @param fmt is the format parameters.
*
* @param args is a list of variable parameters.
*
* @return The number of characters actually written to buffer.
*/
RT_WEAK int rt_vsnprintf(char *buf, rt_size_t size, const char *fmt, va_list args)
{
#ifdef RT_KPRINTF_USING_LONGLONG
unsigned long long num;
#else
rt_uint32_t num;
#endif /* RT_KPRINTF_USING_LONGLONG */
int i, len;
char *str, *end, c;
const char *s;
rt_uint8_t base; /* the base of number */
rt_uint8_t flags; /* flags to print number */
rt_uint8_t qualifier; /* 'h', 'l', or 'L' for integer fields */
rt_int32_t field_width; /* width of output field */
#ifdef RT_PRINTF_PRECISION
int precision; /* min. # of digits for integers and max for a string */
#endif /* RT_PRINTF_PRECISION */
str = buf;
end = buf + size;
/* Make sure end is always >= buf */
if (end < buf)
{
end = ((char *) - 1);
size = end - buf;
}
for (; *fmt ; ++fmt)
{
if (*fmt != '%')
{
if (str < end)
*str = *fmt;
++ str;
continue;
}
/* process flags */
flags = 0;
while (1)
{
/* skips the first '%' also */
++ fmt;
if (*fmt == '-') flags |= LEFT;
else if (*fmt == '+') flags |= PLUS;
else if (*fmt == ' ') flags |= SPACE;
else if (*fmt == '#') flags |= SPECIAL;
else if (*fmt == '0') flags |= ZEROPAD;
else break;
}
/* get field width */
field_width = -1;
if (_ISDIGIT(*fmt)) field_width = skip_atoi(&fmt);
else if (*fmt == '*')
{
++ fmt;
/* it's the next argument */
field_width = va_arg(args, int);
if (field_width < 0)
{
field_width = -field_width;
flags |= LEFT;
}
}
#ifdef RT_PRINTF_PRECISION
/* get the precision */
precision = -1;
if (*fmt == '.')
{
++ fmt;
if (_ISDIGIT(*fmt)) precision = skip_atoi(&fmt);
else if (*fmt == '*')
{
++ fmt;
/* it's the next argument */
precision = va_arg(args, int);
}
if (precision < 0) precision = 0;
}
#endif /* RT_PRINTF_PRECISION */
/* get the conversion qualifier */
qualifier = 0;
#ifdef RT_KPRINTF_USING_LONGLONG
if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L')
#else
if (*fmt == 'h' || *fmt == 'l')
#endif /* RT_KPRINTF_USING_LONGLONG */
{
qualifier = *fmt;
++ fmt;
#ifdef RT_KPRINTF_USING_LONGLONG
if (qualifier == 'l' && *fmt == 'l')
{
qualifier = 'L';
++ fmt;
}
#endif /* RT_KPRINTF_USING_LONGLONG */
}
/* the default base */
base = 10;
switch (*fmt)
{
case 'c':
if (!(flags & LEFT))
{
while (--field_width > 0)
{
if (str < end) *str = ' ';
++ str;
}
}
/* get character */
c = (rt_uint8_t)va_arg(args, int);
if (str < end) *str = c;
++ str;
/* put width */
while (--field_width > 0)
{
if (str < end) *str = ' ';
++ str;
}
continue;
case 's':
s = va_arg(args, char *);
if (!s) s = "(NULL)";
for (len = 0; (len != field_width) && (s[len] != '\0'); len++);
#ifdef RT_PRINTF_PRECISION
if (precision > 0 && len > precision) len = precision;
#endif /* RT_PRINTF_PRECISION */
if (!(flags & LEFT))
{
while (len < field_width--)
{
if (str < end) *str = ' ';
++ str;
}
}
for (i = 0; i < len; ++i)
{
if (str < end) *str = *s;
++ str;
++ s;
}
while (len < field_width--)
{
if (str < end) *str = ' ';
++ str;
}
continue;
case 'p':
if (field_width == -1)
{
field_width = sizeof(void *) << 1;
flags |= ZEROPAD;
}
#ifdef RT_PRINTF_PRECISION
str = print_number(str, end,
(long)va_arg(args, void *),
16, field_width, precision, flags);
#else
str = print_number(str, end,
(long)va_arg(args, void *),
16, field_width, flags);
#endif /* RT_PRINTF_PRECISION */
continue;
case '%':
if (str < end) *str = '%';
++ str;
continue;
/* integer number formats - set up the flags and "break" */
case 'b':
base = 2;
break;
case 'o':
base = 8;
break;
case 'X':
flags |= LARGE;
case 'x':
base = 16;
break;
case 'd':
case 'i':
flags |= SIGN;
case 'u':
break;
default:
if (str < end) *str = '%';
++ str;
if (*fmt)
{
if (str < end) *str = *fmt;
++ str;
}
else
{
-- fmt;
}
continue;
}
#ifdef RT_KPRINTF_USING_LONGLONG
if (qualifier == 'L') num = va_arg(args, long long);
else if (qualifier == 'l')
#else
if (qualifier == 'l')
#endif /* RT_KPRINTF_USING_LONGLONG */
{
num = va_arg(args, rt_uint32_t);
if (flags & SIGN) num = (rt_int32_t)num;
}
else if (qualifier == 'h')
{
num = (rt_uint16_t)va_arg(args, int);
if (flags & SIGN) num = (rt_int16_t)num;
}
else
{
num = va_arg(args, rt_uint32_t);
if (flags & SIGN) num = (rt_int32_t)num;
}
#ifdef RT_PRINTF_PRECISION
str = print_number(str, end, num, base, field_width, precision, flags);
#else
str = print_number(str, end, num, base, field_width, flags);
#endif /* RT_PRINTF_PRECISION */
}
if (size > 0)
{
if (str < end) *str = '\0';
else
{
end[-1] = '\0';
}
}
/* the trailing null byte doesn't count towards the total
* ++str;
*/
return str - buf;
}
RTM_EXPORT(rt_vsnprintf);
/**
+55 -1
View File
@@ -85,7 +85,11 @@
#define RT_SERIAL_RB_BUFSZ 64
#define RT_USING_CAN
#define RT_USING_PIN
#define RT_USING_ADC
#define RT_USING_PWM
#define RT_USING_WDT
#define RT_USING_INPUT_CAPTURE
#define RT_INPUT_CAPTURE_RB_SIZE 100
/* Using USB */
@@ -124,6 +128,7 @@
/* log format */
#define ULOG_OUTPUT_FLOAT
#define ULOG_USING_COLOR
#define ULOG_OUTPUT_TIME
#define ULOG_OUTPUT_LEVEL
@@ -175,6 +180,8 @@
/* enhanced kernel services */
#define PKG_USING_RT_VSNPRINTF_FULL
#define PKG_USING_RT_VSNPRINTF_FULL_LATEST_VERSION
/* acceleration: Assembly language or algorithmic acceleration packages */
@@ -187,6 +194,11 @@
/* peripheral libraries and drivers */
/* sensors drivers */
/* touch drivers */
/* Kendryte SDK */
@@ -194,6 +206,9 @@
/* AI packages */
/* Signal Processing and Control Algorithm Packages */
/* miscellaneous packages */
/* project laboratory */
@@ -207,6 +222,9 @@
/* Arduino libraries */
/* Projects */
/* Sensors */
@@ -216,7 +234,23 @@
/* Timing */
/* Projects */
/* Data Processing */
/* Data Storage */
/* Communication */
/* Device Control */
/* Other */
/* Signal IO */
/* Uncategorized */
#define SOC_FAMILY_STM32
#define SOC_SERIES_STM32F4
@@ -261,6 +295,26 @@
#define BSP_USING_CAN1
#define BSP_USING_CAN2
#define BSP_USING_CAN3
#define BSP_USING_PWM
#define BSP_USING_PWM3
#define BSP_USING_PWM3_CH1
#define BSP_USING_PWM3_CH2
#define BSP_USING_PWM3_CH3
#define BSP_USING_PWM3_CH4
#define BSP_USING_PWM4
#define BSP_USING_PWM4_CH1
#define BSP_USING_PWM4_CH2
#define BSP_USING_PWM4_CH3
#define BSP_USING_PWM4_CH4
#define BSP_USING_CAPTURE
#define BSP_USING_CAPTURE1
#define BSP_USING_CAPTURE1_CH1
#define BSP_USING_CAPTURE1_CH2
#define BSP_USING_CAPTURE2
#define BSP_USING_CAPTURE2_CH3
#define BSP_USING_CAPTURE2_CH4
#define BSP_USING_ADC
#define BSP_USING_ADC1
#define BSP_USING_ON_CHIP_FLASH
/* Board extended module Drivers */