[BC2D-POS] initial commit
This commit is contained in:
29
.eide/bc2d-pos.arm.options.gcc.json
Normal file
29
.eide/bc2d-pos.arm.options.gcc.json
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
31
.eide/bc2d-pos.files.options.yml
Normal file
31
.eide/bc2d-pos.files.options.yml
Normal 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
|
||||||
|
|
||||||
@@ -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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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",
|
||||||
|
|||||||
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
@@ -1,3 +1,3 @@
|
|||||||
{
|
{
|
||||||
"sonarlint.pathToCompileCommands": "${workspaceFolder}\\build\\BC2D\\compile_commands.json"
|
"sonarlint.pathToCompileCommands": "${workspaceFolder}\\build\\BC2D-POS\\compile_commands.json"
|
||||||
}
|
}
|
||||||
@@ -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>
|
||||||
@@ -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": {
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -68,10 +68,10 @@
|
|||||||
/* add user code end 0 */
|
/* add user code end 0 */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief main function.
|
* @brief main function.
|
||||||
* @param none
|
* @param none
|
||||||
* @retval none
|
* @retval none
|
||||||
*/
|
*/
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
/* add user code begin 1 */
|
/* add user code begin 1 */
|
||||||
@@ -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 */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user