Compare commits

...

2 Commits

Author SHA1 Message Date
bmy
1ddec6d054 Merge branch 'main' of http://git.brisky.space/btl143/BC1C-firmware 2024-06-02 17:29:50 +08:00
bmy
0517164e42 feat: 接口更新 2024-06-02 17:01:35 +08:00
7 changed files with 219 additions and 96 deletions

View File

@@ -155,6 +155,24 @@
<CAN2_RX1_IRQHandler>0;0;0</CAN2_RX1_IRQHandler> <CAN2_RX1_IRQHandler>0;0;0</CAN2_RX1_IRQHandler>
<CAN2_SE_IRQHandler>0;0;0</CAN2_SE_IRQHandler> <CAN2_SE_IRQHandler>0;0;0</CAN2_SE_IRQHandler>
</NVIC> </NVIC>
<GPIO>
<Signal SignalName="GPIO_Output" PinName="PC0">
<Parameters name="GPIO_Outputlevel" value="GPIO_OUTPUTLEVEL_HIGH"/>
<Parameters name="GPIO_DriverCapability" value="GPIO_DRIVE_STRENGTH_STRONGER"/>
</Signal>
<Signal SignalName="GPIO_Output" PinName="PC1">
<Parameters name="GPIO_Outputlevel" value="GPIO_OUTPUTLEVEL_HIGH"/>
<Parameters name="GPIO_DriverCapability" value="GPIO_DRIVE_STRENGTH_STRONGER"/>
</Signal>
<Signal SignalName="GPIO_Output" PinName="PC2">
<Parameters name="GPIO_Outputlevel" value="GPIO_OUTPUTLEVEL_HIGH"/>
<Parameters name="GPIO_DriverCapability" value="GPIO_DRIVE_STRENGTH_STRONGER"/>
</Signal>
<Signal SignalName="GPIO_Output" PinName="PC3">
<Parameters name="GPIO_Outputlevel" value="GPIO_OUTPUTLEVEL_HIGH"/>
<Parameters name="GPIO_DriverCapability" value="GPIO_DRIVE_STRENGTH_STRONGER"/>
</Signal>
</GPIO>
<ClockConfiguration> <ClockConfiguration>
<rtcsel>0</rtcsel> <rtcsel>0</rtcsel>
<hext>8.000000</hext> <hext>8.000000</hext>
@@ -214,7 +232,7 @@
</PINInfo> </PINInfo>
<ProjectInfomation> <ProjectInfomation>
<ProjectName>BC1C</ProjectName> <ProjectName>BC1C</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

@@ -25,13 +25,13 @@
"editor.tabSize": 4, "editor.tabSize": 4,
"editor.autoIndent": "advanced" "editor.autoIndent": "advanced"
}, },
"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",
"workbench.colorCustomizations": { "workbench.colorCustomizations": {
"activityBar.background": "#4B2301", "activityBar.background": "#4B2301",
"titleBar.activeBackground": "#693002", "titleBar.activeBackground": "#693002",
"titleBar.activeForeground": "#FFF9F4" "titleBar.activeForeground": "#FFF9F4"
}, },
"cortex-debug.variableUseNaturalFormat": true "cortex-debug.variableUseNaturalFormat": false
}, },
"extensions": { "extensions": {
} }

View File

@@ -3,6 +3,7 @@
#include "lwprintf.h" #include "lwprintf.h"
#include "by_frame.h" #include "by_frame.h"
#include "by_motion.h" #include "by_motion.h"
#include "by_can.h"
void by_messy_init(void) void by_messy_init(void)
{ {
@@ -12,6 +13,9 @@ void by_messy_init(void)
void by_messy_loop(void) void by_messy_loop(void)
{ {
uint8_t cmd = 0; uint8_t cmd = 0;
uint8_t buff_t_u8[8] = {0};
uint16_t buff_t_u16[4] = {0};
float buff_t_f[2] = {0};
uint32_t buff[BY_FRAME_DATA_NUM] = {0}; uint32_t buff[BY_FRAME_DATA_NUM] = {0};
if (!by_frame_parse(&cmd, buff)) { if (!by_frame_parse(&cmd, buff)) {
@@ -57,48 +61,82 @@ void by_messy_loop(void)
case 0x41: // 设置转台 x 轴复位 case 0x41: // 设置转台 x 轴复位
by_frame_send(cmd, buff); // 正确接收后直接返回原文 by_frame_send(cmd, buff); // 正确接收后直接返回原文
buff_t_u8[0] = 0;
buff_t_u8[1] = 1; // 复位模式下速度设置无效
buff_t_f[0] = 0.0;
memcpy(&buff_t_u8[2], &buff_t_f[0], sizeof(buff_t_f[0]));
by_can_send_stdd(0x008, buff_t_u8, 1, 100);
break; break;
case 0x42: // 设置转台 z 轴复位 case 0x42: // 设置转台 z 轴复位
by_frame_send(cmd, buff); // 正确接收后直接返回原文 by_frame_send(cmd, buff); // 正确接收后直接返回原文
buff_t_u8[0] = 0;
buff_t_u8[1] = 5; // 设置复位速度 5
by_can_send_stdd(0x008, buff_t_u8, 1, 100);
break; break;
case 0x43: // 设置转台末端执行器复位 case 0x43: // 设置转台末端执行器复位
by_frame_send(cmd, buff); // 正确接收后直接返回原文 by_frame_send(cmd, buff); // 正确接收后直接返回原文
buff_t_u8[0] = 0;
by_can_send_stdd(0x009, buff_t_u8, 1, 100);
break; break;
case 0x44: // 设置x轴位置 (增量)
case 0x44: // 设置云台 x 轴相对位置 by_frame_send(cmd, buff);
by_frame_send(cmd, buff); // 正确接收后直接返回原文 buff_t_u8[0] = 1; // 增量模式
buff_t_u8[1] = buff[0]; // 拷贝设置速度
memcpy(&buff_t_u8[2], &buff[1], sizeof(float)); // 拷贝设置距离
by_can_send_stdd(0x006, buff_t_u8, 8, 100);
break; break;
case 0x46: // 设置z轴位置 (增量)
case 0x46: // 设置云台 z 轴相对位置 by_frame_send(cmd, buff);
by_frame_send(cmd, buff); // 正确接收后直接返回原文 buff_t_u8[0] = 1; // 增量模式
buff_t_u8[1] = buff[0]; // 拷贝设置速度
memcpy(&buff_t_u8[2], &buff[1], sizeof(float)); // 拷贝设置距离
by_can_send_stdd(0x008, buff_t_u8, 8, 100);
break; break;
case 0x47: // 设置x轴位置 (绝对)
case 0x47: // 设置云台 x 轴绝对位置 by_frame_send(cmd, buff);
by_frame_send(cmd, buff); // 正确接收后直接返回原文 buff_t_u8[0] = 0; // 位置模式
buff_t_u8[1] = buff[0]; // 拷贝设置速度
memcpy(&buff_t_u8[2], &buff[1], sizeof(float)); // 拷贝设置距离
by_can_send_stdd(0x006, buff_t_u8, 8, 100);
break; break;
case 0x49: // 设置z轴位置 (绝对)
case 0x49: // 设置云台 z 轴绝对位置 by_frame_send(cmd, buff);
by_frame_send(cmd, buff); // 正确接收后直接返回原文 buff_t_u8[0] = 0; // 增量模式
buff_t_u8[1] = buff[0]; // 拷贝设置速度
memcpy(&buff_t_u8[2], &buff[1], sizeof(float)); // 拷贝设置距离
by_can_send_stdd(0x008, buff_t_u8, 8, 100);
break; break;
case 0x50: // 设置夹爪摇臂角度
case 0x50: // 设置云台夹爪摇臂位置 by_frame_send(cmd, buff);
by_frame_send(cmd, buff); // 正确接收后直接返回原文 memcpy(buff_t_f, buff, sizeof(float));
buff_t_u16[0] = (int16_t)(buff_t_f[0]);
by_can_send_stdd(0x009, (uint8_t *)&buff_t_u16, 2, 100);
break; break;
case 0x51: // 设置夹爪角度
case 0x51: // 设置云台夹爪位置 by_frame_send(cmd, buff);
by_frame_send(cmd, buff); // 正确接收后直接返回原文 memcpy(buff_t_f, buff, sizeof(float));
buff_t_u16[0] = (int16_t)(buff_t_f[0]);
by_can_send_stdd(0x00A, (uint8_t *)&buff_t_u16, 2, 100);
break; break;
case 0x52: // 设置摄像头角度
case 0x55: // 设置启动测距 (reserve) by_frame_send(cmd, buff);
by_frame_send(cmd, buff); // 正确接收后直接返回原文 memcpy(buff_t_f, buff, sizeof(float));
buff_t_u16[0] = (int16_t)(buff_t_f[0]);
by_can_send_stdd(0x00B, (uint8_t *)&buff_t_u16, 2, 100);
break; break;
case 0x53: // 设置顶端抓取机构角度
case 0x56: // 设置返回测距值 (reserve) by_frame_send(cmd, buff);
by_frame_send(cmd, buff); // 正确接收后直接返回原文 memcpy(buff_t_f, buff, sizeof(float));
buff_t_u16[0] = (int16_t)(buff_t_f[0]);
by_can_send_stdd(0x00C, (uint8_t *)&buff_t_u16, 2, 100);
break;
case 0x54: // 设置托盘角度
by_frame_send(cmd, buff);
memcpy(buff_t_f, buff, sizeof(float));
buff_t_u16[0] = (int16_t)(buff_t_f[0]);
by_can_send_stdd(0x00D, (uint8_t *)&buff_t_u16, 2, 100);
break; break;
default: default:
break; break;
} }

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

@@ -96,7 +96,8 @@ void HardFault_Handler(void)
/* add user code end HardFault_IRQ 0 */ /* add user code end HardFault_IRQ 0 */
/* go to infinite loop when hard fault exception occurs */ /* go to infinite loop when hard fault exception occurs */
while (1) { while (1)
{
/* add user code begin W1_HardFault_IRQ 0 */ /* add user code begin W1_HardFault_IRQ 0 */
/* add user code end W1_HardFault_IRQ 0 */ /* add user code end W1_HardFault_IRQ 0 */
@@ -114,7 +115,8 @@ void MemManage_Handler(void)
/* add user code end MemoryManagement_IRQ 0 */ /* add user code end MemoryManagement_IRQ 0 */
/* go to infinite loop when memory manage exception occurs */ /* go to infinite loop when memory manage exception occurs */
while (1) { while (1)
{
/* add user code begin W1_MemoryManagement_IRQ 0 */ /* add user code begin W1_MemoryManagement_IRQ 0 */
/* add user code end W1_MemoryManagement_IRQ 0 */ /* add user code end W1_MemoryManagement_IRQ 0 */
@@ -132,7 +134,8 @@ void BusFault_Handler(void)
/* add user code end BusFault_IRQ 0 */ /* add user code end BusFault_IRQ 0 */
/* go to infinite loop when bus fault exception occurs */ /* go to infinite loop when bus fault exception occurs */
while (1) { while (1)
{
/* add user code begin W1_BusFault_IRQ 0 */ /* add user code begin W1_BusFault_IRQ 0 */
/* add user code end W1_BusFault_IRQ 0 */ /* add user code end W1_BusFault_IRQ 0 */
@@ -150,7 +153,8 @@ void UsageFault_Handler(void)
/* add user code end UsageFault_IRQ 0 */ /* add user code end UsageFault_IRQ 0 */
/* go to infinite loop when usage fault exception occurs */ /* go to infinite loop when usage fault exception occurs */
while (1) { while (1)
{
/* add user code begin W1_UsageFault_IRQ 0 */ /* add user code begin W1_UsageFault_IRQ 0 */
/* add user code end W1_UsageFault_IRQ 0 */ /* add user code end W1_UsageFault_IRQ 0 */

View File

@@ -268,9 +268,9 @@ void wk_gpio_config(void)
gpio_init(GPIOB, &gpio_init_struct); gpio_init(GPIOB, &gpio_init_struct);
/* gpio output config */ /* gpio output config */
gpio_bits_reset(GPIOC, GPIO_PINS_0 | GPIO_PINS_1 | GPIO_PINS_2 | GPIO_PINS_3); gpio_bits_set(GPIOC, GPIO_PINS_0 | GPIO_PINS_1 | GPIO_PINS_2 | GPIO_PINS_3);
gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_MODERATE; gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL; gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT; gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
gpio_init_struct.gpio_pins = GPIO_PINS_0 | GPIO_PINS_1 | GPIO_PINS_2 | GPIO_PINS_3; gpio_init_struct.gpio_pins = GPIO_PINS_0 | GPIO_PINS_1 | GPIO_PINS_2 | GPIO_PINS_3;

View File

@@ -152,8 +152,12 @@ int main(void)
/* add user code end 2 */ /* add user code end 2 */
while (1) { while(1)
{
/* add user code begin 3 */ /* add user code begin 3 */
// gpio_bits_write(GPIOC, GPIO_PINS_3, !gpio_output_data_bit_read(GPIOC, GPIO_PINS_3));
// gpio_bits_write(GPIOC, GPIO_PINS_2, !gpio_output_data_bit_read(GPIOC, GPIO_PINS_2));
// DWT_Delay(1000000);
by_messy_loop(); by_messy_loop();
by_motion_loop(); by_motion_loop();
/* add user code end 3 */ /* add user code end 3 */