parent
feccee151f
commit
df00792cd4
|
@ -6,6 +6,12 @@
|
||||||
"gd32f4xx_adc.h": "c",
|
"gd32f4xx_adc.h": "c",
|
||||||
"drv_adc.h": "c",
|
"drv_adc.h": "c",
|
||||||
"gd32f4xx.h": "c",
|
"gd32f4xx.h": "c",
|
||||||
"gd32f4xx_dma.h": "c"
|
"gd32f4xx_dma.h": "c",
|
||||||
|
"tmp75.h": "c",
|
||||||
|
"gd32f4xx_misc.h": "c",
|
||||||
|
"rtthread.h": "c",
|
||||||
|
"rthw.h": "c",
|
||||||
|
"delay_us.h": "c",
|
||||||
|
"core_cm4.h": "c"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"folders": [
|
||||||
|
{
|
||||||
|
"name": "Project",
|
||||||
|
"path": "Project"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -358,6 +358,8 @@
|
||||||
<state>$PROJ_DIR$\..\rtthread\include\libc</state>
|
<state>$PROJ_DIR$\..\rtthread\include\libc</state>
|
||||||
<state>$PROJ_DIR$\..\rtthread\include</state>
|
<state>$PROJ_DIR$\..\rtthread\include</state>
|
||||||
<state>D:\git\newPtz\drivers</state>
|
<state>D:\git\newPtz\drivers</state>
|
||||||
|
<state>D:\git\newPtz\drivers\tmp75</state>
|
||||||
|
<state>D:\git\newPtz\drivers\mb85rc64</state>
|
||||||
</option>
|
</option>
|
||||||
<option>
|
<option>
|
||||||
<name>CCStdIncCheck</name>
|
<name>CCStdIncCheck</name>
|
||||||
|
@ -2198,18 +2200,30 @@
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<name>drivers</name>
|
<name>drivers</name>
|
||||||
|
<group>
|
||||||
|
<name>mb85rc64</name>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\..\drivers\mb85rc64\mb85rc64.c</name>
|
||||||
|
</file>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<name>tmp75</name>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\..\drivers\tmp75\tmp75.c</name>
|
||||||
|
</file>
|
||||||
|
</group>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\..\drivers\delay_us.c</name>
|
||||||
|
</file>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\..\drivers\delay_us.h</name>
|
||||||
|
</file>
|
||||||
<file>
|
<file>
|
||||||
<name>$PROJ_DIR$\..\drivers\drv_adc.c</name>
|
<name>$PROJ_DIR$\..\drivers\drv_adc.c</name>
|
||||||
</file>
|
</file>
|
||||||
<file>
|
<file>
|
||||||
<name>$PROJ_DIR$\..\drivers\drv_adc.h</name>
|
<name>$PROJ_DIR$\..\drivers\drv_adc.h</name>
|
||||||
</file>
|
</file>
|
||||||
<file>
|
|
||||||
<name>$PROJ_DIR$\..\drivers\drv_i2c.c</name>
|
|
||||||
</file>
|
|
||||||
<file>
|
|
||||||
<name>$PROJ_DIR$\..\drivers\drv_i2c.h</name>
|
|
||||||
</file>
|
|
||||||
<file>
|
<file>
|
||||||
<name>$PROJ_DIR$\..\drivers\drv_usart.c</name>
|
<name>$PROJ_DIR$\..\drivers\drv_usart.c</name>
|
||||||
</file>
|
</file>
|
||||||
|
|
|
@ -2871,18 +2871,30 @@
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<name>drivers</name>
|
<name>drivers</name>
|
||||||
|
<group>
|
||||||
|
<name>mb85rc64</name>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\..\drivers\mb85rc64\mb85rc64.c</name>
|
||||||
|
</file>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<name>tmp75</name>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\..\drivers\tmp75\tmp75.c</name>
|
||||||
|
</file>
|
||||||
|
</group>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\..\drivers\delay_us.c</name>
|
||||||
|
</file>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\..\drivers\delay_us.h</name>
|
||||||
|
</file>
|
||||||
<file>
|
<file>
|
||||||
<name>$PROJ_DIR$\..\drivers\drv_adc.c</name>
|
<name>$PROJ_DIR$\..\drivers\drv_adc.c</name>
|
||||||
</file>
|
</file>
|
||||||
<file>
|
<file>
|
||||||
<name>$PROJ_DIR$\..\drivers\drv_adc.h</name>
|
<name>$PROJ_DIR$\..\drivers\drv_adc.h</name>
|
||||||
</file>
|
</file>
|
||||||
<file>
|
|
||||||
<name>$PROJ_DIR$\..\drivers\drv_i2c.c</name>
|
|
||||||
</file>
|
|
||||||
<file>
|
|
||||||
<name>$PROJ_DIR$\..\drivers\drv_i2c.h</name>
|
|
||||||
</file>
|
|
||||||
<file>
|
<file>
|
||||||
<name>$PROJ_DIR$\..\drivers\drv_usart.c</name>
|
<name>$PROJ_DIR$\..\drivers\drv_usart.c</name>
|
||||||
</file>
|
</file>
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
# For more options, open this url: https://clang.llvm.net.cn/docs/ClangFormatStyleOptions.html
|
||||||
|
---
|
||||||
|
BasedOnStyle: Microsoft
|
||||||
|
IndentWidth: 4
|
||||||
|
UseTab: Never
|
||||||
|
TabWidth: 4
|
||||||
|
ColumnLimit: 0
|
||||||
|
---
|
||||||
|
Language: Cpp
|
||||||
|
AccessModifierOffset: -4
|
||||||
|
NamespaceIndentation: All
|
||||||
|
FixNamespaceComments: false
|
||||||
|
BreakBeforeBraces: Linux
|
||||||
|
AllowShortIfStatementsOnASingleLine: true
|
||||||
|
AllowShortLoopsOnASingleLine: true
|
||||||
|
AllowShortBlocksOnASingleLine: true
|
||||||
|
IndentCaseLabels: true
|
||||||
|
SortIncludes: false
|
||||||
|
AlignConsecutiveMacros: AcrossEmptyLines
|
||||||
|
AlignConsecutiveAssignments: Consecutive
|
|
@ -0,0 +1,393 @@
|
||||||
|
{
|
||||||
|
"name": "Project",
|
||||||
|
"type": "ARM",
|
||||||
|
"dependenceList": [],
|
||||||
|
"srcDirs": [],
|
||||||
|
"virtualFolder": {
|
||||||
|
"name": "<virtual_root>",
|
||||||
|
"folders": [
|
||||||
|
{
|
||||||
|
"name": "Application",
|
||||||
|
"files": [],
|
||||||
|
"folders": [
|
||||||
|
{
|
||||||
|
"name": "main",
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../applications/main/gd32f4xx_it.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../applications/main/main.c"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"folders": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CMSIS",
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/system_gd32f4xx.c"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"folders": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "drivers",
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../drivers/drv_adc.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../drivers/drv_adc.h"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../drivers/drv_i2c.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../drivers/drv_i2c.h"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../drivers/drv_usart.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../drivers/drv_usart.h"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"folders": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "GD32F4xx_Peripherals",
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_adc.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_can.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_crc.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_ctc.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dac.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dbg.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dci.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dma.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_enet.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_exmc.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_exti.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_fmc.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_fwdgt.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_gpio.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_i2c.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_ipa.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_iref.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_misc.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_pmu.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_rcu.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_rtc.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_sdio.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_spi.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_syscfg.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_timer.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_tli.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_trng.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_usart.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_wwdgt.c"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"folders": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rtthread",
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../rtthread/board.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../rtthread/src/clock.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../rtthread/src/components.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../rtthread/libcpu/arm/cortex-m4/context_iar.S"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../rtthread/src/cpu.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../rtthread/libcpu/arm/cortex-m4/cpuport.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../rtthread/src/idle.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../rtthread/src/ipc.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../rtthread/src/irq.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../rtthread/src/kservice.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../rtthread/src/mem.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../rtthread/src/memheap.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../rtthread/src/mempool.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../rtthread/src/object.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../rtthread/src/scheduler.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../rtthread/src/slab.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../rtthread/src/thread.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../rtthread/src/timer.c"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"folders": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Startup",
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"path": "${PROJ_DIR}/../GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/IAR/startup_gd32f450_470.s"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"folders": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"files": []
|
||||||
|
},
|
||||||
|
"outDir": "build",
|
||||||
|
"deviceName": null,
|
||||||
|
"packDir": null,
|
||||||
|
"miscInfo": {
|
||||||
|
"uid": "9d6b5f7fe902100f657674335b6bec3d"
|
||||||
|
},
|
||||||
|
"targets": {
|
||||||
|
"Debug": {
|
||||||
|
"excludeList": [],
|
||||||
|
"toolchain": "IAR_ARM",
|
||||||
|
"compileConfig": {
|
||||||
|
"cpuType": "Cortex-M3",
|
||||||
|
"archExtensions": "",
|
||||||
|
"floatingPointHardware": "none",
|
||||||
|
"scatterFilePath": "unknown",
|
||||||
|
"useCustomScatterFile": true,
|
||||||
|
"storageLayout": {
|
||||||
|
"RAM": [],
|
||||||
|
"ROM": []
|
||||||
|
},
|
||||||
|
"options": "null"
|
||||||
|
},
|
||||||
|
"uploader": "JLink",
|
||||||
|
"uploadConfig": {
|
||||||
|
"bin": "",
|
||||||
|
"baseAddr": "",
|
||||||
|
"cpuInfo": {
|
||||||
|
"vendor": "null",
|
||||||
|
"cpuName": "null"
|
||||||
|
},
|
||||||
|
"proType": 1,
|
||||||
|
"speed": 8000,
|
||||||
|
"otherCmds": ""
|
||||||
|
},
|
||||||
|
"uploadConfigMap": {},
|
||||||
|
"custom_dep": {
|
||||||
|
"name": "default",
|
||||||
|
"incList": [
|
||||||
|
"${PROJ_DIR}/../GD32F4xx_Firmware_Library/CMSIS",
|
||||||
|
"${PROJ_DIR}/../GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include",
|
||||||
|
"${PROJ_DIR}/../GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Include",
|
||||||
|
"${PROJ_DIR}/../GD32F4xx_Firmware_Library/CMSIS/GD",
|
||||||
|
"${PROJ_DIR}/../applications/main",
|
||||||
|
"${PROJ_DIR}/../rtthread",
|
||||||
|
"${PROJ_DIR}/../rtthread/include/libc",
|
||||||
|
"${PROJ_DIR}/../rtthread/include",
|
||||||
|
"../../drivers"
|
||||||
|
],
|
||||||
|
"libList": [],
|
||||||
|
"defineList": [
|
||||||
|
"USE_STDPERIPH_DRIVER",
|
||||||
|
"GD32F470"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"builderOptions": {
|
||||||
|
"IAR_ARM": {
|
||||||
|
"version": 1,
|
||||||
|
"beforeBuildTasks": [],
|
||||||
|
"afterBuildTasks": [],
|
||||||
|
"global": {
|
||||||
|
"endian-mode": "little",
|
||||||
|
"runtime-lib": "full",
|
||||||
|
"printf-formatter": "auto",
|
||||||
|
"scanf-formatter": "auto",
|
||||||
|
"output-debug-info": "enable"
|
||||||
|
},
|
||||||
|
"c/cpp-compiler": {
|
||||||
|
"optimization": "low",
|
||||||
|
"destroy-cpp-static-object": true,
|
||||||
|
"language-c": "c99",
|
||||||
|
"language-conformance": "IAR-extensions",
|
||||||
|
"floating-point-semantics": "strict",
|
||||||
|
"misc-controls": ""
|
||||||
|
},
|
||||||
|
"asm-compiler": {
|
||||||
|
"case-sensitive-user-symbols": true,
|
||||||
|
"defines": []
|
||||||
|
},
|
||||||
|
"linker": {
|
||||||
|
"$outputTaskExcludes": [
|
||||||
|
".bin"
|
||||||
|
],
|
||||||
|
"output-format": "elf",
|
||||||
|
"auto-search-runtime-lib": true,
|
||||||
|
"perform-cpp-virtual-func-elimination": "enable",
|
||||||
|
"config-defines": [],
|
||||||
|
"LIB_FLAGS": [],
|
||||||
|
"misc-controls": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Release": {
|
||||||
|
"excludeList": [],
|
||||||
|
"toolchain": "IAR_ARM",
|
||||||
|
"compileConfig": {
|
||||||
|
"cpuType": "Cortex-M3",
|
||||||
|
"archExtensions": "",
|
||||||
|
"floatingPointHardware": "none",
|
||||||
|
"scatterFilePath": "unknown",
|
||||||
|
"useCustomScatterFile": true,
|
||||||
|
"storageLayout": {
|
||||||
|
"RAM": [],
|
||||||
|
"ROM": []
|
||||||
|
},
|
||||||
|
"options": "null"
|
||||||
|
},
|
||||||
|
"uploader": "JLink",
|
||||||
|
"uploadConfig": {
|
||||||
|
"bin": "",
|
||||||
|
"baseAddr": "",
|
||||||
|
"cpuInfo": {
|
||||||
|
"vendor": "null",
|
||||||
|
"cpuName": "null"
|
||||||
|
},
|
||||||
|
"proType": 1,
|
||||||
|
"speed": 8000,
|
||||||
|
"otherCmds": ""
|
||||||
|
},
|
||||||
|
"uploadConfigMap": {},
|
||||||
|
"custom_dep": {
|
||||||
|
"name": "default",
|
||||||
|
"incList": [],
|
||||||
|
"defineList": [
|
||||||
|
"NDEBUG"
|
||||||
|
],
|
||||||
|
"libList": []
|
||||||
|
},
|
||||||
|
"builderOptions": {
|
||||||
|
"IAR_ARM": {
|
||||||
|
"version": 1,
|
||||||
|
"beforeBuildTasks": [],
|
||||||
|
"afterBuildTasks": [],
|
||||||
|
"global": {
|
||||||
|
"endian-mode": "little",
|
||||||
|
"runtime-lib": "normal",
|
||||||
|
"printf-formatter": "auto",
|
||||||
|
"scanf-formatter": "auto",
|
||||||
|
"output-debug-info": "enable"
|
||||||
|
},
|
||||||
|
"c/cpp-compiler": {
|
||||||
|
"optimization": "high",
|
||||||
|
"destroy-cpp-static-object": true,
|
||||||
|
"language-c": "c99",
|
||||||
|
"language-conformance": "IAR-extensions",
|
||||||
|
"floating-point-semantics": "strict",
|
||||||
|
"misc-controls": ""
|
||||||
|
},
|
||||||
|
"asm-compiler": {
|
||||||
|
"case-sensitive-user-symbols": true,
|
||||||
|
"defines": []
|
||||||
|
},
|
||||||
|
"linker": {
|
||||||
|
"$outputTaskExcludes": [
|
||||||
|
".bin"
|
||||||
|
],
|
||||||
|
"output-format": "elf",
|
||||||
|
"auto-search-runtime-lib": true,
|
||||||
|
"perform-cpp-virtual-func-elimination": "enable",
|
||||||
|
"config-defines": [],
|
||||||
|
"LIB_FLAGS": [],
|
||||||
|
"misc-controls": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"version": "3.6"
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
###########################################################
|
||||||
|
# project environment variables
|
||||||
|
###########################################################
|
||||||
|
|
||||||
|
PROJ_NAME = Project
|
||||||
|
PROJ_PATH = d:\git\newPtz\EWARM\Project.ewp
|
||||||
|
PROJ_DIR = ..
|
||||||
|
PROJ_FNAME = Project.ewp
|
|
@ -0,0 +1,20 @@
|
||||||
|
##########################################################################################
|
||||||
|
# Append Compiler Options For Source Files
|
||||||
|
##########################################################################################
|
||||||
|
|
||||||
|
# syntax:
|
||||||
|
# <your pattern>: <compiler options>
|
||||||
|
# For get pattern syntax, please refer to: https://www.npmjs.com/package/micromatch
|
||||||
|
#
|
||||||
|
# examples:
|
||||||
|
# 'main.cpp': --cpp11 -Og ...
|
||||||
|
# 'src/*.c': -gnu -O2 ...
|
||||||
|
# 'src/lib/**/*.cpp': --cpp11 -Os ...
|
||||||
|
# '!Application/*.c': -O0
|
||||||
|
# '**/*.c': -O2 -gnu ...
|
||||||
|
|
||||||
|
version: "2.1"
|
||||||
|
options:
|
||||||
|
Debug:
|
||||||
|
files: {}
|
||||||
|
virtualPathFiles: {}
|
|
@ -0,0 +1,15 @@
|
||||||
|
# dot files
|
||||||
|
/.vscode/launch.json
|
||||||
|
/.settings
|
||||||
|
/.eide/log
|
||||||
|
/.eide.usr.ctx.json
|
||||||
|
|
||||||
|
# project out
|
||||||
|
/build
|
||||||
|
/bin
|
||||||
|
/obj
|
||||||
|
/out
|
||||||
|
|
||||||
|
# eide template
|
||||||
|
*.ept
|
||||||
|
*.eide-template
|
|
@ -0,0 +1,40 @@
|
||||||
|
{
|
||||||
|
"version": "2.0.0",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"label": "build",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "${command:eide.project.build}",
|
||||||
|
"group": "build",
|
||||||
|
"problemMatcher": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "flash",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "${command:eide.project.uploadToDevice}",
|
||||||
|
"group": "build",
|
||||||
|
"problemMatcher": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "build and flash",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "${command:eide.project.buildAndFlash}",
|
||||||
|
"group": "build",
|
||||||
|
"problemMatcher": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "rebuild",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "${command:eide.project.rebuild}",
|
||||||
|
"group": "build",
|
||||||
|
"problemMatcher": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "clean",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "${command:eide.project.clean}",
|
||||||
|
"group": "build",
|
||||||
|
"problemMatcher": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
{
|
||||||
|
"folders": [
|
||||||
|
{
|
||||||
|
"path": "."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"settings": {
|
||||||
|
"terminal.integrated.shellIntegration.enabled": false,
|
||||||
|
"clangd.arguments": [
|
||||||
|
"--header-insertion=never"
|
||||||
|
],
|
||||||
|
"files.autoGuessEncoding": true,
|
||||||
|
"C_Cpp.default.configurationProvider": "cl.eide",
|
||||||
|
"C_Cpp.errorSquiggles": "disabled",
|
||||||
|
"files.associations": {
|
||||||
|
".eideignore": "ignore",
|
||||||
|
"*.a51": "a51",
|
||||||
|
"*.h": "c",
|
||||||
|
"*.c": "c",
|
||||||
|
"*.hxx": "cpp",
|
||||||
|
"*.hpp": "cpp",
|
||||||
|
"*.c++": "cpp",
|
||||||
|
"*.cpp": "cpp",
|
||||||
|
"*.cxx": "cpp",
|
||||||
|
"*.cc": "cpp"
|
||||||
|
},
|
||||||
|
"[yaml]": {
|
||||||
|
"editor.insertSpaces": true,
|
||||||
|
"editor.tabSize": 4,
|
||||||
|
"editor.autoIndent": "advanced"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"extensions": {
|
||||||
|
"recommendations": [
|
||||||
|
"cl.eide",
|
||||||
|
"keroc.hex-fmt",
|
||||||
|
"xiaoyongdong.srecord",
|
||||||
|
"hars.cppsnippets",
|
||||||
|
"zixuanwang.linkerscript",
|
||||||
|
"redhat.vscode-yaml",
|
||||||
|
"IBM.output-colorizer",
|
||||||
|
"cschlosser.doxdocgen",
|
||||||
|
"ms-vscode.vscode-serial-monitor",
|
||||||
|
"dan-c-underwood.arm",
|
||||||
|
"marus25.cortex-debug"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
|
@ -58,7 +58,8 @@
|
||||||
|
|
||||||
/* define value of high speed crystal oscillator (HXTAL) in Hz */
|
/* define value of high speed crystal oscillator (HXTAL) in Hz */
|
||||||
#if !defined (HXTAL_VALUE)
|
#if !defined (HXTAL_VALUE)
|
||||||
#define HXTAL_VALUE ((uint32_t)25000000)
|
// #define HXTAL_VALUE ((uint32_t)25000000)
|
||||||
|
#define HXTAL_VALUE ((uint32_t)8000000)
|
||||||
#endif /* high speed crystal oscillator value */
|
#endif /* high speed crystal oscillator value */
|
||||||
|
|
||||||
/* define startup timeout value of high speed crystal oscillator (HXTAL) */
|
/* define startup timeout value of high speed crystal oscillator (HXTAL) */
|
||||||
|
|
|
@ -36,13 +36,26 @@ OF SUCH DAMAGE.
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "rtthread.h"
|
#include "rtthread.h"
|
||||||
#include "rtservice.h"
|
#include "rtservice.h"
|
||||||
#include <stdio.h> // FILE 类是一个结构体,在 stdio.h 头文件中
|
|
||||||
#include "drv_adc.h"
|
#include "drv_adc.h"
|
||||||
|
#include "mb85rc64.h"
|
||||||
|
|
||||||
|
|
||||||
float voltage;
|
float voltage;
|
||||||
float current;
|
float current;
|
||||||
float current_origin;
|
float current_origin;
|
||||||
float adc_value;
|
float adc_value;
|
||||||
|
float tmp;
|
||||||
|
char tiedian_id[3]={0};
|
||||||
|
|
||||||
|
typedef struct _MB85TEST_
|
||||||
|
{
|
||||||
|
char ttt;
|
||||||
|
float ggg;
|
||||||
|
}MB85TEST;
|
||||||
|
|
||||||
|
MB85TEST ttest;
|
||||||
|
|
||||||
|
#define MB85TEST_ADD 0x0400
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\brief main function
|
\brief main function
|
||||||
|
@ -55,16 +68,39 @@ int main(void)
|
||||||
// RT-Thread 内核初始化等操作...
|
// RT-Thread 内核初始化等操作...
|
||||||
|
|
||||||
// 其他应用程序初始化代码...
|
// 其他应用程序初始化代码...
|
||||||
init_data_collect_module();
|
adc_config();
|
||||||
|
temp75_gpio_init();
|
||||||
|
//测试mb铁电读写
|
||||||
|
memset(&ttest, 0, sizeof(ttest));
|
||||||
|
// mb85rc64_page_write();
|
||||||
|
mb85rc64_add_read(MB85TEST_ADD, (unsigned char *)&ttest, sizeof(ttest));
|
||||||
|
|
||||||
|
ttest.ttt += 3;
|
||||||
|
ttest.ggg /= 18;
|
||||||
|
mb85rc64_page_write(MB85TEST_ADD, (unsigned char *)&ttest, sizeof(ttest));
|
||||||
|
|
||||||
// 进入主循环或启动其他任务
|
// 进入主循环或启动其他任务
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
// voltage = ptz_Voltage_collect_adc1_task();
|
|
||||||
// current = ptz_Current_collect_adc1_task();
|
voltage = ptz_Voltage_collect_adc1_task();
|
||||||
adc_value = ptz_adc1_collect_task();
|
|
||||||
|
|
||||||
// current_origin = current*0.132 + 3.3/2;
|
// current_origin = current*0.132 + 3.3/2;
|
||||||
rt_thread_mdelay(500);
|
rt_thread_mdelay(500);
|
||||||
|
|
||||||
|
current = ptz_Current_collect_adc1_task();
|
||||||
|
|
||||||
|
rt_thread_mdelay(500);
|
||||||
|
|
||||||
|
tmp = ptz_temperature_collect_tmp75_task();
|
||||||
|
|
||||||
|
//测试mb铁电读写
|
||||||
|
read_mb_id((uint8_t*)&tiedian_id);//读取铁电ID
|
||||||
|
|
||||||
|
memset(&ttest, 0, sizeof(ttest));
|
||||||
|
// mb85rc64_page_write();
|
||||||
|
mb85rc64_add_read(MB85TEST_ADD, (unsigned char *)&ttest, sizeof(ttest));
|
||||||
|
|
||||||
// 主循环代码...
|
// 主循环代码...
|
||||||
}
|
}
|
||||||
}
|
}
|
Binary file not shown.
After Width: | Height: | Size: 378 KiB |
|
@ -0,0 +1,23 @@
|
||||||
|
// #include "delay_us.h"
|
||||||
|
// #include "rtthread.h"
|
||||||
|
// #include <core_cm4.h>
|
||||||
|
// #include "gd32f4xx_gpio.h"
|
||||||
|
|
||||||
|
// /*
|
||||||
|
// @ brief 延时函数
|
||||||
|
// @ param
|
||||||
|
// @ return
|
||||||
|
// @ note 2022-5-23
|
||||||
|
// */
|
||||||
|
// static void delay_us(int us)
|
||||||
|
// {
|
||||||
|
// rt_uint32_t start, now, delta, reload, us_tick;
|
||||||
|
// start = SysTick->VAL;
|
||||||
|
// reload = SysTick->LOAD;
|
||||||
|
// us_tick = SystemCoreClock / 1000000UL;
|
||||||
|
// do
|
||||||
|
// {
|
||||||
|
// now = SysTick->VAL;
|
||||||
|
// delta = start > now ? start - now : reload + start - now;
|
||||||
|
// } while (delta < us_tick * us);
|
||||||
|
// }
|
|
@ -0,0 +1,8 @@
|
||||||
|
// #ifndef __TMP75_H_
|
||||||
|
// #define __TMP75_H_
|
||||||
|
|
||||||
|
|
||||||
|
// static void delay_us(int us);
|
||||||
|
|
||||||
|
|
||||||
|
// #endif
|
|
@ -1,4 +1,18 @@
|
||||||
|
/************************************************************
|
||||||
|
Copyright (C), 2025, cerlink Tech. Co., Ltd.
|
||||||
|
FileName: test.cpp
|
||||||
|
Author: dufresne Version : 1.0 Date:2025.09.15
|
||||||
|
Description: // 模块描述
|
||||||
|
Version: // 版本信息
|
||||||
|
Function List: // 主要函数及其功能
|
||||||
|
1. -------
|
||||||
|
History: // 历史修改记录
|
||||||
|
<author> <time> <version > <desc>
|
||||||
|
David 96/10/12 1.0 build this moudle
|
||||||
|
***********************************************************/
|
||||||
|
|
||||||
#include "drv_adc.h"
|
#include "drv_adc.h"
|
||||||
|
#include "tmp75.h"
|
||||||
#include "stdlib.h"
|
#include "stdlib.h"
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
#include "gd32f4xx.h"
|
#include "gd32f4xx.h"
|
||||||
|
@ -7,58 +21,18 @@
|
||||||
#include "rtthread.h"
|
#include "rtthread.h"
|
||||||
|
|
||||||
|
|
||||||
|
void adc_config(void)
|
||||||
void init_data_collect_module(void)
|
|
||||||
{
|
|
||||||
adc_gpio_config();
|
|
||||||
adc_config();
|
|
||||||
}
|
|
||||||
|
|
||||||
void adc_gpio_config(void)
|
|
||||||
{
|
{
|
||||||
/* 启用GPIOA时钟 */
|
/* 启用GPIOA时钟 */
|
||||||
rcu_periph_clock_enable(RCU_GPIOC);
|
rcu_periph_clock_enable(RCU_GPIOC);
|
||||||
/* 启用ADC0时钟 */
|
/* 启用ADC0时钟 */
|
||||||
rcu_periph_clock_enable(RCU_ADC1);
|
rcu_periph_clock_enable(RCU_ADC1);
|
||||||
|
|
||||||
adc_clock_config(ADC_ADCCK_PCLK2_DIV4);
|
|
||||||
|
|
||||||
|
|
||||||
/* 配置ADC引脚为模拟输入模式 */
|
|
||||||
gpio_mode_set(ADC_GPIO_PORT, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, VOLTAGE_ADC_PIN);
|
|
||||||
gpio_mode_set(ADC_GPIO_PORT, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, CURRENT_ADC_PIN);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void adc_config(void)
|
|
||||||
{
|
|
||||||
// 复位ADC配置(可选,但建议初始化时做一次)
|
// 复位ADC配置(可选,但建议初始化时做一次)
|
||||||
adc_deinit();
|
adc_deinit();
|
||||||
|
|
||||||
// 配置数据对齐方式为右对齐
|
// adc_clock_config(ADC_ADCCK_PCLK2_DIV4);
|
||||||
adc_data_alignment_config(ADCX, ADC_DATAALIGN_RIGHT);
|
|
||||||
|
|
||||||
// 配置ADC分辨率:12位
|
|
||||||
adc_resolution_config(ADCX, ADC_RESOLUTION_12B);
|
|
||||||
|
|
||||||
/* ########## 设置转换通道序列 ########## */
|
|
||||||
// 配置规则序列的长度:2个通道
|
|
||||||
adc_channel_length_config(ADCX, ADC_ROUTINE_CHANNEL, ADC_CHANNEL_NUM);
|
|
||||||
|
|
||||||
// 配置规则序列:序号0是电压通道,序号1是电流通道
|
|
||||||
adc_routine_channel_config(ADCX, 0, VOLTAGE_ADC_CHANNEL, ADC_SAMPLETIME_480);
|
|
||||||
adc_routine_channel_config(ADCX, 1, CURRENT_ADC_CHANNEL, ADC_SAMPLETIME_480);
|
|
||||||
|
|
||||||
|
|
||||||
// 打开扫描模式
|
|
||||||
adc_special_function_config(ADCX, ADC_SCAN_MODE, ENABLE);
|
|
||||||
|
|
||||||
// 禁止连续模式 -> 单次转换模式
|
|
||||||
adc_special_function_config(ADCX, ADC_CONTINUOUS_MODE, ENABLE);
|
|
||||||
|
|
||||||
// 使能外部触发:这里使用软件触发,所以先禁用硬件触发
|
|
||||||
adc_external_trigger_config(ADCX, ADC_ROUTINE_CHANNEL, DISABLE);
|
|
||||||
|
|
||||||
// 开启ADC
|
// 开启ADC
|
||||||
adc_enable(ADCX);
|
adc_enable(ADCX);
|
||||||
|
@ -69,19 +43,47 @@ void adc_config(void)
|
||||||
// 执行ADC自校准
|
// 执行ADC自校准
|
||||||
adc_calibration_enable(ADCX);
|
adc_calibration_enable(ADCX);
|
||||||
|
|
||||||
// 软件触发使能
|
adc_clock_config(ADC_ADCCK_PCLK2_DIV4);
|
||||||
adc_software_trigger_enable(ADCX, ADC_ROUTINE_CHANNEL);
|
|
||||||
|
/* 配置ADC引脚为模拟输入模式 */
|
||||||
|
gpio_mode_set(ADC_GPIO_PORT, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, VOLTAGE_ADC_PIN);
|
||||||
|
gpio_mode_set(ADC_GPIO_PORT, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, CURRENT_ADC_PIN);
|
||||||
|
|
||||||
|
// 配置数据对齐方式为右对齐
|
||||||
|
adc_data_alignment_config(ADCX, ADC_DATAALIGN_RIGHT);
|
||||||
|
|
||||||
|
// 配置ADC分辨率:12位
|
||||||
|
adc_resolution_config(ADCX, ADC_RESOLUTION_12B);
|
||||||
|
|
||||||
|
// 打开扫描模式
|
||||||
|
adc_special_function_config(ADCX, ADC_SCAN_MODE, ENABLE);
|
||||||
|
|
||||||
|
// 禁止连续模式 -> 单次转换模式
|
||||||
|
adc_special_function_config(ADCX, ADC_CONTINUOUS_MODE, DISABLE);
|
||||||
|
|
||||||
|
/* ########## 设置转换通道序列 ########## */
|
||||||
|
// 配置规则序列的长度:1个通道
|
||||||
|
adc_channel_length_config(ADCX, ADC_ROUTINE_CHANNEL, ADC_CHANNEL_NUM);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// adc电压采集
|
||||||
// adc采集
|
float ptz_Voltage_collect_adc1_task()
|
||||||
float ptz_adc1_collect_task()
|
|
||||||
{
|
{
|
||||||
// static float adc1_v[LB_TIMES];
|
// 配置规则序列:序号0是电压通道,序号1是电流通道
|
||||||
// static float curadc1_out;
|
adc_routine_channel_config(ADCX, 0, VOLTAGE_ADC_CHANNEL, ADC_SAMPLETIME_480);
|
||||||
// static uint8_t adc1_num = 0;
|
|
||||||
|
// 使能外部触发:这里使用软件触发,所以先禁用硬件触发
|
||||||
|
adc_external_trigger_config(ADCX, ADC_ROUTINE_CHANNEL, DISABLE);
|
||||||
|
// 软件触发使能
|
||||||
|
adc_software_trigger_enable(ADCX, ADC_ROUTINE_CHANNEL);
|
||||||
|
|
||||||
|
|
||||||
|
static float adc1_v[LB_V_TIMES];
|
||||||
|
static float curadc1_out_v;
|
||||||
|
static uint8_t adc1_v_num;
|
||||||
int j,k;
|
int j,k;
|
||||||
float tem;
|
float tem;
|
||||||
float curadc1;
|
float curadc1;
|
||||||
|
@ -90,89 +92,130 @@ float ptz_adc1_collect_task()
|
||||||
while(adc_flag_get(ADCX, ADC_FLAG_EOC) == RESET); // 等待转换结束
|
while(adc_flag_get(ADCX, ADC_FLAG_EOC) == RESET); // 等待转换结束
|
||||||
value_V = adc_routine_data_read(ADCX); // 读取规则组数据寄存器
|
value_V = adc_routine_data_read(ADCX); // 读取规则组数据寄存器
|
||||||
|
|
||||||
// ... 后面的中位值平均滤波处理保持不变 ...
|
|
||||||
// *11,硬件需要
|
|
||||||
// adc1_v[adc1_num] = (float)value_V / 4096.0 * 3.3; // 间接测量,11倍分压/放大
|
|
||||||
curadc1 = (float)value_V / 4095.0 * 3.3; // 间接测量,11倍分压/放大
|
|
||||||
|
|
||||||
// ...
|
|
||||||
|
|
||||||
// adc1_num++;
|
|
||||||
// if(adc1_num >= LB_TIMES)
|
|
||||||
// {
|
|
||||||
// adc1_num = 0;
|
|
||||||
// for(j = 0; j < LB_TIMES-1; j++)//采样值由小到大排列
|
|
||||||
// {
|
|
||||||
// for(k = 0; k < LB_TIMES-j-1; k++)
|
|
||||||
// {
|
|
||||||
// if(adc1_v[k] > adc1_v[k+1])
|
|
||||||
// {
|
|
||||||
// tem = adc1_v[k];
|
|
||||||
// adc1_v[k] = adc1_v[k+1];
|
|
||||||
// adc1_v[k+1] = tem;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// for(uint8_t i = 1; i < LB_TIMES - 1; i++)
|
|
||||||
// {
|
|
||||||
// curadc1 = curadc1 + adc1_v[i];
|
|
||||||
// }
|
|
||||||
// curadc1 = curadc1 /((float)(LB_TIMES - 2));//去掉一个最大值和一个最小值求平均值
|
|
||||||
// // g_ptz.Voltage = curadc1;
|
|
||||||
// memset(adc1_v, 0, sizeof(adc1_v));//adc1_v 快速清零
|
|
||||||
// curadc1_out = curadc1;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// return curadc1_out;
|
/* 间接测量,11倍分压/放大 */
|
||||||
return curadc1;
|
adc1_v[adc1_v_num] = (float)value_V / 4095.0 * 3.3;
|
||||||
|
|
||||||
|
adc1_v_num++;
|
||||||
|
if(adc1_v_num >= LB_V_TIMES)
|
||||||
|
{
|
||||||
|
adc1_v_num = 0;
|
||||||
|
for(j = 0; j < LB_V_TIMES-1; j++)//采样值由小到大排列
|
||||||
|
{
|
||||||
|
for(k = 0; k < LB_V_TIMES-j-1; k++)
|
||||||
|
{
|
||||||
|
if(adc1_v[k] > adc1_v[k+1])
|
||||||
|
{
|
||||||
|
tem = adc1_v[k];
|
||||||
|
adc1_v[k] = adc1_v[k+1];
|
||||||
|
adc1_v[k+1] = tem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(uint8_t i = 1; i < LB_V_TIMES - 1; i++)
|
||||||
|
{
|
||||||
|
curadc1 = curadc1 + adc1_v[i];
|
||||||
|
}
|
||||||
|
curadc1 = curadc1 /((float)(LB_V_TIMES - 2));//去掉一个最大值和一个最小值求平均值
|
||||||
|
// g_ptz.Voltage = curadc1;
|
||||||
|
memset(adc1_v, 0, sizeof(adc1_v));//adc1_v 快速清零
|
||||||
|
curadc1_out_v = curadc1;
|
||||||
|
}
|
||||||
|
return curadc1_out_v;
|
||||||
}
|
}
|
||||||
|
|
||||||
// //电流采集
|
|
||||||
// float ptz_Current_collect_adc1_task()
|
|
||||||
// {
|
|
||||||
// static float adc1_i[LB_TIMES];
|
|
||||||
// static float curadc0_out;
|
|
||||||
// static uint8_t adc0_num;
|
|
||||||
// int j,k;
|
|
||||||
// float tem;
|
|
||||||
// float curadc0;
|
|
||||||
// uint16_t value_I;
|
|
||||||
|
|
||||||
// adc_software_trigger_enable(ADCX,ADC_ROUTINE_CHANNEL);
|
// adc电流采集
|
||||||
// // adc_software_trigger_enable(ADCX,ADC_INSERTED_CHANNEL);
|
float ptz_Current_collect_adc1_task()
|
||||||
|
{
|
||||||
// // while(adc_flag_get(ADCX, ADC_FLAG_EOC) == RESET); // 等待转换结束
|
// 配置规则序列:序号0是电压通道,序号1是电流通道
|
||||||
|
adc_routine_channel_config(ADCX, 0, CURRENT_ADC_CHANNEL, ADC_SAMPLETIME_480);
|
||||||
|
|
||||||
// value_I = adc_routine_data_read(ADCX); // 读取规则组数据寄存器
|
// 使能外部触发:这里使用软件触发,所以先禁用硬件触发
|
||||||
// // value_I = adc_inserted_data_read(ADCX, CURRENT_ADC_CHANNEL); // 读取规则组数据寄存器
|
adc_external_trigger_config(ADCX, ADC_ROUTINE_CHANNEL, DISABLE);
|
||||||
|
// 软件触发使能
|
||||||
// adc1_i[adc0_num] = (((float)value_I / 4095.0 * 3.3)-3.3/2) / 0.132;//(float)value_I;//
|
adc_software_trigger_enable(ADCX, ADC_ROUTINE_CHANNEL);
|
||||||
|
|
||||||
// adc0_num ++;
|
|
||||||
// if(adc0_num >= LB_TIMES)
|
|
||||||
// {
|
|
||||||
// adc0_num = 0;
|
|
||||||
// for(j = 0; j < LB_TIMES-1; j++)//采样值由小到大排列
|
|
||||||
// {
|
|
||||||
// for(k = 0; k < LB_TIMES-j-1; k++)
|
|
||||||
// {
|
|
||||||
// if(adc1_i[k] > adc1_i[k+1])
|
|
||||||
// {
|
|
||||||
// tem = adc1_i[k];
|
|
||||||
// adc1_i[k] = adc1_i[k+1];
|
|
||||||
// adc1_i[k+1] = tem;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// for(uint8_t i = 1; i < LB_TIMES - 1; i++)
|
|
||||||
// {
|
|
||||||
// curadc0 = curadc0 + adc1_i[i];
|
|
||||||
// }
|
|
||||||
// curadc0 = curadc0 /((float)(LB_TIMES - 2));//去掉一个最大值和一个最小值求平均值
|
|
||||||
// memset(adc1_i, 0, sizeof(adc1_i));
|
|
||||||
// curadc0_out = curadc0;
|
|
||||||
// }
|
|
||||||
// return curadc0_out;
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
|
static float adc1_i[LB_I_TIMES];
|
||||||
|
static float curadc1_out_i;
|
||||||
|
static uint8_t adc1_i_num;
|
||||||
|
int j,k;
|
||||||
|
float tem;
|
||||||
|
float curadc1;
|
||||||
|
uint16_t value_I = 0;
|
||||||
|
|
||||||
|
while(adc_flag_get(ADCX, ADC_FLAG_EOC) == RESET); // 等待转换结束
|
||||||
|
value_I = adc_routine_data_read(ADCX); // 读取规则组数据寄存器
|
||||||
|
|
||||||
|
/* 间接测量,11倍分压/放大 */
|
||||||
|
adc1_i[adc1_i_num] = (((float)value_I / 4096.0 * 3.3) - 3.3 / 2) / 0.132;
|
||||||
|
|
||||||
|
adc1_i_num++;
|
||||||
|
if(adc1_i_num >= LB_I_TIMES)
|
||||||
|
{
|
||||||
|
adc1_i_num = 0;
|
||||||
|
for(j = 0; j < LB_I_TIMES-1; j++)//采样值由小到大排列
|
||||||
|
{
|
||||||
|
for(k = 0; k < LB_I_TIMES-j-1; k++)
|
||||||
|
{
|
||||||
|
if(adc1_i[k] > adc1_i[k+1])
|
||||||
|
{
|
||||||
|
tem = adc1_i[k];
|
||||||
|
adc1_i[k] = adc1_i[k+1];
|
||||||
|
adc1_i[k+1] = tem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(uint8_t i = 1; i < LB_I_TIMES - 1; i++)
|
||||||
|
{
|
||||||
|
curadc1 = curadc1 + adc1_i[i];
|
||||||
|
}
|
||||||
|
curadc1 = curadc1 /((float)(LB_I_TIMES - 2));//去掉一个最大值和一个最小值求平均值
|
||||||
|
// g_ptz.Voltage = curadc1;
|
||||||
|
memset(adc1_i, 0, sizeof(adc1_i));//adc1_i 快速清零
|
||||||
|
curadc1_out_i = curadc1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return curadc1_out_i;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//温度采集
|
||||||
|
float ptz_temperature_collect_tmp75_task()
|
||||||
|
{
|
||||||
|
static float tmp75[5];
|
||||||
|
static unsigned char tmp75_num;
|
||||||
|
static float curtmp75_out;
|
||||||
|
float curtmp75;
|
||||||
|
float tem;
|
||||||
|
int j,k;
|
||||||
|
tmp75[tmp75_num] = tmp75_read_temp();
|
||||||
|
tmp75_num ++;
|
||||||
|
|
||||||
|
if(tmp75_num >= LB_T_TIMES)
|
||||||
|
{
|
||||||
|
tmp75_num = 0;
|
||||||
|
for(j = 0; j < LB_T_TIMES-1; j++)//采样值由小到大排列
|
||||||
|
{
|
||||||
|
for(k = 0; k < LB_T_TIMES-j-1; k++)
|
||||||
|
{
|
||||||
|
if(tmp75[k] > tmp75[k+1])
|
||||||
|
{
|
||||||
|
tem = tmp75[k];
|
||||||
|
tmp75[k] = tmp75[k+1];
|
||||||
|
tmp75[k+1] = tem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(uint8_t i = 1; i < LB_T_TIMES - 1; i++)
|
||||||
|
{
|
||||||
|
curtmp75 = curtmp75 + tmp75[i];//去掉一个最大值和一个最小值
|
||||||
|
}
|
||||||
|
curtmp75 = curtmp75 / ((float)(LB_T_TIMES - 2));
|
||||||
|
curtmp75_out = curtmp75;
|
||||||
|
memset(tmp75, 0, sizeof(tmp75));
|
||||||
|
}
|
||||||
|
return curtmp75_out;
|
||||||
|
}
|
||||||
|
|
|
@ -8,16 +8,15 @@
|
||||||
#define ADC_GPIO_PORT GPIOC
|
#define ADC_GPIO_PORT GPIOC
|
||||||
#define VOLTAGE_ADC_PIN GPIO_PIN_2
|
#define VOLTAGE_ADC_PIN GPIO_PIN_2
|
||||||
#define CURRENT_ADC_PIN GPIO_PIN_3
|
#define CURRENT_ADC_PIN GPIO_PIN_3
|
||||||
#define ADC_CHANNEL_NUM 2 // 规则组配置规则序列的通道:2个通道
|
#define ADC_CHANNEL_NUM 1 // 规则组配置规则序列的通道:2个通道
|
||||||
#define LB_TIMES 5
|
#define LB_V_TIMES 7
|
||||||
|
#define LB_I_TIMES 12
|
||||||
|
#define LB_T_TIMES 7
|
||||||
|
|
||||||
// float ptz_Voltage_collect_adc1_task();
|
|
||||||
// float ptz_Current_collect_adc1_task();
|
|
||||||
float ptz_adc1_collect_task();
|
|
||||||
void adc_gpio_config(void);
|
|
||||||
void adc_config(void);
|
void adc_config(void);
|
||||||
void init_data_collect_module(void);
|
float ptz_Voltage_collect_adc1_task();
|
||||||
|
float ptz_Current_collect_adc1_task();
|
||||||
|
float ptz_temperature_collect_tmp75_task();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,342 @@
|
||||||
|
///Copyright (c) 2022, 四川汇源光通信有限公司
|
||||||
|
///All rights reserved.
|
||||||
|
///@file mb85rc64.h
|
||||||
|
///@brief mb85rc64驱动程序 铁电存储器
|
||||||
|
///
|
||||||
|
///@details
|
||||||
|
///@note
|
||||||
|
///@author lqc
|
||||||
|
///@date 2022/05/26
|
||||||
|
///
|
||||||
|
///@version v1.0 2022/05/26 初始版本
|
||||||
|
|
||||||
|
#include "mb85rc64.h"
|
||||||
|
#include "rtthread.h"
|
||||||
|
#include <core_cm4.h>
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
@ brief 延时函数
|
||||||
|
@ param
|
||||||
|
@ return
|
||||||
|
@ note 2022-5-23
|
||||||
|
*/
|
||||||
|
static void delay_us(int us)
|
||||||
|
{
|
||||||
|
rt_thread_udelay(us);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@ brief 芯片初始化
|
||||||
|
@ param
|
||||||
|
@ return
|
||||||
|
@ note 2022-05-26
|
||||||
|
*/
|
||||||
|
void mb85rc64_gpio_init()
|
||||||
|
{
|
||||||
|
//配置引脚时钟
|
||||||
|
rcu_periph_clock_enable(RCU_GPIOB);
|
||||||
|
//设置引脚为输出模式:PB6
|
||||||
|
gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_6);
|
||||||
|
gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_6);
|
||||||
|
|
||||||
|
//设置引脚PB7输出模式
|
||||||
|
gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_7);
|
||||||
|
gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7);
|
||||||
|
|
||||||
|
MB85RC64_SCL_HIGH;
|
||||||
|
MB85RC64_SDA_HIGH;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@ brief 设置SDA引脚为输出模式
|
||||||
|
@ param
|
||||||
|
@ return
|
||||||
|
@ note 2022-5-26 lqc
|
||||||
|
*/
|
||||||
|
static void mb85rc64_sda_output()
|
||||||
|
{
|
||||||
|
gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_7);
|
||||||
|
gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7);
|
||||||
|
MB85RC64_SDA_HIGH;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@ brief 设置SDA引脚为输入模式
|
||||||
|
@ param
|
||||||
|
@ return
|
||||||
|
@ note 2022-5-26 lqc
|
||||||
|
*/
|
||||||
|
static void mb85rc64_sda_input()
|
||||||
|
{
|
||||||
|
gpio_mode_set(GPIOB, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, GPIO_PIN_7);
|
||||||
|
gpio_output_options_set(GPIOB, GPIO_PUPD_NONE, GPIO_OSPEED_50MHZ, GPIO_PIN_7);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@ brief I2C start信号
|
||||||
|
@ param
|
||||||
|
@ return
|
||||||
|
@ note 2022-5-25
|
||||||
|
*/
|
||||||
|
static void i2c_start()
|
||||||
|
{
|
||||||
|
MB85RC64_SDA_HIGH;
|
||||||
|
delay_us(5);
|
||||||
|
MB85RC64_SCL_HIGH;
|
||||||
|
delay_us(5);
|
||||||
|
MB85RC64_SDA_LOW;
|
||||||
|
delay_us(4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@ brief I2C stop信号
|
||||||
|
@ param
|
||||||
|
@ return
|
||||||
|
@ note 2022-05-25
|
||||||
|
*/
|
||||||
|
static void i2c_stop()
|
||||||
|
{
|
||||||
|
MB85RC64_SDA_LOW;
|
||||||
|
delay_us(5);
|
||||||
|
MB85RC64_SCL_HIGH;
|
||||||
|
delay_us(5);
|
||||||
|
MB85RC64_SDA_HIGH;
|
||||||
|
delay_us(4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@ brief mb85rc64接收数据产生ACK信号
|
||||||
|
@ param SDA被从设备拉为低电平表示应答
|
||||||
|
@ return
|
||||||
|
@ note 2022-05-26
|
||||||
|
*/
|
||||||
|
static void mb85rc64_ack()
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
mb85rc64_sda_input();
|
||||||
|
delay_us(5);
|
||||||
|
MB85RC64_SCL_HIGH;
|
||||||
|
delay_us(5);
|
||||||
|
while((MB85RC64_SDA_GET) && i<1000)
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
delay_us(5);
|
||||||
|
MB85RC64_SCL_LOW;
|
||||||
|
delay_us(5);
|
||||||
|
mb85rc64_sda_output();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@ brief 主机读取数据发送ACK信号,SDA为低电平
|
||||||
|
@ param SCL下降沿发送
|
||||||
|
@ return
|
||||||
|
@ note 2022-05-26
|
||||||
|
*/
|
||||||
|
static void master_ack()
|
||||||
|
{
|
||||||
|
MB85RC64_SDA_LOW;
|
||||||
|
delay_us(5);
|
||||||
|
MB85RC64_SCL_HIGH;
|
||||||
|
delay_us(5);
|
||||||
|
MB85RC64_SCL_LOW;
|
||||||
|
delay_us(5);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@ brief 主机读取数据完毕,发送no_ack信号,SDA为高电平
|
||||||
|
@ param
|
||||||
|
@ return
|
||||||
|
@ note 2022-05-26
|
||||||
|
*/
|
||||||
|
static void master_no_ack()
|
||||||
|
{
|
||||||
|
MB85RC64_SDA_HIGH;
|
||||||
|
delay_us(5);
|
||||||
|
MB85RC64_SCL_HIGH;
|
||||||
|
delay_us(5);
|
||||||
|
MB85RC64_SCL_LOW;
|
||||||
|
delay_us(5);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@ brief 写一个字节数据
|
||||||
|
@ param
|
||||||
|
@ return
|
||||||
|
@ note 2022-05-26
|
||||||
|
*/
|
||||||
|
static void mb85rc64_write_byte(uint8_t byte)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < 8; i++)
|
||||||
|
{
|
||||||
|
MB85RC64_SCL_LOW;
|
||||||
|
delay_us(5);
|
||||||
|
if(byte & 0x80)
|
||||||
|
{
|
||||||
|
MB85RC64_SDA_HIGH;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MB85RC64_SDA_LOW;
|
||||||
|
}
|
||||||
|
|
||||||
|
MB85RC64_SCL_HIGH;
|
||||||
|
delay_us(5);
|
||||||
|
byte <<= 1;
|
||||||
|
}
|
||||||
|
MB85RC64_SCL_LOW;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@ brief 读一个字节数据
|
||||||
|
@ param
|
||||||
|
@ return
|
||||||
|
@ note 2022-05-26
|
||||||
|
*/
|
||||||
|
static uint8_t mb85rc64_read_byte()
|
||||||
|
{
|
||||||
|
uint8_t value = 0;
|
||||||
|
MB85RC64_SCL_LOW;
|
||||||
|
delay_us(5);
|
||||||
|
mb85rc64_sda_input();
|
||||||
|
|
||||||
|
|
||||||
|
for(int i = 0; i < 8; i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
value <<= 1;
|
||||||
|
MB85RC64_SCL_LOW;
|
||||||
|
delay_us(5);
|
||||||
|
MB85RC64_SCL_HIGH;
|
||||||
|
|
||||||
|
delay_us(5);
|
||||||
|
if(MB85RC64_SDA_GET)
|
||||||
|
{
|
||||||
|
value = value | 0x01;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
value = value & 0xfe;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MB85RC64_SCL_LOW;
|
||||||
|
delay_us(5);
|
||||||
|
mb85rc64_sda_output();
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@ brief 保存数据,页写
|
||||||
|
@ param addr:保存数据的地址,data:需保存的数据,data_len:保存数据的长度
|
||||||
|
@ return
|
||||||
|
@ note 2022-05-27
|
||||||
|
*/
|
||||||
|
char mb85rc64_page_write(unsigned short int addr, unsigned char* data, int data_len)
|
||||||
|
{
|
||||||
|
uint8_t addr_H = 0;
|
||||||
|
uint8_t addr_L = 0;
|
||||||
|
|
||||||
|
addr_H = (addr >> 8) & 0x00ff;
|
||||||
|
addr_L = addr & 0x00ff;
|
||||||
|
//启动信号
|
||||||
|
i2c_start();
|
||||||
|
//写地址,R/W位=0
|
||||||
|
mb85rc64_write_byte(MB85RC64_ADDRESS_WRITE);
|
||||||
|
//ack信号
|
||||||
|
mb85rc64_ack();
|
||||||
|
//写高8位地址
|
||||||
|
mb85rc64_write_byte(addr_H);
|
||||||
|
//ack信号
|
||||||
|
mb85rc64_ack();
|
||||||
|
//写低8位地址
|
||||||
|
mb85rc64_write_byte(addr_L);
|
||||||
|
//ack信号
|
||||||
|
mb85rc64_ack();
|
||||||
|
for(int i = 0; i < data_len; i++)
|
||||||
|
{
|
||||||
|
mb85rc64_write_byte(*data);
|
||||||
|
mb85rc64_ack();
|
||||||
|
data++;
|
||||||
|
}
|
||||||
|
//停止信号
|
||||||
|
i2c_stop();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@ brief 读取数据 ,顺序读取,指定地址,连续接收数据
|
||||||
|
@ param addr :需要读取数据的地址,data:数据, data_len:数据长度
|
||||||
|
@ return
|
||||||
|
@ note 2022-05-27 lqc
|
||||||
|
*/
|
||||||
|
char mb85rc64_add_read(unsigned short int addr, unsigned char *data, int data_len)
|
||||||
|
{
|
||||||
|
uint8_t addr_H = 0;
|
||||||
|
uint8_t addr_L = 0;
|
||||||
|
|
||||||
|
addr_H = (addr >> 8) & 0x00ff;
|
||||||
|
addr_L = addr & 0x00ff;
|
||||||
|
//启动信号
|
||||||
|
i2c_start();
|
||||||
|
//写地址,R/W位为0
|
||||||
|
mb85rc64_write_byte(MB85RC64_ADDRESS_WRITE);
|
||||||
|
//ack信号
|
||||||
|
mb85rc64_ack();
|
||||||
|
//写高8位地址
|
||||||
|
mb85rc64_write_byte(addr_H);
|
||||||
|
//ack信号
|
||||||
|
mb85rc64_ack();
|
||||||
|
//写低8位地址
|
||||||
|
mb85rc64_write_byte(addr_L);
|
||||||
|
//ack信号
|
||||||
|
mb85rc64_ack();
|
||||||
|
|
||||||
|
//启动信号
|
||||||
|
i2c_start();
|
||||||
|
//写地址,R/W为为1,读数据
|
||||||
|
mb85rc64_write_byte(MB85RC64_ADDRESS_READ);
|
||||||
|
//ack信号
|
||||||
|
mb85rc64_ack();
|
||||||
|
for(int i = 0; i < data_len; i++)
|
||||||
|
{
|
||||||
|
//读数据
|
||||||
|
data[i] = mb85rc64_read_byte();
|
||||||
|
if(i == data_len - 1)
|
||||||
|
{
|
||||||
|
master_no_ack();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
master_ack();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//停止信号
|
||||||
|
i2c_stop();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void read_mb_id(uint8_t* buff)
|
||||||
|
{
|
||||||
|
i2c_start();
|
||||||
|
mb85rc64_write_byte(0xf8);
|
||||||
|
mb85rc64_ack();
|
||||||
|
mb85rc64_write_byte(MB85RC64_ADDRESS_WRITE);
|
||||||
|
mb85rc64_ack();
|
||||||
|
i2c_start();
|
||||||
|
mb85rc64_write_byte(0xf9);
|
||||||
|
mb85rc64_ack();
|
||||||
|
for(int i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
//读数据
|
||||||
|
buff[i] = mb85rc64_read_byte();
|
||||||
|
if(i == 3 - 1)
|
||||||
|
{
|
||||||
|
master_no_ack();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
master_ack();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i2c_stop();
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
///Copyright (c) 2022, 四川汇源光通信有限公司
|
||||||
|
///All rights reserved.
|
||||||
|
///@file mb85rc64.h
|
||||||
|
///@brief mb85rc64驱动程序
|
||||||
|
///
|
||||||
|
///@details
|
||||||
|
///@note
|
||||||
|
///@author lqc
|
||||||
|
///@date 2022/05/26
|
||||||
|
///
|
||||||
|
///@version v1.0 2022/05/26 初始版本
|
||||||
|
|
||||||
|
#ifndef __MB85RC64_H_
|
||||||
|
#define __MB85RC64_H_
|
||||||
|
|
||||||
|
#include "gd32f4xx_gpio.h"
|
||||||
|
|
||||||
|
#define MB85RC64_ADDRESS_WRITE 0xA0
|
||||||
|
#define MB85RC64_ADDRESS_READ 0xA1
|
||||||
|
|
||||||
|
#define MB85RC64_SCL_HIGH gpio_bit_set(GPIOB, GPIO_PIN_6)
|
||||||
|
#define MB85RC64_SCL_LOW gpio_bit_reset(GPIOB, GPIO_PIN_6)
|
||||||
|
|
||||||
|
#define MB85RC64_SDA_HIGH gpio_bit_set(GPIOB, GPIO_PIN_7)
|
||||||
|
#define MB85RC64_SDA_LOW gpio_bit_reset(GPIOB, GPIO_PIN_7)
|
||||||
|
#define MB85RC64_SDA_GET gpio_input_bit_get(GPIOB, GPIO_PIN_7)
|
||||||
|
|
||||||
|
//mb85rc64存储地址
|
||||||
|
#define MB85RC64_SAVE_ADDRESS_BEGIN 0x0000
|
||||||
|
|
||||||
|
void mb85rc64_gpio_init();
|
||||||
|
char mb85rc64_page_write(unsigned short int addr, unsigned char* data, int data_len);
|
||||||
|
char mb85rc64_add_read(unsigned short int addr, unsigned char *data, int data_len);
|
||||||
|
void mb85rc64_function_test();
|
||||||
|
void read_mb_id(uint8_t* buff);
|
||||||
|
|
||||||
|
#endif
|
|
@ -17,7 +17,7 @@ GD32F4系列搭载了高性能的12位逐次逼近型(SAR)ADC,提供了非
|
||||||
|
|
||||||
* **工作原理**:ADC完成一次转换序列后,**立即自动重新启动**下一次转换,永不停止,连续不断地进行转换。
|
* **工作原理**:ADC完成一次转换序列后,**立即自动重新启动**下一次转换,永不停止,连续不断地进行转换。
|
||||||
* **触发方式**:通常由**一次软件或硬件触发**来启动这个连续的进程。
|
* **触发方式**:通常由**一次软件或硬件触发**来启动这个连续的进程。
|
||||||
* **特点**:一旦启动,无需干预即可获得连续的数据流,实时性高。但功耗相对较高,因为ADC一直处于工作状态。通常需要与DMA配合使用。
|
* **特点**:一旦启动,无需干预即可获得连续的数据流,实时性高。但**功耗相对较高**,因为ADC一直处于工作状态。通常需要与DMA配合使用。
|
||||||
* **代码逻辑**:`启动 -> (自动循环转换) -> 不断读取数据`
|
* **代码逻辑**:`启动 -> (自动循环转换) -> 不断读取数据`
|
||||||
|
|
||||||
#### 3. 扫描模式 (Scan Mode)
|
#### 3. 扫描模式 (Scan Mode)
|
||||||
|
@ -184,7 +184,6 @@ C1 -->|读取注入组<br>有专用寄存器| A2
|
||||||
|
|
||||||
三者协同工作,共同构成了一个高效、可靠且响应及时的数据采集系统。
|
三者协同工作,共同构成了一个高效、可靠且响应及时的数据采集系统。
|
||||||
|
|
||||||
|
|
||||||
在GD32微控制器的ADC驱动库中,`adc_routine_channel_config`函数用于配置规则组(常规序列)的通道序列。
|
在GD32微控制器的ADC驱动库中,`adc_routine_channel_config`函数用于配置规则组(常规序列)的通道序列。
|
||||||
|
|
||||||
### 🧾 函数原型
|
### 🧾 函数原型
|
||||||
|
@ -216,11 +215,9 @@ void adc_routine_channel_config(uint32_t adc_periph, uint8_t rank, uint8_t chann
|
||||||
|
|
||||||
### 💡 总结
|
### 💡 总结
|
||||||
|
|
||||||
你可以这样理解:
|
可以这样理解:
|
||||||
|
|
||||||
* **`rank`(第二个参数)是“排队号”**:决定通道转换的**顺序**。
|
* **`rank`(第二个参数)是“排队号”**:决定通道转换的**顺序**。
|
||||||
* **`channel`(第三个参数)是“身份证”**:确定转换的**具体是哪个物理通道**。
|
* **`channel`(第三个参数)是“身份证”**:确定转换的**具体是哪个物理通道**。
|
||||||
|
|
||||||
函数的作用就是将特定的物理通道(`channel`)安排到规则组转换序列中的指定位置(`rank`)上。
|
函数的作用就是将特定的物理通道(`channel`)安排到规则组转换序列中的指定位置(`rank`)上。
|
||||||
|
|
||||||
希望这些信息能帮助你更好地理解和使用GD32的ADC功能!
|
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
#include <rtdef.h>
|
#include <rtdef.h>
|
||||||
#include <rtservice.h>
|
#include <rtservice.h>
|
||||||
#include <rtm.h>
|
#include <rtm.h>
|
||||||
|
#include "gd32f4xx_gpio.h"
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
@ -138,6 +140,7 @@ rt_err_t rt_thread_delete(rt_thread_t thread);
|
||||||
rt_err_t rt_thread_yield(void);
|
rt_err_t rt_thread_yield(void);
|
||||||
rt_err_t rt_thread_delay(rt_tick_t tick);
|
rt_err_t rt_thread_delay(rt_tick_t tick);
|
||||||
rt_err_t rt_thread_mdelay(rt_int32_t ms);
|
rt_err_t rt_thread_mdelay(rt_int32_t ms);
|
||||||
|
void rt_thread_udelay(int us);
|
||||||
rt_err_t rt_thread_control(rt_thread_t thread, int cmd, void *arg);
|
rt_err_t rt_thread_control(rt_thread_t thread, int cmd, void *arg);
|
||||||
rt_err_t rt_thread_suspend(rt_thread_t thread);
|
rt_err_t rt_thread_suspend(rt_thread_t thread);
|
||||||
rt_err_t rt_thread_resume(rt_thread_t thread);
|
rt_err_t rt_thread_resume(rt_thread_t thread);
|
||||||
|
|
|
@ -551,6 +551,22 @@ rt_err_t rt_thread_mdelay(rt_int32_t ms)
|
||||||
}
|
}
|
||||||
RTM_EXPORT(rt_thread_mdelay);
|
RTM_EXPORT(rt_thread_mdelay);
|
||||||
|
|
||||||
|
|
||||||
|
void rt_thread_udelay(int us)
|
||||||
|
{
|
||||||
|
rt_uint32_t start, now, delta, reload, us_tick;
|
||||||
|
start = SysTick->VAL;
|
||||||
|
reload = SysTick->LOAD;
|
||||||
|
us_tick = SystemCoreClock / 1000000UL;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
now = SysTick->VAL;
|
||||||
|
delta = start > now ? start - now : reload + start - now;
|
||||||
|
} while (delta < us_tick * us);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function will control thread behaviors according to control command.
|
* This function will control thread behaviors according to control command.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue