Compare commits
10 Commits
06dbb658a5
...
0c72d22804
| Author | SHA1 | Date | |
|---|---|---|---|
|
0c72d22804
|
|||
|
e75971d084
|
|||
|
a8e6be3cfe
|
|||
|
b2d3238dc2
|
|||
|
9ebd4970a0
|
|||
|
ba71d92b5b
|
|||
|
e639054d89
|
|||
|
34b4188c72
|
|||
|
1ec5bc8ffd
|
|||
|
669e1f1e77
|
@@ -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
@@ -13,7 +13,6 @@
|
||||
build
|
||||
Debug
|
||||
documentation/html
|
||||
packages/
|
||||
*~
|
||||
*.o
|
||||
*.obj
|
||||
@@ -40,3 +39,4 @@ RTE/
|
||||
settings/
|
||||
*.uvguix*
|
||||
cconfig.h
|
||||
packages/packages.dbsqlite
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 */
|
||||
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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}, \
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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']
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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)},
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
@@ -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 */
|
||||
|
||||
@@ -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']
|
||||
|
||||
@@ -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')
|
||||
@@ -0,0 +1,7 @@
|
||||
[
|
||||
{
|
||||
"path": "/packages/system/enhanced-kservice/rt_vsnprintf_full",
|
||||
"ver": "latest",
|
||||
"name": "RT_VSNPRINTF_FULL"
|
||||
}
|
||||
]
|
||||
@@ -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` 软件包,保存
|
||||
|
||||

|
||||
|
||||
|
||||
- 软件包目录下多出了一个 `rt_vsnprintf_full-latest` 包
|
||||
|
||||

|
||||
|
||||
|
||||
- 打开 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`, 浮点数打印正常
|
||||

|
||||
|
||||
|
||||
|
||||
## 维护
|
||||
|
||||
[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
@@ -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
@@ -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);
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
|
||||
@@ -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
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user