Compare commits

...

3 Commits

Author SHA1 Message Date
bmy
92395b9bb7 feat: 增加灯条与蜂鸣器接口 2024-06-02 18:25:28 +08:00
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
6 changed files with 223 additions and 81 deletions

View File

@@ -155,6 +155,24 @@
<CAN2_RX1_IRQHandler>0;0;0</CAN2_RX1_IRQHandler>
<CAN2_SE_IRQHandler>0;0;0</CAN2_SE_IRQHandler>
</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>
<rtcsel>0</rtcsel>
<hext>8.000000</hext>
@@ -214,7 +232,7 @@
</PINInfo>
<ProjectInfomation>
<ProjectName>BC1C</ProjectName>
<ProjectLocation>C:/Users/ForgotDoge/Desktop/BC2024/firmware</ProjectLocation>
<ProjectLocation>C:/Users/evan/Desktop/BC2024</ProjectLocation>
<ToolchainIDE>MDK_V5</ToolchainIDE>
<KeepUserCode>true</KeepUserCode>
<MinHeapSize>0x200</MinHeapSize>

View File

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

View File

@@ -3,6 +3,7 @@
#include "lwprintf.h"
#include "by_frame.h"
#include "by_motion.h"
#include "by_can.h"
void by_messy_init(void)
{
@@ -12,6 +13,9 @@ void by_messy_init(void)
void by_messy_loop(void)
{
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};
if (!by_frame_parse(&cmd, buff)) {
@@ -57,46 +61,103 @@ void by_messy_loop(void)
case 0x41: // 设置转台 x 轴复位
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;
case 0x42: // 设置转台 z 轴复位
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;
case 0x43: // 设置转台末端执行器复位
by_frame_send(cmd, buff); // 正确接收后直接返回原文
buff_t_u8[0] = 0;
by_can_send_stdd(0x009, buff_t_u8, 1, 100);
break;
case 0x44: // 设置云台 x 轴相对位置
by_frame_send(cmd, buff); // 正确接收后直接返回原文
case 0x44: // 设置 x 轴位置 (增量)
by_frame_send(cmd, buff);
buff_t_u8[0] = 1; // 增量模式
buff_t_u8[1] = (uint8_t)(buff[0] & 0xFF); // 拷贝设置速度
memcpy(&buff_t_u8[2], &buff[1], sizeof(float)); // 拷贝设置距离
by_can_send_stdd(0x006, buff_t_u8, 8, 100);
break;
case 0x46: // 设置云台 z 轴相对位置
by_frame_send(cmd, buff); // 正确接收后直接返回原文
case 0x46: // 设置 z 轴位置 (增量)
by_frame_send(cmd, buff);
buff_t_u8[0] = 1; // 增量模式
buff_t_u8[1] = (uint8_t)(buff[0] & 0xFF); // 拷贝设置速度
memcpy(&buff_t_u8[2], &buff[1], sizeof(float)); // 拷贝设置距离
by_can_send_stdd(0x008, buff_t_u8, 8, 100);
break;
case 0x47: // 设置云台 x 轴绝对位置
by_frame_send(cmd, buff); // 正确接收后直接返回原文
case 0x47: // 设置 x 轴位置 (绝对)
by_frame_send(cmd, buff);
buff_t_u8[0] = 0; // 位置模式
buff_t_u8[1] = (uint8_t)(buff[0] & 0xFF); // 拷贝设置速度
memcpy(&buff_t_u8[2], &buff[1], sizeof(float)); // 拷贝设置距离
by_can_send_stdd(0x006, buff_t_u8, 8, 100);
break;
case 0x49: // 设置云台 z 轴绝对位置
by_frame_send(cmd, buff); // 正确接收后直接返回原文
case 0x49: // 设置 z 轴位置 (绝对)
by_frame_send(cmd, buff);
buff_t_u8[0] = 0; // 增量模式
buff_t_u8[1] = (uint8_t)(buff[0] & 0xFF); // 拷贝设置速度
memcpy(&buff_t_u8[2], &buff[1], sizeof(float)); // 拷贝设置距离
by_can_send_stdd(0x008, buff_t_u8, 8, 100);
break;
case 0x50: // 设置云台夹爪摇臂位置
by_frame_send(cmd, buff); // 正确接收后直接返回原文
case 0x50: // 设置夹爪摇臂角度
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;
case 0x51: // 设置云台夹爪位置
by_frame_send(cmd, buff); // 正确接收后直接返回原文
case 0x51: // 设置夹爪角度
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;
case 0x55: // 设置启动测距 (reserve)
by_frame_send(cmd, buff); // 正确接收后直接返回原文
case 0x52: // 设置摄像头角度
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;
case 0x56: // 设置返回测距值 (reserve)
by_frame_send(cmd, buff); // 正确接收后直接返回原文
case 0x53: // 设置顶端抓取机构角度
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;
case 0x61: // 设置闪灯
by_frame_send(cmd, buff);
memcpy(buff_t_u8, buff, sizeof(buff[1]));
gpio_bits_write(GPIOC, GPIO_PINS_3, buff_t_u8[0] ? FALSE : TRUE); // 灯条
break;
case 0x62: // 设置蜂鸣器
by_frame_send(cmd, buff);
memcpy(buff_t_u8, buff, sizeof(buff[1]));
gpio_bits_write(GPIOC, GPIO_PINS_2, buff_t_u8[0] ? FALSE : TRUE); // 灯条
break;
default:

View File

@@ -55,6 +55,65 @@ extern "C" {
/* 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 ------------------------------------------------------- */
/* system clock config. */
void wk_system_clock_config(void);

View File

@@ -96,7 +96,8 @@ void HardFault_Handler(void)
/* add user code end HardFault_IRQ 0 */
/* go to infinite loop when hard fault exception occurs */
while (1) {
while (1)
{
/* add user code begin 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 */
/* go to infinite loop when memory manage exception occurs */
while (1) {
while (1)
{
/* add user code begin 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 */
/* go to infinite loop when bus fault exception occurs */
while (1) {
while (1)
{
/* add user code begin 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 */
/* go to infinite loop when usage fault exception occurs */
while (1) {
while (1)
{
/* add user code begin 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 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_mode = GPIO_MODE_OUTPUT;
gpio_init_struct.gpio_pins = GPIO_PINS_0 | GPIO_PINS_1 | GPIO_PINS_2 | GPIO_PINS_3;