[BC2D-POS] initial commit

This commit is contained in:
bmy
2024-05-10 10:54:06 +08:00
parent c9da340c46
commit 1c83cbc70a
12 changed files with 155 additions and 50 deletions

View File

@@ -0,0 +1,29 @@
{
"version": 5,
"beforeBuildTasks": [],
"afterBuildTasks": [],
"global": {
"$float-abi-type": "softfp",
"output-debug-info": "enable",
"misc-control": "--specs=nosys.specs --specs=nano.specs"
},
"c/cpp-compiler": {
"language-c": "c11",
"language-cpp": "c++11",
"optimization": "level-debug",
"warnings": "all-warnings",
"one-elf-section-per-function": true,
"one-elf-section-per-data": true,
"C_FLAGS": "",
"CXX_FLAGS": ""
},
"asm-compiler": {
"ASM_FLAGS": ""
},
"linker": {
"output-format": "elf",
"remove-unused-input-sections": true,
"LD_FLAGS": "",
"LIB_FLAGS": "-lm"
}
}

View File

@@ -0,0 +1,31 @@
##########################################################################################
# Append Compiler Options For Source Files
#
# syntax:
# <your matcher expr>: <your compiler command>
#
# examples:
# 'main.cpp': --cpp11 -Og ...
# 'src/*.c': -gnu -O2 ...
# 'src/lib/**/*.cpp': --cpp11 -Os ...
# '!Application/*.c': -O0
# '**/*.c': -O2 -gnu ...
#
# For more syntax, please refer to: https://www.npmjs.com/package/micromatch
#
##########################################################################################
version: '1.0'
#
# for source files with filesystem paths
#
files:
# './test/**/*.c': --c99
#
# for source files with virtual paths
#
virtualPathFiles:
# 'virtual_folder/**/*.c': --c99

View File

@@ -1,24 +0,0 @@
{
"version": 4,
"beforeBuildTasks": [],
"afterBuildTasks": [],
"global": {
"use-microLIB": true,
"output-debug-info": "enable"
},
"c/cpp-compiler": {
"optimization": "level-0",
"one-elf-section-per-function": true,
"c99-mode": true,
"C_FLAGS": "--diag_suppress=1 --diag_suppress=1295",
"CXX_FLAGS": "--diag_suppress=1 --diag_suppress=1295",
"warnings": "all-warnings"
},
"asm-compiler": {},
"linker": {
"output-format": "elf",
"xo-base": "",
"ro-base": "0x08000000",
"rw-base": "0x20000000"
}
}

View File

@@ -1,5 +1,5 @@
{ {
"name": "BC2D", "name": "BC2D-POS",
"type": "ARM", "type": "ARM",
"dependenceList": [], "dependenceList": [],
"srcDirs": [ "srcDirs": [
@@ -89,7 +89,7 @@
"uid": "9d909db3024271625a98879e53e2d396" "uid": "9d909db3024271625a98879e53e2d396"
}, },
"targets": { "targets": {
"BC2D": { "BC2D-POS": {
"excludeList": [], "excludeList": [],
"toolchain": "GCC", "toolchain": "GCC",
"compileConfig": { "compileConfig": {
@@ -131,7 +131,6 @@
"libraries/cmsis/cm4/device_support", "libraries/cmsis/cm4/device_support",
"project/inc", "project/inc",
".cmsis/include", ".cmsis/include",
"project/MDK_V5/RTE/_BC2D",
".eide/deps", ".eide/deps",
"3rd-part/dwt_delay", "3rd-part/dwt_delay",
"3rd-part/PID-Library", "3rd-part/PID-Library",

View File

@@ -1,3 +1,3 @@
{ {
"sonarlint.pathToCompileCommands": "${workspaceFolder}\\build\\BC2D\\compile_commands.json" "sonarlint.pathToCompileCommands": "${workspaceFolder}\\build\\BC2D-POS\\compile_commands.json"
} }

View File

@@ -54,6 +54,13 @@
<ModeSub name="Multi-Channels" value="Encoder_Mode"/> <ModeSub name="Multi-Channels" value="Encoder_Mode"/>
<ModeSub name="Activated" value="TRUE"/> <ModeSub name="Activated" value="TRUE"/>
</Mode> </Mode>
<Parameters>
<ParametersSub name="EncoderMode" value="TMR_ENCODER_MODE_B"/>
<ParametersSub name="IC1Filter" value="7"/>
<ParametersSub name="IC1Filter_Frequency" value="3125000"/>
<ParametersSub name="IC2Filter" value="7"/>
<ParametersSub name="IC2Filter_Frequency" value="3125000"/>
</Parameters>
</TMR2> </TMR2>
<TMR3> <TMR3>
<Mode> <Mode>
@@ -66,7 +73,7 @@
<ModeSub name="Activated" value="TRUE"/> <ModeSub name="Activated" value="TRUE"/>
</Mode> </Mode>
<Parameters> <Parameters>
<ParametersSub name="DividerValue" value="999"/> <ParametersSub name="DividerValue" value="1999"/>
<ParametersSub name="Period" value="1999"/> <ParametersSub name="Period" value="1999"/>
</Parameters> </Parameters>
</TMR4> </TMR4>
@@ -134,8 +141,8 @@
<PinSub pinname="PB6" signalname="GPIO_Input" signaltype="3"/> <PinSub pinname="PB6" signalname="GPIO_Input" signaltype="3"/>
</PINInfo> </PINInfo>
<ProjectInfomation> <ProjectInfomation>
<ProjectName>BC2D</ProjectName> <ProjectName>BC2D-POS</ProjectName>
<ProjectLocation>C:/Users/ForgotDoge/Desktop/BC2024/firmware</ProjectLocation> <ProjectLocation>C:/Users/evan/Desktop/BC2024</ProjectLocation>
<ToolchainIDE>MDK_V5</ToolchainIDE> <ToolchainIDE>MDK_V5</ToolchainIDE>
<KeepUserCode>true</KeepUserCode> <KeepUserCode>true</KeepUserCode>
<MinHeapSize>0x200</MinHeapSize> <MinHeapSize>0x200</MinHeapSize>

View File

@@ -30,7 +30,7 @@
"titleBar.activeBackground": "#1D18AE", "titleBar.activeBackground": "#1D18AE",
"titleBar.activeForeground": "#FAFAFE" "titleBar.activeForeground": "#FAFAFE"
}, },
"EIDE.OpenOCD.ExePath": "D:/Program Files (x86)/at32_OpenOCD_V2.0.2/bin/openocd.exe", "EIDE.OpenOCD.ExePath": "C:/toolchains/openocd-arterytek/bin/openocd.exe",
"cortex-debug.variableUseNaturalFormat": true "cortex-debug.variableUseNaturalFormat": true
}, },
"extensions": { "extensions": {

View File

@@ -16,7 +16,7 @@ uint8_t motion_enable_flag;
void by_motion_set_pwm_m1(int32_t pwm_duty) void by_motion_set_pwm_m1(int32_t pwm_duty)
{ {
pwm_duty = clip_s32(pwm_duty, -449, 449); // 不可以拉满哦 pwm_duty = clip_s32(pwm_duty, -440, 440); // 不可以拉满哦
pwm_duty += 499; pwm_duty += 499;
// 互补 pwm 输出499 为中值 // 互补 pwm 输出499 为中值
@@ -25,7 +25,7 @@ void by_motion_set_pwm_m1(int32_t pwm_duty)
void by_motion_set_pwm_m2(int32_t pwm_duty) void by_motion_set_pwm_m2(int32_t pwm_duty)
{ {
pwm_duty = clip_s32(pwm_duty, -449, 449); // 不可以拉满哦 pwm_duty = clip_s32(pwm_duty, -440, 440); // 不可以拉满哦
pwm_duty += 499; pwm_duty += 499;
// 互补 pwm 输出499 为中值 // 互补 pwm 输出499 为中值
@@ -36,7 +36,7 @@ int16_t by_motion_get_speed_m1(void)
{ {
#define alpha (0.1f) #define alpha (0.1f)
static float last_speed = 0.0f; static float last_speed = 0.0f;
param_m1.real_speed = alpha * last_speed + (1.0f - alpha) * (float)(-1 * (int16_t)tmr_counter_value_get(TMR2)); param_m1.real_speed = alpha * last_speed + (1.0f - alpha) * (float)(+1 * (int16_t)tmr_counter_value_get(TMR2));
last_speed = param_m1.real_speed; last_speed = param_m1.real_speed;
tmr_counter_value_set(TMR2, 0); tmr_counter_value_set(TMR2, 0);
return (int16_t)param_m1.real_speed; return (int16_t)param_m1.real_speed;
@@ -100,13 +100,13 @@ void by_motion_run(void)
{ {
if (motion_enable_flag) { if (motion_enable_flag) {
by_motion_get_speed_m1(); by_motion_get_speed_m1();
by_motion_get_speed_m2(); // by_motion_get_speed_m2();
PID_Compute(&pid_m1); PID_Compute(&pid_m1);
PID_Compute(&pid_m2); // PID_Compute(&pid_m2);
by_motion_set_pwm_m1((int32_t)param_m1.out_pwm); by_motion_set_pwm_m1((int32_t)param_m1.out_pwm);
by_motion_set_pwm_m2((int32_t)param_m2.out_pwm); // by_motion_set_pwm_m2((int32_t)param_m2.out_pwm);
} }
} }

View File

@@ -12,9 +12,9 @@ typedef struct by_motor_param {
float out_pwm; float out_pwm;
} by_motor_param; } by_motor_param;
#define BY_MOTION_DEFAULT_KP_M1 (5.0f) #define BY_MOTION_DEFAULT_KP_M1 (10.0f)
#define BY_MOTION_DEFAULT_KI_M1 (100.0f) #define BY_MOTION_DEFAULT_KI_M1 (80.0f)
#define BY_MOTION_DEFAULT_KD_M1 (0.0f) #define BY_MOTION_DEFAULT_KD_M1 (0.08f)
#define BY_MOTION_DEFAULT_KP_M2 (5.0f) #define BY_MOTION_DEFAULT_KP_M2 (5.0f)
#define BY_MOTION_DEFAULT_KI_M2 (100.0f) #define BY_MOTION_DEFAULT_KI_M2 (100.0f)
#define BY_MOTION_DEFAULT_KD_M2 (0.0f) #define BY_MOTION_DEFAULT_KD_M2 (0.0f)

View File

@@ -55,6 +55,65 @@ extern "C" {
/* add user code end exported macro */ /* add user code end exported macro */
/* add user code begin dma define */
/* user can only modify the dma define value */
//#define DMA1_CHANNEL1_BUFFER_SIZE 0
//#define DMA1_CHANNEL1_MEMORY_BASE_ADDR 0
//#define DMA1_CHANNEL1_PERIPHERAL_BASE_ADDR 0
//#define DMA1_CHANNEL2_BUFFER_SIZE 0
//#define DMA1_CHANNEL2_MEMORY_BASE_ADDR 0
//#define DMA1_CHANNEL2_PERIPHERAL_BASE_ADDR 0
//#define DMA1_CHANNEL3_BUFFER_SIZE 0
//#define DMA1_CHANNEL3_MEMORY_BASE_ADDR 0
//#define DMA1_CHANNEL3_PERIPHERAL_BASE_ADDR 0
//#define DMA1_CHANNEL4_BUFFER_SIZE 0
//#define DMA1_CHANNEL4_MEMORY_BASE_ADDR 0
//#define DMA1_CHANNEL4_PERIPHERAL_BASE_ADDR 0
//#define DMA1_CHANNEL5_BUFFER_SIZE 0
//#define DMA1_CHANNEL5_MEMORY_BASE_ADDR 0
//#define DMA1_CHANNEL5_PERIPHERAL_BASE_ADDR 0
//#define DMA1_CHANNEL6_BUFFER_SIZE 0
//#define DMA1_CHANNEL6_MEMORY_BASE_ADDR 0
//#define DMA1_CHANNEL6_PERIPHERAL_BASE_ADDR 0
//#define DMA1_CHANNEL7_BUFFER_SIZE 0
//#define DMA1_CHANNEL7_MEMORY_BASE_ADDR 0
//#define DMA1_CHANNEL7_PERIPHERAL_BASE_ADDR 0
//#define DMA2_CHANNEL1_BUFFER_SIZE 0
//#define DMA2_CHANNEL1_MEMORY_BASE_ADDR 0
//#define DMA2_CHANNEL1_PERIPHERAL_BASE_ADDR 0
//#define DMA2_CHANNEL2_BUFFER_SIZE 0
//#define DMA2_CHANNEL2_MEMORY_BASE_ADDR 0
//#define DMA2_CHANNEL2_PERIPHERAL_BASE_ADDR 0
//#define DMA2_CHANNEL3_BUFFER_SIZE 0
//#define DMA2_CHANNEL3_MEMORY_BASE_ADDR 0
//#define DMA2_CHANNEL3_PERIPHERAL_BASE_ADDR 0
//#define DMA2_CHANNEL4_BUFFER_SIZE 0
//#define DMA2_CHANNEL4_MEMORY_BASE_ADDR 0
//#define DMA2_CHANNEL4_PERIPHERAL_BASE_ADDR 0
//#define DMA2_CHANNEL5_BUFFER_SIZE 0
//#define DMA2_CHANNEL5_MEMORY_BASE_ADDR 0
//#define DMA2_CHANNEL5_PERIPHERAL_BASE_ADDR 0
//#define DMA2_CHANNEL6_BUFFER_SIZE 0
//#define DMA2_CHANNEL6_MEMORY_BASE_ADDR 0
//#define DMA2_CHANNEL6_PERIPHERAL_BASE_ADDR 0
//#define DMA2_CHANNEL7_BUFFER_SIZE 0
//#define DMA2_CHANNEL7_MEMORY_BASE_ADDR 0
//#define DMA2_CHANNEL7_PERIPHERAL_BASE_ADDR 0
/* add user code end dma define */
/* exported functions ------------------------------------------------------- */ /* exported functions ------------------------------------------------------- */
/* system clock config. */ /* system clock config. */
void wk_system_clock_config(void); void wk_system_clock_config(void);

View File

@@ -461,16 +461,16 @@ void wk_tmr2_init(void)
tmr_input_struct.input_channel_select = TMR_SELECT_CHANNEL_1; tmr_input_struct.input_channel_select = TMR_SELECT_CHANNEL_1;
tmr_input_struct.input_mapped_select = TMR_CC_CHANNEL_MAPPED_DIRECT; tmr_input_struct.input_mapped_select = TMR_CC_CHANNEL_MAPPED_DIRECT;
tmr_input_struct.input_polarity_select = TMR_INPUT_RISING_EDGE; tmr_input_struct.input_polarity_select = TMR_INPUT_RISING_EDGE;
tmr_input_struct.input_filter_value = 0; tmr_input_struct.input_filter_value = 7;
tmr_input_channel_init(TMR2, &tmr_input_struct, TMR_CHANNEL_INPUT_DIV_1); tmr_input_channel_init(TMR2, &tmr_input_struct, TMR_CHANNEL_INPUT_DIV_1);
tmr_input_struct.input_channel_select = TMR_SELECT_CHANNEL_2; tmr_input_struct.input_channel_select = TMR_SELECT_CHANNEL_2;
tmr_input_struct.input_mapped_select = TMR_CC_CHANNEL_MAPPED_DIRECT; tmr_input_struct.input_mapped_select = TMR_CC_CHANNEL_MAPPED_DIRECT;
tmr_input_struct.input_polarity_select = TMR_INPUT_RISING_EDGE; tmr_input_struct.input_polarity_select = TMR_INPUT_RISING_EDGE;
tmr_input_struct.input_filter_value = 0; tmr_input_struct.input_filter_value = 7;
tmr_input_channel_init(TMR2, &tmr_input_struct, TMR_CHANNEL_INPUT_DIV_1); tmr_input_channel_init(TMR2, &tmr_input_struct, TMR_CHANNEL_INPUT_DIV_1);
tmr_encoder_mode_config(TMR2, TMR_ENCODER_MODE_A, TMR_INPUT_RISING_EDGE, TMR_INPUT_RISING_EDGE); tmr_encoder_mode_config(TMR2, TMR_ENCODER_MODE_B, TMR_INPUT_RISING_EDGE, TMR_INPUT_RISING_EDGE);
tmr_counter_enable(TMR2, TRUE); tmr_counter_enable(TMR2, TRUE);
@@ -564,7 +564,7 @@ void wk_tmr4_init(void)
/* add user code end tmr4_init 1 */ /* add user code end tmr4_init 1 */
/* configure counter settings */ /* configure counter settings */
tmr_base_init(TMR4, 1999, 999); tmr_base_init(TMR4, 1999, 1999);
tmr_cnt_dir_set(TMR4, TMR_COUNT_UP); tmr_cnt_dir_set(TMR4, TMR_COUNT_UP);
tmr_clock_source_div_set(TMR4, TMR_CLOCK_DIV1); tmr_clock_source_div_set(TMR4, TMR_CLOCK_DIV1);
tmr_period_buffer_enable(TMR4, FALSE); tmr_period_buffer_enable(TMR4, FALSE);

View File

@@ -124,8 +124,12 @@ int main(void)
LOGI("init done"); LOGI("init done");
/* add user code end 2 */ /* add user code end 2 */
while (1) { while(1)
{
/* add user code begin 3 */ /* add user code begin 3 */
// lwprintf("pwm value: %f\r\n", param_m1.out_pwm);
// lwprintf("mot speed: %f\r\n", param_m1.real_speed);
lwprintf("%f,%f,%f\r\n", param_m1.real_speed, param_m1.target_speed, param_m1.out_pwm);
/* add user code end 3 */ /* add user code end 3 */
} }
} }