Compare commits
2 Commits
f483ba9980
...
d56405a1ba
Author | SHA1 | Date | |
---|---|---|---|
d56405a1ba | |||
4d94d15052 |
@ -69,6 +69,14 @@ void Error_Handler(void);
|
||||
#define LED_G_GPIO_Port GPIOH
|
||||
#define LED_B_Pin GPIO_PIN_10
|
||||
#define LED_B_GPIO_Port GPIOH
|
||||
#define buzzer_Pin GPIO_PIN_14
|
||||
#define buzzer_GPIO_Port GPIOD
|
||||
#define down_Pin GPIO_PIN_13
|
||||
#define down_GPIO_Port GPIOE
|
||||
#define key_Pin GPIO_PIN_11
|
||||
#define key_GPIO_Port GPIOE
|
||||
#define paw_Pin GPIO_PIN_14
|
||||
#define paw_GPIO_Port GPIOE
|
||||
#define SPI_CS_Pin GPIO_PIN_12
|
||||
#define SPI_CS_GPIO_Port GPIOB
|
||||
|
||||
|
@ -34,11 +34,14 @@ extern "C" {
|
||||
|
||||
extern TIM_HandleTypeDef htim1;
|
||||
|
||||
extern TIM_HandleTypeDef htim4;
|
||||
|
||||
/* USER CODE BEGIN Private defines */
|
||||
|
||||
/* USER CODE END Private defines */
|
||||
|
||||
void MX_TIM1_Init(void);
|
||||
void MX_TIM4_Init(void);
|
||||
|
||||
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
|
||||
|
||||
|
@ -57,6 +57,9 @@ void MX_GPIO_Init(void)
|
||||
/*Configure GPIO pin Output Level */
|
||||
HAL_GPIO_WritePin(GPIOH, LED_R_Pin|LED_G_Pin|LED_B_Pin, GPIO_PIN_RESET);
|
||||
|
||||
/*Configure GPIO pin Output Level */
|
||||
HAL_GPIO_WritePin(GPIOE, down_Pin|key_Pin|paw_Pin, GPIO_PIN_RESET);
|
||||
|
||||
/*Configure GPIO pin Output Level */
|
||||
HAL_GPIO_WritePin(SPI_CS_GPIO_Port, SPI_CS_Pin, GPIO_PIN_RESET);
|
||||
|
||||
@ -79,6 +82,13 @@ void MX_GPIO_Init(void)
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);
|
||||
|
||||
/*Configure GPIO pins : PEPin PEPin PEPin */
|
||||
GPIO_InitStruct.Pin = down_Pin|key_Pin|paw_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
|
||||
|
||||
/*Configure GPIO pin : PtPin */
|
||||
GPIO_InitStruct.Pin = SPI_CS_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||
|
@ -101,9 +101,12 @@ int main(void)
|
||||
MX_USART6_UART_Init();
|
||||
MX_TIM1_Init();
|
||||
MX_SPI2_Init();
|
||||
MX_TIM4_Init();
|
||||
/* USER CODE BEGIN 2 */
|
||||
//HAL_TIM_Base_Start(&htim1);
|
||||
//HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1 );
|
||||
HAL_TIM_Base_Start(&htim4);
|
||||
HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3);
|
||||
/* USER CODE END 2 */
|
||||
|
||||
/* Init scheduler */
|
||||
|
109
Core/Src/tim.c
109
Core/Src/tim.c
@ -25,6 +25,7 @@
|
||||
/* USER CODE END 0 */
|
||||
|
||||
TIM_HandleTypeDef htim1;
|
||||
TIM_HandleTypeDef htim4;
|
||||
|
||||
/* TIM1 init function */
|
||||
void MX_TIM1_Init(void)
|
||||
@ -85,6 +86,60 @@ void MX_TIM1_Init(void)
|
||||
/* USER CODE END TIM1_Init 2 */
|
||||
HAL_TIM_MspPostInit(&htim1);
|
||||
|
||||
}
|
||||
/* TIM4 init function */
|
||||
void MX_TIM4_Init(void)
|
||||
{
|
||||
|
||||
/* USER CODE BEGIN TIM4_Init 0 */
|
||||
|
||||
/* USER CODE END TIM4_Init 0 */
|
||||
|
||||
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
|
||||
TIM_MasterConfigTypeDef sMasterConfig = {0};
|
||||
TIM_OC_InitTypeDef sConfigOC = {0};
|
||||
|
||||
/* USER CODE BEGIN TIM4_Init 1 */
|
||||
|
||||
/* USER CODE END TIM4_Init 1 */
|
||||
htim4.Instance = TIM4;
|
||||
htim4.Init.Prescaler = 0;
|
||||
htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||
htim4.Init.Period = 20999;
|
||||
htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||
htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
||||
if (HAL_TIM_Base_Init(&htim4) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
||||
if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
if (HAL_TIM_PWM_Init(&htim4) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||
if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
||||
sConfigOC.Pulse = 0;
|
||||
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
|
||||
if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
/* USER CODE BEGIN TIM4_Init 2 */
|
||||
|
||||
/* USER CODE END TIM4_Init 2 */
|
||||
HAL_TIM_MspPostInit(&htim4);
|
||||
|
||||
}
|
||||
|
||||
void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef* tim_pwmHandle)
|
||||
@ -102,6 +157,22 @@ void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef* tim_pwmHandle)
|
||||
/* USER CODE END TIM1_MspInit 1 */
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
|
||||
{
|
||||
|
||||
if(tim_baseHandle->Instance==TIM4)
|
||||
{
|
||||
/* USER CODE BEGIN TIM4_MspInit 0 */
|
||||
|
||||
/* USER CODE END TIM4_MspInit 0 */
|
||||
/* TIM4 clock enable */
|
||||
__HAL_RCC_TIM4_CLK_ENABLE();
|
||||
/* USER CODE BEGIN TIM4_MspInit 1 */
|
||||
|
||||
/* USER CODE END TIM4_MspInit 1 */
|
||||
}
|
||||
}
|
||||
void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
|
||||
{
|
||||
|
||||
@ -111,7 +182,6 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
|
||||
/* USER CODE BEGIN TIM1_MspPostInit 0 */
|
||||
|
||||
/* USER CODE END TIM1_MspPostInit 0 */
|
||||
|
||||
__HAL_RCC_GPIOE_CLK_ENABLE();
|
||||
/**TIM1 GPIO Configuration
|
||||
PE9 ------> TIM1_CH1
|
||||
@ -127,6 +197,27 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
|
||||
|
||||
/* USER CODE END TIM1_MspPostInit 1 */
|
||||
}
|
||||
else if(timHandle->Instance==TIM4)
|
||||
{
|
||||
/* USER CODE BEGIN TIM4_MspPostInit 0 */
|
||||
|
||||
/* USER CODE END TIM4_MspPostInit 0 */
|
||||
|
||||
__HAL_RCC_GPIOD_CLK_ENABLE();
|
||||
/**TIM4 GPIO Configuration
|
||||
PD14 ------> TIM4_CH3
|
||||
*/
|
||||
GPIO_InitStruct.Pin = buzzer_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
GPIO_InitStruct.Alternate = GPIO_AF2_TIM4;
|
||||
HAL_GPIO_Init(buzzer_GPIO_Port, &GPIO_InitStruct);
|
||||
|
||||
/* USER CODE BEGIN TIM4_MspPostInit 1 */
|
||||
|
||||
/* USER CODE END TIM4_MspPostInit 1 */
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -146,6 +237,22 @@ void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef* tim_pwmHandle)
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
|
||||
{
|
||||
|
||||
if(tim_baseHandle->Instance==TIM4)
|
||||
{
|
||||
/* USER CODE BEGIN TIM4_MspDeInit 0 */
|
||||
|
||||
/* USER CODE END TIM4_MspDeInit 0 */
|
||||
/* Peripheral clock disable */
|
||||
__HAL_RCC_TIM4_CLK_DISABLE();
|
||||
/* USER CODE BEGIN TIM4_MspDeInit 1 */
|
||||
|
||||
/* USER CODE END TIM4_MspDeInit 1 */
|
||||
}
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN 1 */
|
||||
|
||||
/* USER CODE END 1 */
|
||||
|
@ -102,7 +102,7 @@ void MX_USART6_UART_Init(void)
|
||||
|
||||
/* USER CODE END USART6_Init 1 */
|
||||
huart6.Instance = USART6;
|
||||
huart6.Init.BaudRate = 4000000;
|
||||
huart6.Init.BaudRate = 115200;
|
||||
huart6.Init.WordLength = UART_WORDLENGTH_8B;
|
||||
huart6.Init.StopBits = UART_STOPBITS_1;
|
||||
huart6.Init.Parity = UART_PARITY_NONE;
|
||||
|
36
MDK-ARM/.vscode/c_cpp_properties.json
vendored
36
MDK-ARM/.vscode/c_cpp_properties.json
vendored
@ -3,26 +3,26 @@
|
||||
{
|
||||
"name": "mycode1",
|
||||
"includePath": [
|
||||
"d:\\Desktop\\mycode -vision\\Core\\Inc",
|
||||
"d:\\Desktop\\mycode -vision\\Drivers\\STM32F4xx_HAL_Driver\\Inc",
|
||||
"d:\\Desktop\\mycode -vision\\Drivers\\STM32F4xx_HAL_Driver\\Inc\\Legacy",
|
||||
"d:\\Desktop\\mycode -vision\\Middlewares\\Third_Party\\FreeRTOS\\Source\\include",
|
||||
"d:\\Desktop\\mycode -vision\\Middlewares\\Third_Party\\FreeRTOS\\Source\\CMSIS_RTOS_V2",
|
||||
"d:\\Desktop\\mycode -vision\\Middlewares\\Third_Party\\FreeRTOS\\Source\\portable\\RVDS\\ARM_CM4F",
|
||||
"d:\\Desktop\\mycode -vision\\Drivers\\CMSIS\\Device\\ST\\STM32F4xx\\Include",
|
||||
"d:\\Desktop\\mycode -vision\\Drivers\\CMSIS\\Include",
|
||||
"d:\\Desktop\\mycode -vision\\User\\bsp",
|
||||
"d:\\Desktop\\mycode -vision\\User\\device",
|
||||
"d:\\Desktop\\mycode -vision\\User\\lib",
|
||||
"d:\\Desktop\\mycode -vision\\User\\module",
|
||||
"d:\\Desktop\\mycode -vision\\User\\task",
|
||||
"d:\\Desktop\\mycode-shoot\\shoot\\Core\\Inc",
|
||||
"d:\\Desktop\\mycode-shoot\\shoot\\Drivers\\STM32F4xx_HAL_Driver\\Inc",
|
||||
"d:\\Desktop\\mycode-shoot\\shoot\\Drivers\\STM32F4xx_HAL_Driver\\Inc\\Legacy",
|
||||
"d:\\Desktop\\mycode-shoot\\shoot\\Middlewares\\Third_Party\\FreeRTOS\\Source\\include",
|
||||
"d:\\Desktop\\mycode-shoot\\shoot\\Middlewares\\Third_Party\\FreeRTOS\\Source\\CMSIS_RTOS_V2",
|
||||
"d:\\Desktop\\mycode-shoot\\shoot\\Middlewares\\Third_Party\\FreeRTOS\\Source\\portable\\RVDS\\ARM_CM4F",
|
||||
"d:\\Desktop\\mycode-shoot\\shoot\\Drivers\\CMSIS\\Device\\ST\\STM32F4xx\\Include",
|
||||
"d:\\Desktop\\mycode-shoot\\shoot\\Drivers\\CMSIS\\Include",
|
||||
"d:\\Desktop\\mycode-shoot\\shoot\\User\\bsp",
|
||||
"d:\\Desktop\\mycode-shoot\\shoot\\User\\device",
|
||||
"d:\\Desktop\\mycode-shoot\\shoot\\User\\lib",
|
||||
"d:\\Desktop\\mycode-shoot\\shoot\\User\\module",
|
||||
"d:\\Desktop\\mycode-shoot\\shoot\\User\\task",
|
||||
"D:\\keil\\ARM\\ARMCC\\include",
|
||||
"D:\\keil\\ARM\\ARMCC\\include\\rw",
|
||||
"d:\\Desktop\\mycode -vision\\MDK-ARM",
|
||||
"d:\\Desktop\\mycode -vision\\Core\\Src",
|
||||
"d:\\Desktop\\mycode -vision\\Drivers\\STM32F4xx_HAL_Driver\\Src",
|
||||
"d:\\Desktop\\mycode -vision\\Middlewares\\Third_Party\\FreeRTOS\\Source",
|
||||
"d:\\Desktop\\mycode -vision\\Middlewares\\Third_Party\\FreeRTOS\\Source\\portable\\MemMang"
|
||||
"d:\\Desktop\\mycode-shoot\\shoot\\MDK-ARM",
|
||||
"d:\\Desktop\\mycode-shoot\\shoot\\Core\\Src",
|
||||
"d:\\Desktop\\mycode-shoot\\shoot\\Drivers\\STM32F4xx_HAL_Driver\\Src",
|
||||
"d:\\Desktop\\mycode-shoot\\shoot\\Middlewares\\Third_Party\\FreeRTOS\\Source",
|
||||
"d:\\Desktop\\mycode-shoot\\shoot\\Middlewares\\Third_Party\\FreeRTOS\\Source\\portable\\MemMang"
|
||||
],
|
||||
"defines": [
|
||||
"USE_HAL_DRIVER",
|
||||
|
42
MDK-ARM/.vscode/keil-assistant.log
vendored
42
MDK-ARM/.vscode/keil-assistant.log
vendored
@ -16,3 +16,45 @@
|
||||
|
||||
[info] Log at : 2025/3/12|23:02:19|GMT+0800
|
||||
|
||||
[info] Log at : 2025/3/12|23:23:36|GMT+0800
|
||||
|
||||
[info] Log at : 2025/3/13|10:52:41|GMT+0800
|
||||
|
||||
[info] Log at : 2025/3/13|11:23:36|GMT+0800
|
||||
|
||||
[info] Log at : 2025/3/13|11:29:50|GMT+0800
|
||||
|
||||
[info] Log at : 2025/3/13|11:32:26|GMT+0800
|
||||
|
||||
[info] Log at : 2025/3/13|11:48:43|GMT+0800
|
||||
|
||||
[info] Log at : 2025/3/13|11:49:08|GMT+0800
|
||||
|
||||
[info] Log at : 2025/3/13|11:52:00|GMT+0800
|
||||
|
||||
[info] Log at : 2025/3/13|11:52:12|GMT+0800
|
||||
|
||||
[info] Log at : 2025/3/13|11:52:29|GMT+0800
|
||||
|
||||
[info] Log at : 2025/3/13|11:52:40|GMT+0800
|
||||
|
||||
[info] Log at : 2025/3/13|13:05:40|GMT+0800
|
||||
|
||||
[info] Log at : 2025/3/13|13:05:50|GMT+0800
|
||||
|
||||
[info] Log at : 2025/3/13|13:09:23|GMT+0800
|
||||
|
||||
[info] Log at : 2025/3/13|13:09:39|GMT+0800
|
||||
|
||||
[info] Log at : 2025/3/13|14:46:01|GMT+0800
|
||||
|
||||
[info] Log at : 2025/3/13|19:24:02|GMT+0800
|
||||
|
||||
[info] Log at : 2025/3/13|21:58:39|GMT+0800
|
||||
|
||||
[info] Log at : 2025/3/14|16:14:48|GMT+0800
|
||||
|
||||
[info] Log at : 2025/3/14|16:14:59|GMT+0800
|
||||
|
||||
[info] Log at : 2025/3/14|20:12:19|GMT+0800
|
||||
|
||||
|
9
MDK-ARM/.vscode/settings.json
vendored
9
MDK-ARM/.vscode/settings.json
vendored
@ -10,6 +10,13 @@
|
||||
"can_task.h": "c",
|
||||
"go_m8010_6_driver.h": "c",
|
||||
"read_spi.h": "c",
|
||||
"djimotor.h": "c"
|
||||
"djimotor.h": "c",
|
||||
"buzzer.h": "c",
|
||||
"main.h": "c",
|
||||
"ball.h": "c",
|
||||
"shoot.h": "c",
|
||||
"dji.h": "c",
|
||||
"calc_lib.h": "c",
|
||||
"odrive_shoot.h": "c"
|
||||
}
|
||||
}
|
11
MDK-ARM/.vscode/uv4.log
vendored
11
MDK-ARM/.vscode/uv4.log
vendored
@ -1,13 +1,10 @@
|
||||
*** Using Compiler 'V5.06 update 7 (build 960)', folder: 'D:\keil\ARM\ARMCC\Bin'
|
||||
Build target 'mycode1'
|
||||
compiling dji_task.c...
|
||||
compiling dji.c...
|
||||
compiling djiMotor.c...
|
||||
compiling shoot_task.c...
|
||||
compiling can_task.c...
|
||||
compiling read_spi.c...
|
||||
compiling odrive_shoot.c...
|
||||
compiling shoot_task.c...
|
||||
linking...
|
||||
Program Size: Code=26064 RO-data=1860 RW-data=284 ZI-data=22276
|
||||
Program Size: Code=26528 RO-data=1904 RW-data=280 ZI-data=22496
|
||||
FromELF: creating hex file...
|
||||
"mycode1\mycode1.axf" - 0 Error(s), 0 Warning(s).
|
||||
Build Time Elapsed: 00:00:04
|
||||
Build Time Elapsed: 00:00:03
|
||||
|
2
MDK-ARM/.vscode/uv4.log.lock
vendored
2
MDK-ARM/.vscode/uv4.log.lock
vendored
@ -1 +1 @@
|
||||
2025/3/12 20:09:49
|
||||
2025/3/14 20:41:26
|
@ -153,62 +153,92 @@
|
||||
<Ww>
|
||||
<count>0</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>go</ItemText>
|
||||
<ItemText>cmd_fromnuc</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>1</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>Temp_buffer</ItemText>
|
||||
<ItemText>nucbuf</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>2</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>cmd_fromnuc</ItemText>
|
||||
<ItemText>motor_3508_data,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>3</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>nucbuf</ItemText>
|
||||
<ItemText>speed,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>4</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>motor_3508_data,0x0A</ItemText>
|
||||
<ItemText>RC_mess,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>5</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>speed,0x0A</ItemText>
|
||||
<ItemText>M3508_speed_PID</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>6</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>RC_mess</ItemText>
|
||||
<ItemText>M3508_angle_PID</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>7</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>M3508_speed_PID</ItemText>
|
||||
<ItemText>angle,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>8</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>M3508_angle_PID</ItemText>
|
||||
<ItemText>m,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>9</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>angle,0x0A</ItemText>
|
||||
<ItemText>go</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>10</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>m,0x0A</ItemText>
|
||||
<ItemText>basketball,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>11</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>go</ItemText>
|
||||
<ItemText>angleo,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>12</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>shoot</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>13</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>multi_turn_angle,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>14</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>angle_encoder</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>15</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>back_angle,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>16</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>encoder,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>17</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>angles</ItemText>
|
||||
</Ww>
|
||||
</WatchWindow1>
|
||||
<WatchWindow2>
|
||||
@ -292,7 +322,7 @@
|
||||
|
||||
<Group>
|
||||
<GroupName>Application/User/Core</GroupName>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
@ -1048,17 +1078,53 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>60</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\module\buzzer.c</PathWithFileName>
|
||||
<FilenameWithoutPath>buzzer.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>61</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\module\ball.c</PathWithFileName>
|
||||
<FilenameWithoutPath>ball.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>62</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\module\shoot.c</PathWithFileName>
|
||||
<FilenameWithoutPath>shoot.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
<GroupName>User/task</GroupName>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>10</GroupNumber>
|
||||
<FileNumber>60</FileNumber>
|
||||
<FileNumber>63</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1070,7 +1136,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>10</GroupNumber>
|
||||
<FileNumber>61</FileNumber>
|
||||
<FileNumber>64</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1082,7 +1148,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>10</GroupNumber>
|
||||
<FileNumber>62</FileNumber>
|
||||
<FileNumber>65</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1094,7 +1160,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>10</GroupNumber>
|
||||
<FileNumber>63</FileNumber>
|
||||
<FileNumber>66</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1106,7 +1172,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>10</GroupNumber>
|
||||
<FileNumber>64</FileNumber>
|
||||
<FileNumber>67</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1118,7 +1184,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>10</GroupNumber>
|
||||
<FileNumber>65</FileNumber>
|
||||
<FileNumber>68</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1130,7 +1196,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>10</GroupNumber>
|
||||
<FileNumber>66</FileNumber>
|
||||
<FileNumber>69</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1142,7 +1208,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>10</GroupNumber>
|
||||
<FileNumber>67</FileNumber>
|
||||
<FileNumber>70</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1154,7 +1220,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>10</GroupNumber>
|
||||
<FileNumber>68</FileNumber>
|
||||
<FileNumber>71</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1164,6 +1230,18 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>10</GroupNumber>
|
||||
<FileNumber>72</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\task\ball_task.c</PathWithFileName>
|
||||
<FilenameWithoutPath>ball_task.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
|
@ -820,6 +820,21 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\module\odrive_shoot.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>buzzer.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\module\buzzer.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>ball.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\module\ball.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>shoot.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\module\shoot.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
@ -870,6 +885,11 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\task\rc_task.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>ball_task.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\task\ball_task.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
|
@ -1,3 +1,8 @@
|
||||
# shoot
|
||||
# myshoot
|
||||
|
||||
r1上层
|
||||
## r1上层
|
||||
|
||||
1. **odrive**推射 **can1** **id 010** **spi2**读取as5047p
|
||||
2. go1 RS485模块 01翻转 02云台
|
||||
3. 爪子 左三PC6
|
||||
4. 接球 左一左2 PI7 PI6
|
@ -136,8 +136,6 @@ device_status_e odrive_pos_cmd(node_id_e node_id, fp32 pos);
|
||||
*/
|
||||
odrive_msg_t* Get_Odrive_Point(void);
|
||||
|
||||
void odrive_CB(void);
|
||||
|
||||
void User_Odrive_Can1_CB(void);
|
||||
void User_Odrive_Can2_CB(void);
|
||||
|
||||
|
@ -40,41 +40,31 @@ uint16_t AS5047_read(uint16_t add)
|
||||
return data;
|
||||
}
|
||||
|
||||
// void Update_MultiTurn_Angle(void)
|
||||
// {
|
||||
// uint16_t current_angle = AS5047_read(ANGLEUNC);
|
||||
// int16_t angle_diff = current_angle - last_angle;
|
||||
|
||||
// // 检测角度跳变
|
||||
// if (angle_diff > 8192) // 角度从低到高跳变
|
||||
// {
|
||||
// multi_turn_angle -= (16384 - angle_diff);
|
||||
// }
|
||||
// else if (angle_diff < -8192) // 角度从高到低跳变
|
||||
// {
|
||||
// multi_turn_angle += (16384 + angle_diff);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// multi_turn_angle += angle_diff;
|
||||
// }
|
||||
|
||||
// last_angle = current_angle;
|
||||
// }
|
||||
void Update_MultiTurn_Angle(void)
|
||||
{
|
||||
uint16_t current_angle = AS5047_read(ANGLEUNC);
|
||||
int16_t angle_diff = current_angle - last_angle;
|
||||
|
||||
// 检测角度跳变
|
||||
if (angle_diff > 8192) // 角度从低到高跳变
|
||||
{
|
||||
multi_turn_angle -= 1;
|
||||
}
|
||||
else if (angle_diff < -8192) // 角度从高到低跳变
|
||||
{
|
||||
multi_turn_angle += 1;
|
||||
}
|
||||
|
||||
last_angle = current_angle;
|
||||
void Encoder_Init(Encoder_t *ptr) {
|
||||
ptr->round_cnt = 0;
|
||||
ptr->ecd = AS5047_read(ANGLEUNC);
|
||||
ptr->last_ecd = ptr->ecd;
|
||||
ptr->offset_ecd = ptr->ecd;
|
||||
ptr->total_angle = 0.0;
|
||||
}
|
||||
|
||||
void Update_Encoder(Encoder_t *ptr) {
|
||||
ptr->ecd = AS5047_read(ANGLEUNC);
|
||||
|
||||
if (ptr->ecd - ptr->last_ecd > 4096) {
|
||||
ptr->round_cnt--;
|
||||
} else if (ptr->ecd - ptr->last_ecd < -4096) {
|
||||
ptr->round_cnt++;
|
||||
}
|
||||
|
||||
ptr->total_angle = (double)((ptr->round_cnt * 8192 + ptr->ecd - ptr->offset_ecd) );
|
||||
ptr->last_ecd = ptr->ecd;
|
||||
}
|
||||
|
||||
int32_t Get_Encoder_Rounds(Encoder_t *ptr) {
|
||||
return ptr->round_cnt;
|
||||
}
|
||||
|
||||
double Get_Encoder_Angle(Encoder_t *ptr) {
|
||||
return ptr->total_angle;
|
||||
}
|
||||
|
@ -18,6 +18,14 @@
|
||||
#define SETTINGS1 0x0018
|
||||
#define SETTINGS2 0x0019
|
||||
|
||||
typedef struct {
|
||||
int32_t round_cnt;
|
||||
uint16_t ecd;
|
||||
uint16_t last_ecd;
|
||||
uint16_t offset_ecd;
|
||||
double total_angle;
|
||||
} Encoder_t;
|
||||
|
||||
#define AS5407P_CS_H() \
|
||||
HAL_GPIO_WritePin(SPI_CS_GPIO_Port, SPI_CS_Pin, GPIO_PIN_SET)
|
||||
#define AS5407P_CS_L() \
|
||||
@ -26,6 +34,11 @@
|
||||
uint16_t Parity_bit_Calculate(uint16_t data_2_cal);
|
||||
uint16_t SPI_ReadWrite_OneByte(uint16_t _txdata);
|
||||
uint16_t AS5047_read(uint16_t add);
|
||||
void Update_MultiTurn_Angle(void);
|
||||
|
||||
|
||||
void Encoder_Init(Encoder_t *ptr);
|
||||
void Update_Encoder(Encoder_t *ptr);
|
||||
int32_t Get_Encoder_Rounds(Encoder_t *ptr);
|
||||
double Get_Encoder_Angle(Encoder_t *ptr);
|
||||
|
||||
#endif
|
||||
|
88
User/module/ball.c
Normal file
88
User/module/ball.c
Normal file
@ -0,0 +1,88 @@
|
||||
#include "ball.h"
|
||||
#include "main.h"
|
||||
#include "cmsis_os.h"
|
||||
#include "FreeRTOS.h"
|
||||
#include "bsp_delay.h"
|
||||
|
||||
#define ballcome 1
|
||||
#define balldown 0
|
||||
|
||||
//光电识别
|
||||
int ball_in(void)
|
||||
{
|
||||
if (HAL_GPIO_ReadPin(ball_up_GPIO_Port, ball_up_Pin) == GPIO_PIN_SET)
|
||||
{
|
||||
return ballcome;
|
||||
}
|
||||
else
|
||||
{
|
||||
return balldown;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
int pass_ball(void)
|
||||
{
|
||||
|
||||
if (HAL_GPIO_ReadPin(ball_in1_GPIO_Port, ball_in1_Pin) == GPIO_PIN_SET)
|
||||
{
|
||||
return ballcome;
|
||||
}
|
||||
else
|
||||
{
|
||||
return balldown;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//运球
|
||||
void handling_ball(int hand, int paw)
|
||||
{
|
||||
paw =ball_in();
|
||||
if (hand == 1 && paw == 1)
|
||||
{
|
||||
//爪子
|
||||
delay_us(100);
|
||||
HAL_GPIO_WritePin(paw_GPIO_Port, paw_Pin, GPIO_PIN_RESET);
|
||||
osDelay(2);
|
||||
delay_us(100);
|
||||
//上推
|
||||
HAL_GPIO_WritePin(down_GPIO_Port, down_Pin, GPIO_PIN_RESET);
|
||||
hand=0;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
//爪子
|
||||
HAL_GPIO_WritePin(paw_GPIO_Port, paw_Pin, GPIO_PIN_SET);
|
||||
osDelay(2);
|
||||
delay_us(100);
|
||||
//下推
|
||||
HAL_GPIO_WritePin(down_GPIO_Port, down_Pin, GPIO_PIN_SET);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//接球
|
||||
int catch_ball(int inball)
|
||||
{
|
||||
inball =pass_ball();
|
||||
if(inball==1)
|
||||
{
|
||||
return ballcome;
|
||||
}
|
||||
else
|
||||
{
|
||||
return balldown;
|
||||
}
|
||||
|
||||
|
||||
}
|
19
User/module/ball.h
Normal file
19
User/module/ball.h
Normal file
@ -0,0 +1,19 @@
|
||||
#ifndef _BALL_H_
|
||||
#define _BALL_H_
|
||||
|
||||
typedef struct ball
|
||||
{
|
||||
int hand;//运球
|
||||
int paw;//爪
|
||||
int inball;//光电门
|
||||
int to_shoot;//给发射
|
||||
}BASKETBALL;
|
||||
|
||||
|
||||
int ball_in(void);
|
||||
int pass_ball(void);
|
||||
void handling_ball(int hand, int paw);
|
||||
int catch_ball(int inball);
|
||||
|
||||
|
||||
#endif
|
79
User/module/buzzer.c
Normal file
79
User/module/buzzer.c
Normal file
@ -0,0 +1,79 @@
|
||||
#include "buzzer.h"
|
||||
|
||||
uint32_t Frequency = 0;
|
||||
uint32_t CLOCK = 10500000;
|
||||
int i;
|
||||
|
||||
int pwm = MIN_BUZZER_PWM;
|
||||
int psc = 0;
|
||||
|
||||
unsigned int notes[] = {
|
||||
G3,C4,D4s,D4,C4,D4s,C4,D4,C4,G3s,A3s,G3,
|
||||
G3,C4,D4s,D4,C4,D4s,C4,D4,C4,G3,F3s,F3,
|
||||
F3,G3s,B3,D4, F3,G3s,B3,C4,
|
||||
C4,D4s,A4s,G4s,G4,A4s,G4s,G4s,G4,G4,B3,C4,
|
||||
C5,C5,B4,A4s, A4s,D5,C5,G4s,G4,
|
||||
G4,A4s,G4,F4, F4,G4s,G4,F4,G4
|
||||
};
|
||||
unsigned int duration[] = {
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5,
|
||||
1, 1, 1, 5, 1, 1, 1, 4,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5,
|
||||
1, 1, 1, 3, 1, 2, 1, 1, 4,
|
||||
1, 1, 1, 3, 1, 2, 1, 1, 4
|
||||
};
|
||||
|
||||
void buzzer_on(uint16_t note) {
|
||||
Frequency = CLOCK / note; // 计算定时器的重载值
|
||||
|
||||
htim4.Init.Prescaler = 0; // 预分频器设置为0
|
||||
htim4.Init.Period = Frequency; // 设置定时器的重载值
|
||||
|
||||
// 设置PWM的占空比为50%
|
||||
__HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_3, Frequency / 2);
|
||||
|
||||
// 启动PWM
|
||||
HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3);
|
||||
}
|
||||
|
||||
void noTone(void){
|
||||
__HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_3, 0);
|
||||
HAL_Delay(30);
|
||||
}
|
||||
|
||||
|
||||
void playSong(void){
|
||||
for (i = 0; i < sizeof(notes)/sizeof(notes[0]); i++) {
|
||||
Frequency = CLOCK / notes[i]; // 计算定时器的重载值
|
||||
htim4.Instance->ARR = Frequency; // 设置定时器的重载值
|
||||
__HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_3, Frequency / 2);// 设置PWM的占空比为50%
|
||||
HAL_Delay(400*duration[i]);
|
||||
noTone();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void set_buzzer_frequency(uint32_t freq){
|
||||
__HAL_TIM_SetAutoreload(&htim4, freq);
|
||||
__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_3, freq/2);
|
||||
}
|
||||
uint32_t music[3][205]={{9, 10, 9, 6, 9, 0, 6, 10, 9, 10, 12, 10, 9, 10, 9, 6, 8, 0, 10, 9, 12, 10}, {5, 9, 8, 3, 0, 8, 9, 10, 9, 8, 9, 5, 9, 8, 3, 0, 8, 9, 10, 9, 8, 9, 5, 9, 8, 3, 0, 8, 9, 10, 9, 8, 9, 5, 9, 8, 3, 0, 8, 10, 12, 13, 12, 0, 8, 9, 9, 8, 9, 10, 0, 10, 12, 13, 14, 13, 12, 10, 9, 9, 8, 9, 9, 9, 8, 0, 8, 10, 12, 13, 12, 0, 8, 9, 9, 8, 10, 0, 9, 10, 12, 13, 15, 16, 17, 16, 15, 12, 13, 15, 17, 17, 17, 16, 0, 12, 13, 15, 17, 17, 17, 16, 0}};
|
||||
uint32_t lst[3][205]={{ 1, 1, 1, 1, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 1, 1, 2}, {2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 6, 6, 3, 1, 2, 2, 2, 2, 4, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 1, 1, 1, 6, 6, 3, 1, 2, 2, 2, 2, 4, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 4, 1, 1, 2, 2, 2, 2, 2, 8}};
|
||||
uint32_t tones[]={21000000, 262, 294, 330, 349, 392, 440, 494, 523, 587, 659, 698, 784, 880, 988, 1046, 1174, 1318, 1396, 1568, 1760, 1976};
|
||||
uint32_t lenth[]={22, 103};
|
||||
|
||||
uint32_t frequency = 21000000;
|
||||
uint32_t nw = 0, time_base = 125;
|
||||
uint32_t song = 1;
|
||||
|
||||
void see_you_again(void)
|
||||
{
|
||||
set_buzzer_frequency(frequency/tones[music[song][nw]]);
|
||||
/* USER CODE BEGIN 3 */
|
||||
HAL_Delay(time_base*lst[song][nw]-time_base*1/4);
|
||||
set_buzzer_frequency(frequency/tones[0]);
|
||||
HAL_Delay(time_base*1/64);
|
||||
nw = (nw + 1) % lenth[song];
|
||||
|
||||
}
|
53
User/module/buzzer.h
Normal file
53
User/module/buzzer.h
Normal file
@ -0,0 +1,53 @@
|
||||
#ifndef _BUZZER_H_
|
||||
#define _BUZZER_H_
|
||||
|
||||
#include "tim.h"
|
||||
|
||||
#define MIN_BUZZER_PWM ((uint32_t)10000)
|
||||
#define MAX_BUZZER_PWM ((uint32_t)20000)
|
||||
#define MAX_PSC ((uint32_t)1000)
|
||||
#define C3 131
|
||||
#define C3s 139
|
||||
#define D3 147
|
||||
#define D3s 156
|
||||
#define E3 165
|
||||
#define F3 175
|
||||
#define F3s 185
|
||||
#define G3 196
|
||||
#define G3s 208
|
||||
#define A3 220
|
||||
#define A3s 233
|
||||
#define B3 247
|
||||
#define C4 262
|
||||
#define C4s 277
|
||||
#define D4 294
|
||||
#define D4s 311
|
||||
#define E4 330
|
||||
#define F4 349
|
||||
#define F4s 370
|
||||
#define G4 392
|
||||
#define G4s 415
|
||||
#define A4 440
|
||||
#define A4s 466
|
||||
#define B4 494
|
||||
#define C5 523
|
||||
#define C5s 554
|
||||
#define D5 587
|
||||
#define D5s 622
|
||||
#define E5 659
|
||||
#define F5 698
|
||||
#define F5s 740
|
||||
#define G5 784
|
||||
#define G5s 831
|
||||
#define A5 880
|
||||
#define A5s 932
|
||||
#define B5 988
|
||||
#define C6 1047
|
||||
|
||||
|
||||
void buzzer_on(uint16_t note);
|
||||
void noTone(void);
|
||||
void playSong(void);
|
||||
void see_you_again(void);
|
||||
|
||||
#endif
|
@ -26,17 +26,49 @@ fp32 M3508_PID[3]={4.9,0.01,0.0};
|
||||
int16_t result; //速度环
|
||||
float angleSet[MOTOR_NUM]; //位置环
|
||||
|
||||
//trigger
|
||||
//编码器数据
|
||||
const motor_measure_t *trigger_motor_data;//3508电机数据
|
||||
|
||||
pid_type_def t_speed_pid;//2006速度环pid结构体
|
||||
pid_type_def t_angle_pid;//2006位置环pid结构体
|
||||
|
||||
fp32 M2006_speed_PID[3]={5.0,0.3,0.0}; //P,I,D(速度环)
|
||||
fp32 M2006_angle_PID[3]={25.0,0.0,1.5}; //P,I,D(角度环)
|
||||
//速度环pid参数
|
||||
fp32 M2006_PID[3]={4.9,0.01,0.0};
|
||||
|
||||
int16_t t_result; //速度环 //can最后发送的数据
|
||||
float t_angleSet[1]; //位置环
|
||||
|
||||
|
||||
|
||||
void motor_init(void)
|
||||
{
|
||||
motor_3508_data=get_motor_point(0);
|
||||
|
||||
// motor_3508_data=get_motor_point(0);
|
||||
trigger_motor_data=get_motor_point(0);
|
||||
// PID_init(&speed_pid,PID_POSITION,M3508_speed_PID,3000,1000);
|
||||
// PID_init(&angle_pid,PID_POSITION,M3508_angle_PID,7000,2000);
|
||||
|
||||
PID_init(&speed_pid,PID_POSITION,M3508_speed_PID,500000,500000);
|
||||
PID_init(&angle_pid,PID_POSITION,M3508_angle_PID,500000,100000);
|
||||
// PID_init(&speed_pid,PID_POSITION,M3508_speed_PID,500000,500000);
|
||||
// PID_init(&angle_pid,PID_POSITION,M3508_angle_PID,500000,100000);
|
||||
|
||||
PID_init(&t_speed_pid,PID_POSITION,M2006_speed_PID,500000,500000);
|
||||
PID_init(&t_angle_pid,PID_POSITION,M2006_angle_PID,500000,100000);
|
||||
|
||||
}
|
||||
|
||||
float trigger_angle = 0;
|
||||
void trigger_pos(fp32 angle)
|
||||
{
|
||||
|
||||
int16_t delta[1];
|
||||
|
||||
delta[0]=PID_calc(&t_angle_pid,trigger_motor_data->total_angle,angle);
|
||||
t_result=PID_calc(&t_speed_pid,trigger_motor_data->speed_rpm,delta[0]);
|
||||
|
||||
}
|
||||
|
||||
|
||||
void motor_speed(fp32 speed)
|
||||
{
|
||||
@ -53,3 +85,4 @@ void motor_pos(fp32 angle)
|
||||
result=PID_calc(&speed_pid,motor_3508_data->speed_rpm,delta[0]);
|
||||
|
||||
}
|
||||
|
||||
|
@ -14,30 +14,11 @@ typedef enum
|
||||
MOTOR_NUM
|
||||
}motorput_e;
|
||||
|
||||
// //电机输出
|
||||
// int16_t result[MOTOR_NUM]; //速度环
|
||||
// float angleSet[MOTOR_NUM]; //位置环
|
||||
// //电机状态
|
||||
|
||||
// motor_measure_t* putMotor[MOTOR_NUM];
|
||||
|
||||
// //翻转3508pid
|
||||
// static const float M3508_speed_PID[3];
|
||||
// static const float M3508_angle_PID[3];
|
||||
|
||||
// //前后与夹球2006pid
|
||||
// static const float M2006_speed_PID[3];
|
||||
// static const float M2006_angle_PID[3];
|
||||
// //电机速度pid结构体
|
||||
// pid_type_def speed_pid[MOTOR_NUM];
|
||||
// //位置环pid
|
||||
// pid_type_def angle_pid[MOTOR_NUM];
|
||||
// //暂存目标位置
|
||||
// //0上下,1翻转,2前后,3夹球
|
||||
// float angleSet[MOTOR_NUM];
|
||||
|
||||
void motor_init(void);
|
||||
void motor_speed(fp32 speed);
|
||||
void motor_pos(fp32 angle);
|
||||
|
||||
void trigger_pos(fp32 angle);
|
||||
|
||||
#endif
|
||||
|
@ -20,20 +20,17 @@ void gimbalInit(void)
|
||||
for(i = 0;i < GO_NUM;i ++)
|
||||
{
|
||||
go.goData[i] = getGoPoint(i);//获取电机数据指针
|
||||
// PID_init(&angle_pid[i],PID_POSITION,PID_angle,15,0.5);//pid初始化
|
||||
// PID_init(&speed_pid[i],PID_POSITION,PID_speed,60,0.2);//pid初始化
|
||||
|
||||
// result[i] = 0;
|
||||
|
||||
go.angleSetgo[i] = 0;
|
||||
go.offestAngle[i] = 0;
|
||||
// GO_M8010_send_data(&huart1, i,0,0,0,0,0,0);
|
||||
GO_M8010_send_data(&huart6, i,0,0,0,0,0,0);
|
||||
go.offestAngle[i] = go.goData[i]->Pos;
|
||||
HAL_Delay(2000);
|
||||
HAL_Delay(100);
|
||||
// GO_M8010_send_data(&huart1, i,0,0,0,0,0,0);
|
||||
GO_M8010_send_data(&huart6, i,0,0,0,0,0,0);
|
||||
go.offestAngle[i] = go.goData[i]->Pos;
|
||||
HAL_Delay(2000);
|
||||
HAL_Delay(100);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -4,6 +4,8 @@
|
||||
#include <cmsis_os2.h>
|
||||
#include "read_spi.h"
|
||||
|
||||
#include "vofa.h"
|
||||
|
||||
extern RC_mess_t RC_mess;
|
||||
|
||||
extern float angle_encoder;
|
||||
@ -12,31 +14,28 @@ extern volatile uint16_t last_angle ;
|
||||
|
||||
#define POS_SET -10.6
|
||||
#define POS_ZERO 2.705
|
||||
#define ACCEL_SEND 10//梯形加速度
|
||||
#define ACCEL_BACK 5//返回时的加速度
|
||||
#define ACCEL_SEND 100//梯形加速度
|
||||
#define ACCEL_BACK 100//返回时的加速度
|
||||
#define DELAY 1000
|
||||
|
||||
fp32 shoot = 10;
|
||||
|
||||
fp32 shoot = 0;
|
||||
fp32 back_angle = 0;
|
||||
float vofa_spi[8];
|
||||
|
||||
void shootStep(void)
|
||||
{
|
||||
|
||||
|
||||
angle_encoder=AS5047_read(ANGLEUNC);
|
||||
Update_MultiTurn_Angle();
|
||||
// back_angle=Get_Angle();
|
||||
// angle_encoder=AS5047_read(ANGLEUNC);
|
||||
// Update_MultiTurn_Angle();
|
||||
|
||||
odrive_accel_cmd(AXIS0_NODE,ACCEL_SEND,ACCEL_SEND);
|
||||
// osDelay(2);//不知道为什么要延时
|
||||
odrive_pos_cmd(AXIS0_NODE,shoot);
|
||||
|
||||
|
||||
// osDelay(5000);
|
||||
// odrive_accel_cmd(AXIS0_NODE,5,5);
|
||||
// odrive_pos_cmd(AXIS0_NODE,10);
|
||||
// osDelay(DELAY);
|
||||
// odrive_accel_cmd(AXIS1_NODE,ACCEL_BACK,ACCEL_BACK);
|
||||
// odrive_pos_cmd(AXIS1_NODE,POS_ZERO);
|
||||
// vofa_spi[0]=shoot;
|
||||
// vofa_spi[0]=multi_turn_angle;
|
||||
// vofa_tx_main(vofa_spi);
|
||||
|
||||
}
|
||||
|
||||
@ -45,5 +44,6 @@ void shootBack(void)
|
||||
odrive_accel_cmd(AXIS0_NODE,ACCEL_BACK,ACCEL_BACK);
|
||||
osDelay(2);
|
||||
odrive_pos_cmd(AXIS0_NODE,POS_ZERO);
|
||||
|
||||
}
|
||||
|
||||
|
92
User/module/shoot.c
Normal file
92
User/module/shoot.c
Normal file
@ -0,0 +1,92 @@
|
||||
#include "shoot.h"
|
||||
#include "remote_control.h"
|
||||
|
||||
extern RC_mess_t RC_mess;
|
||||
extern motor_measure_t *trigger_motor_data;//3508电机数据
|
||||
|
||||
|
||||
#define GO1_SHOOT 0
|
||||
#define ODRIVE_SHOOT 1
|
||||
|
||||
#define KP 0.12
|
||||
#define KD 0.008
|
||||
|
||||
|
||||
#if GO1_SHOOT == 1
|
||||
GO_SHOOT goshoot;
|
||||
|
||||
void shooterInit(void)
|
||||
{
|
||||
int i;
|
||||
GO_M8010_init();
|
||||
for(i = 0;i < GO_NUM;i ++)
|
||||
{
|
||||
goshoot.goData[i] = getGoPoint(i);//获取电机数据指针
|
||||
|
||||
goshoot.angleSetgo[i] = 0;
|
||||
goshoot.offestAngle[i] = 0;
|
||||
// GO_M8010_send_data(&huart1, i,0,0,0,0,0,0);
|
||||
GO_M8010_send_data(&huart6, i,0,0,0,0,0,0);
|
||||
goshoot.offestAngle[i] = goshoot.goData[i]->Pos;
|
||||
HAL_Delay(100);
|
||||
// GO_M8010_send_data(&huart1, i,0,0,0,0,0,0);
|
||||
GO_M8010_send_data(&huart6, i,0,0,0,0,0,0);
|
||||
goshoot.offestAngle[i] = goshoot.goData[i]->Pos;
|
||||
HAL_Delay(100);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
void shoot_ball(int key)
|
||||
{
|
||||
|
||||
|
||||
//蓄力
|
||||
if(trigger_motor_data->real_angle ==60)//扳机已闭合
|
||||
{
|
||||
goshoot.angleSetgo[0] = 10;
|
||||
GO_M8010_send_data(&huart6, 0,0,0,goshoot.angleSetgo[0],1,KP,KD);
|
||||
}
|
||||
if (key ==2)//上升准备蓄力
|
||||
{
|
||||
goshoot.angleSetgo[0] = 0;
|
||||
GO_M8010_send_data(&huart6, 0,0,0,goshoot.angleSetgo[0],1,KP,KD);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
#elif ODRIVE_SHOOT == 1
|
||||
//初始位置在最上面, 有球放过来, 电机转动到最下面等待发射
|
||||
//发射指令,当到最高点时,扳机离合
|
||||
//返回扳机,远动到最下面
|
||||
|
||||
extern float angle_encoder;
|
||||
extern volatile int32_t multi_turn_angle ;
|
||||
extern volatile uint16_t last_angle ;
|
||||
|
||||
void shoot_odrive(int angle)
|
||||
{
|
||||
// if(ball)
|
||||
// {
|
||||
// if(multi_turn_angle==8)
|
||||
// {
|
||||
// //di
|
||||
// odrive_accel_cmd(AXIS0_NODE,200,200);
|
||||
// odrive_pos_cmd(AXIS0_NODE,0);
|
||||
// }
|
||||
// else if(multi_turn_angle==0)
|
||||
// {
|
||||
|
||||
// }
|
||||
// }
|
||||
odrive_accel_cmd(AXIS0_NODE,200,200);
|
||||
osDelay(2);
|
||||
odrive_pos_cmd(AXIS0_NODE,angle);
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
27
User/module/shoot.h
Normal file
27
User/module/shoot.h
Normal file
@ -0,0 +1,27 @@
|
||||
#ifndef _SHOOT_H_
|
||||
#define _SHOOT_H_
|
||||
|
||||
#include "GO_M8010_6_Driver.h"
|
||||
#include "odrive_can.h"
|
||||
#include "djiMotor.h"
|
||||
#include "calc_lib.h"
|
||||
#include "pid.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* data */
|
||||
GO_Motorfield* goData[GO_NUM];
|
||||
//暂存目标位置
|
||||
//0 left,1 right
|
||||
float angleSetgo[GO_NUM];
|
||||
float offestAngle[GO_NUM];//go数据
|
||||
float Kp;
|
||||
float Kd;
|
||||
float allowRange;
|
||||
}GO_SHOOT;
|
||||
|
||||
void shooterInit(void);
|
||||
void shoot_ball(int key);
|
||||
void shoot_odrive(int angle);
|
||||
|
||||
#endif
|
@ -63,5 +63,10 @@ const osThreadAttr_t attr_rc = {
|
||||
.stack_size = 256 * 4,
|
||||
};
|
||||
|
||||
|
||||
//ball
|
||||
const osThreadAttr_t attr_ball = {
|
||||
.name = "ball",
|
||||
.priority = osPriorityRealtime,
|
||||
.stack_size = 256 * 4,
|
||||
};
|
||||
|
||||
|
@ -20,7 +20,7 @@
|
||||
#define TASK_FREQ_MONITOR (2u)
|
||||
#define TASK_FREQ_CAN (500u)
|
||||
#define TASK_FREQ_AI (250u)
|
||||
#define TASK_FREQ_REFEREE (1000u)
|
||||
#define TASK_FREQ_BALL (500u)
|
||||
|
||||
#define TASK_INIT_DELAY_INFO (500u)
|
||||
#define TASK_INIT_DELAY_MONITOR (10)
|
||||
@ -43,7 +43,8 @@ typedef struct {
|
||||
osThreadId_t dji_motor;
|
||||
osThreadId_t shoot;
|
||||
osThreadId_t go;
|
||||
osThreadId_t nuc;
|
||||
osThreadId_t nuc;
|
||||
osThreadId_t ball;
|
||||
} thread;
|
||||
|
||||
/* 电机的反馈和输出 */
|
||||
@ -159,6 +160,7 @@ extern const osThreadAttr_t attr_shoot;
|
||||
extern const osThreadAttr_t attr_go;
|
||||
extern const osThreadAttr_t attr_nuc;
|
||||
extern const osThreadAttr_t attr_rc;
|
||||
extern const osThreadAttr_t attr_ball;
|
||||
|
||||
/* Exported functions prototypes -------------------------------------------- */
|
||||
//声明一下任务
|
||||
@ -178,4 +180,6 @@ void Task_nuc(void *argument);
|
||||
|
||||
void Task_Rc(void *argument);
|
||||
|
||||
void Task_Ball(void *argument);
|
||||
|
||||
#endif
|
||||
|
29
User/task/ball_task.c
Normal file
29
User/task/ball_task.c
Normal file
@ -0,0 +1,29 @@
|
||||
#include "ball_task.h"
|
||||
#include "TopDefine.h"
|
||||
#include "FreeRTOS.h"
|
||||
#include "attrTask.h"
|
||||
#include <cmsis_os2.h>
|
||||
#include "remote_control.h"
|
||||
#include "ball.h"
|
||||
|
||||
extern RC_mess_t RC_mess;
|
||||
|
||||
BASKETBALL basketball;
|
||||
void Task_Ball(void *argument)
|
||||
{
|
||||
(void)argument; /* 未使用argument,消除警告 */
|
||||
const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_CAN;
|
||||
|
||||
uint32_t tick = osKernelGetTickCount(); /* 控制任务运行频率的计算 */
|
||||
basketball.hand=0;
|
||||
basketball.paw=0;
|
||||
while(1)
|
||||
{
|
||||
|
||||
handling_ball(basketball.hand, basketball.paw);
|
||||
|
||||
tick += delay_tick; /* 计算下一个唤醒时刻 */
|
||||
osDelayUntil(tick); /* 运行结束,等待下一个周期唤醒 */
|
||||
}
|
||||
|
||||
}
|
5
User/task/ball_task.h
Normal file
5
User/task/ball_task.h
Normal file
@ -0,0 +1,5 @@
|
||||
#ifndef _BALL_TASK_H_
|
||||
#define _BALL_TASK_H_
|
||||
|
||||
|
||||
#endif
|
@ -14,7 +14,7 @@ extern motor_measure_t *motor_3508_data;
|
||||
void Task_Can(void *argument)
|
||||
{
|
||||
(void)argument; /* 未使用argument,消除警告 */
|
||||
// const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_CAN;
|
||||
const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_CAN;
|
||||
|
||||
djiInit();//FIFO滤波器初始化
|
||||
Odrive_Can_Init();
|
||||
@ -29,8 +29,8 @@ void Task_Can(void *argument)
|
||||
//将can数据添加到消息队列
|
||||
|
||||
|
||||
// tick += delay_tick; /* 计算下一个唤醒时刻 */
|
||||
// osDelayUntil(tick); /* 运行结束,等待下一个周期唤醒 */
|
||||
tick += delay_tick; /* 计算下一个唤醒时刻 */
|
||||
osDelayUntil(tick); /* 运行结束,等待下一个周期唤醒 */
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -9,6 +9,7 @@
|
||||
|
||||
extern RC_mess_t RC_mess;
|
||||
extern int16_t result;
|
||||
extern int16_t t_result;
|
||||
extern motor_measure_t *motor_3508_data;
|
||||
float vofa[8];
|
||||
/**
|
||||
@ -24,7 +25,7 @@ void Task_Motor(void *argument)
|
||||
{
|
||||
(void)argument; /* 未使用argument,消除警告 */
|
||||
|
||||
// const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_CTRL_CHASSIS;
|
||||
const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_CTRL_CHASSIS;
|
||||
|
||||
motor_init();
|
||||
|
||||
@ -37,18 +38,18 @@ void Task_Motor(void *argument)
|
||||
//电机控制
|
||||
//motor_speed(speed);
|
||||
m=angle*(8191/360);
|
||||
motor_pos(m);
|
||||
// motor_pos(m);
|
||||
trigger_pos(m);
|
||||
//CAN_cmd_200(result[MOTOR_UP],result[MOTOR_UP],result[MOTOR_UP],result[MOTOR_UP],&hcan1);
|
||||
CAN_cmd_200(result,0,0,0,&hcan1);
|
||||
CAN_cmd_200(t_result,0,0,0,&hcan1);
|
||||
osDelay(2);
|
||||
|
||||
// vofa[0]=motor_3508_data->speed_rpm;
|
||||
// vofa[1]=speed;
|
||||
// vofa_tx_main(vofa);
|
||||
|
||||
// tick += delay_tick;
|
||||
// osDelayUntil(tick);
|
||||
|
||||
tick += delay_tick;
|
||||
osDelayUntil(tick);
|
||||
|
||||
}
|
||||
|
||||
|
@ -16,14 +16,14 @@ void Task_Go(void *argument)
|
||||
#if GOUSE==1
|
||||
|
||||
//HAL_Delay(2000);
|
||||
gimbalInit();
|
||||
// gimbalInit();
|
||||
//HAL_GPIO_WritePin(ledGreen_GPIO_Port,ledGreen_Pin,GPIO_PIN_RESET);
|
||||
|
||||
while(1)
|
||||
{
|
||||
|
||||
LED_green();
|
||||
gimbalFlow();
|
||||
// gimbalFlow();
|
||||
osDelay(1);
|
||||
}
|
||||
#else
|
||||
|
@ -48,7 +48,10 @@ task_runtime.thread.nuc =
|
||||
osThreadNew(Task_nuc, NULL, &attr_nuc);
|
||||
// rc
|
||||
task_runtime.thread.rc =
|
||||
osThreadNew(Task_Rc, NULL, &attr_rc);
|
||||
osThreadNew(Task_Rc, NULL, &attr_rc);
|
||||
// ball
|
||||
task_runtime.thread.ball =
|
||||
osThreadNew(Task_Ball, NULL, &attr_ball);
|
||||
|
||||
/* 消息队列 */
|
||||
//can
|
||||
|
@ -3,6 +3,7 @@
|
||||
#include "FreeRTOS.h"
|
||||
#include "main.h"
|
||||
#include "led.h"
|
||||
#include "buzzer.h"
|
||||
|
||||
void Task_Led(void *argument) {
|
||||
(void)argument; /* 未使用argument,消除警告 */
|
||||
@ -10,9 +11,10 @@ void Task_Led(void *argument) {
|
||||
for (;;) {
|
||||
|
||||
// LED_red();
|
||||
LED_bule();
|
||||
// LED_bule();
|
||||
// see_you_again();
|
||||
// LED_green();
|
||||
|
||||
osDelay(500);
|
||||
// osDelay(500);
|
||||
}
|
||||
}
|
||||
|
@ -15,11 +15,11 @@ void Task_nuc(void *argument)
|
||||
{
|
||||
(void)argument; /* 未使用argument,消除警告 */
|
||||
|
||||
// const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_AI;
|
||||
const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_AI;
|
||||
|
||||
NUC_Init(&cmd_fromnuc);
|
||||
|
||||
uint32_t tick = osKernelGetTickCount();
|
||||
uint32_t tick = osKernelGetTickCount();
|
||||
|
||||
while(1)
|
||||
{
|
||||
@ -42,8 +42,8 @@ void Task_nuc(void *argument)
|
||||
// osMessageQueuePut(task_runtime.msgq.cmd.raw.nuc,&(cmd_fromnuc),0,0);
|
||||
osDelay(2);
|
||||
|
||||
// tick += delay_tick; /* 计算下一个唤醒时刄1ķ*/
|
||||
// osDelayUntil(tick);
|
||||
tick += delay_tick; /* 计算下一个唤醒时刄1ķ*/
|
||||
osDelayUntil(tick);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -3,29 +3,45 @@
|
||||
#include "FreeRTOS.h"
|
||||
#include "attrTask.h"
|
||||
#include <cmsis_os2.h>
|
||||
#include "shoot_task.h"
|
||||
#include "odrive_shoot.h"
|
||||
#include "remote_control.h"
|
||||
#include "shoot.h"
|
||||
#include "odrive_shoot.h"
|
||||
#include "read_spi.h"
|
||||
|
||||
extern RC_mess_t RC_mess;
|
||||
const odrive_msg_t *odrive_msg1;
|
||||
Encoder_t encoder;
|
||||
double angles;
|
||||
int32_t rounds;
|
||||
int angleo = 0; //发射角度
|
||||
#define GO1_SHOOT 0
|
||||
#define ODRIVE_SHOOT 1
|
||||
|
||||
void Task_Shoot(void *argument)
|
||||
{
|
||||
(void)argument; /* 未使用argument,消除警告 */
|
||||
// const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_CAN;
|
||||
// odrive_CB();
|
||||
// uint32_t tick = osKernelGetTickCount(); /* 控制任务运行频率的计算 */
|
||||
const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_CAN;
|
||||
Encoder_Init(&encoder);
|
||||
#if GO1_SHOOT == 1
|
||||
shooterInit();
|
||||
#endif
|
||||
|
||||
uint32_t tick = osKernelGetTickCount(); /* 控制任务运行频率的计算 */
|
||||
|
||||
while(1)
|
||||
{
|
||||
shootStep();
|
||||
#if GO1_SHOOT == 1
|
||||
|
||||
shoot_ball(0);
|
||||
|
||||
odrive_get_encode(AXIS0_NODE);
|
||||
|
||||
odrive_msg1 = Get_Odrive_Point();
|
||||
osDelay(2);
|
||||
#elif ODRIVE_SHOOT == 1
|
||||
shootStep();
|
||||
//shoot_odrive(angleo);
|
||||
#endif
|
||||
// 更新编码器数据
|
||||
Update_Encoder(&encoder);
|
||||
|
||||
|
||||
// tick += delay_tick; /* 计算下一个唤醒时刻 */
|
||||
// osDelayUntil(tick); /* 运行结束,等待下一个周期唤醒 */
|
||||
tick += delay_tick; /* 计算下一个唤醒时刻 */
|
||||
osDelayUntil(tick); /* 运行结束,等待下一个周期唤醒 */
|
||||
}
|
||||
|
||||
}
|
||||
|
53
mycode1.ioc
53
mycode1.ioc
@ -67,8 +67,9 @@ Mcu.CPN=STM32F407IGH6
|
||||
Mcu.Family=STM32F4
|
||||
Mcu.IP0=CAN1
|
||||
Mcu.IP1=CAN2
|
||||
Mcu.IP10=USART3
|
||||
Mcu.IP11=USART6
|
||||
Mcu.IP10=USART1
|
||||
Mcu.IP11=USART3
|
||||
Mcu.IP12=USART6
|
||||
Mcu.IP2=DMA
|
||||
Mcu.IP3=FREERTOS
|
||||
Mcu.IP4=NVIC
|
||||
@ -76,8 +77,8 @@ Mcu.IP5=RCC
|
||||
Mcu.IP6=SPI2
|
||||
Mcu.IP7=SYS
|
||||
Mcu.IP8=TIM1
|
||||
Mcu.IP9=USART1
|
||||
Mcu.IPNb=12
|
||||
Mcu.IP9=TIM4
|
||||
Mcu.IPNb=13
|
||||
Mcu.Name=STM32F407I(E-G)Hx
|
||||
Mcu.Package=UFBGA176
|
||||
Mcu.Pin0=PB5
|
||||
@ -93,21 +94,26 @@ Mcu.Pin17=PH12
|
||||
Mcu.Pin18=PH11
|
||||
Mcu.Pin19=PH10
|
||||
Mcu.Pin2=PA14
|
||||
Mcu.Pin20=PE9
|
||||
Mcu.Pin21=PB12
|
||||
Mcu.Pin22=PB13
|
||||
Mcu.Pin23=PB14
|
||||
Mcu.Pin24=PB15
|
||||
Mcu.Pin25=VP_FREERTOS_VS_CMSIS_V2
|
||||
Mcu.Pin26=VP_SYS_VS_Systick
|
||||
Mcu.Pin20=PD14
|
||||
Mcu.Pin21=PE13
|
||||
Mcu.Pin22=PE9
|
||||
Mcu.Pin23=PE11
|
||||
Mcu.Pin24=PE14
|
||||
Mcu.Pin25=PB12
|
||||
Mcu.Pin26=PB13
|
||||
Mcu.Pin27=PB14
|
||||
Mcu.Pin28=PB15
|
||||
Mcu.Pin29=VP_FREERTOS_VS_CMSIS_V2
|
||||
Mcu.Pin3=PA13
|
||||
Mcu.Pin30=VP_SYS_VS_Systick
|
||||
Mcu.Pin31=VP_TIM4_VS_ClockSourceINT
|
||||
Mcu.Pin4=PB7
|
||||
Mcu.Pin5=PB6
|
||||
Mcu.Pin6=PD0
|
||||
Mcu.Pin7=PC11
|
||||
Mcu.Pin8=PC10
|
||||
Mcu.Pin9=PI7
|
||||
Mcu.PinsNb=27
|
||||
Mcu.PinsNb=32
|
||||
Mcu.ThirdPartyNb=0
|
||||
Mcu.UserConstants=
|
||||
Mcu.UserName=STM32F407IGHx
|
||||
@ -174,6 +180,22 @@ PD0.Signal=CAN1_RX
|
||||
PD1.Locked=true
|
||||
PD1.Mode=CAN_Activate
|
||||
PD1.Signal=CAN1_TX
|
||||
PD14.GPIOParameters=GPIO_Label
|
||||
PD14.GPIO_Label=buzzer
|
||||
PD14.Locked=true
|
||||
PD14.Signal=S_TIM4_CH3
|
||||
PE11.GPIOParameters=GPIO_Label
|
||||
PE11.GPIO_Label=key
|
||||
PE11.Locked=true
|
||||
PE11.Signal=GPIO_Output
|
||||
PE13.GPIOParameters=GPIO_Label
|
||||
PE13.GPIO_Label=down
|
||||
PE13.Locked=true
|
||||
PE13.Signal=GPIO_Output
|
||||
PE14.GPIOParameters=GPIO_Label
|
||||
PE14.GPIO_Label=paw
|
||||
PE14.Locked=true
|
||||
PE14.Signal=GPIO_Output
|
||||
PE9.Locked=true
|
||||
PE9.Signal=S_TIM1_CH1
|
||||
PG14.Mode=Asynchronous
|
||||
@ -272,6 +294,8 @@ RCC.VCOOutputFreq_Value=336000000
|
||||
RCC.VcooutputI2S=192000000
|
||||
SH.S_TIM1_CH1.0=TIM1_CH1,PWM Generation1 CH1
|
||||
SH.S_TIM1_CH1.ConfNb=1
|
||||
SH.S_TIM4_CH3.0=TIM4_CH3,PWM Generation3 CH3
|
||||
SH.S_TIM4_CH3.ConfNb=1
|
||||
SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_32
|
||||
SPI2.CLKPhase=SPI_PHASE_2EDGE
|
||||
SPI2.CalculateBaudRate=1.3125 MBits/s
|
||||
@ -285,6 +309,9 @@ TIM1.IPParameters=Channel-PWM Generation1 CH1,Prescaler,Period,Pulse-PWM Generat
|
||||
TIM1.Period=20000-1
|
||||
TIM1.Prescaler=168-1
|
||||
TIM1.Pulse-PWM\ Generation1\ CH1=2000
|
||||
TIM4.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
|
||||
TIM4.IPParameters=Channel-PWM Generation3 CH3,Period
|
||||
TIM4.Period=20999
|
||||
USART1.BaudRate=115200
|
||||
USART1.IPParameters=VirtualMode,BaudRate
|
||||
USART1.VirtualMode=VM_ASYNC
|
||||
@ -299,5 +326,7 @@ VP_FREERTOS_VS_CMSIS_V2.Mode=CMSIS_V2
|
||||
VP_FREERTOS_VS_CMSIS_V2.Signal=FREERTOS_VS_CMSIS_V2
|
||||
VP_SYS_VS_Systick.Mode=SysTick
|
||||
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
|
||||
VP_TIM4_VS_ClockSourceINT.Mode=Internal
|
||||
VP_TIM4_VS_ClockSourceINT.Signal=TIM4_VS_ClockSourceINT
|
||||
board=custom
|
||||
rtos.0.ip=FREERTOS
|
||||
|
Loading…
Reference in New Issue
Block a user