diff --git a/Core/Inc/stm32f4xx_it.h b/Core/Inc/stm32f4xx_it.h index dc281f4..80963e8 100644 --- a/Core/Inc/stm32f4xx_it.h +++ b/Core/Inc/stm32f4xx_it.h @@ -61,6 +61,7 @@ void CAN1_SCE_IRQHandler(void); void TIM1_TRG_COM_TIM11_IRQHandler(void); void USART2_IRQHandler(void); void USART3_IRQHandler(void); +void UART4_IRQHandler(void); void TIM6_DAC_IRQHandler(void); void TIM7_IRQHandler(void); void DMA2_Stream2_IRQHandler(void); diff --git a/Core/Inc/usart.h b/Core/Inc/usart.h index 4d94598..abe862f 100644 --- a/Core/Inc/usart.h +++ b/Core/Inc/usart.h @@ -33,6 +33,8 @@ extern DMA_HandleTypeDef hdma_usart2_rx; extern DMA_HandleTypeDef hdma_usart2_tx; /* USER CODE END Includes */ +extern UART_HandleTypeDef huart4; + extern UART_HandleTypeDef huart1; extern UART_HandleTypeDef huart2; @@ -43,6 +45,7 @@ extern UART_HandleTypeDef huart3; /* USER CODE END Private defines */ +void MX_UART4_Init(void); void MX_USART1_UART_Init(void); void MX_USART2_UART_Init(void); void MX_USART3_UART_Init(void); diff --git a/Core/Src/gpio.c b/Core/Src/gpio.c index eea319d..35605e9 100644 --- a/Core/Src/gpio.c +++ b/Core/Src/gpio.c @@ -69,12 +69,10 @@ void MX_GPIO_Init(void) /*Configure GPIO pins : PC13 PC14 PC15 PC1 PC2 PC3 PC5 PC6 - PC7 PC8 PC10 PC11 - PC12 */ + PC7 PC8 PC10 PC12 */ GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_1 |GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_5|GPIO_PIN_6 - |GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_10|GPIO_PIN_11 - |GPIO_PIN_12; + |GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_10|GPIO_PIN_12; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); @@ -85,8 +83,8 @@ void MX_GPIO_Init(void) GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - /*Configure GPIO pins : PA0 PA4 PA8 PA15 */ - GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_4|GPIO_PIN_8|GPIO_PIN_15; + /*Configure GPIO pins : PA4 PA8 PA15 */ + GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_8|GPIO_PIN_15; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); diff --git a/Core/Src/main.c b/Core/Src/main.c index 6a3d354..26ceada 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -114,6 +114,7 @@ int main(void) MX_ADC1_Init(); MX_TIM2_Init(); MX_USART2_UART_Init(); + MX_UART4_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ diff --git a/Core/Src/stm32f4xx_it.c b/Core/Src/stm32f4xx_it.c index 63e3aae..b8a9d7f 100644 --- a/Core/Src/stm32f4xx_it.c +++ b/Core/Src/stm32f4xx_it.c @@ -63,6 +63,7 @@ extern DMA_HandleTypeDef hdma_usart1_rx; extern DMA_HandleTypeDef hdma_usart1_tx; extern DMA_HandleTypeDef hdma_usart2_rx; extern DMA_HandleTypeDef hdma_usart2_tx; +extern UART_HandleTypeDef huart4; extern UART_HandleTypeDef huart2; extern UART_HandleTypeDef huart3; extern TIM_HandleTypeDef htim11; @@ -297,6 +298,20 @@ void USART3_IRQHandler(void) } /** + * @brief This function handles UART4 global interrupt. + */ +void UART4_IRQHandler(void) +{ + /* USER CODE BEGIN UART4_IRQn 0 */ + + /* USER CODE END UART4_IRQn 0 */ + HAL_UART_IRQHandler(&huart4); + /* USER CODE BEGIN UART4_IRQn 1 */ + + /* USER CODE END UART4_IRQn 1 */ +} + +/** * @brief This function handles TIM6 global interrupt, DAC1 and DAC2 underrun error interrupts. */ void TIM6_DAC_IRQHandler(void) diff --git a/Core/Src/usart.c b/Core/Src/usart.c index ff5092b..b1ec447 100644 --- a/Core/Src/usart.c +++ b/Core/Src/usart.c @@ -24,6 +24,7 @@ /* USER CODE END 0 */ +UART_HandleTypeDef huart4; UART_HandleTypeDef huart1; UART_HandleTypeDef huart2; UART_HandleTypeDef huart3; @@ -32,6 +33,34 @@ DMA_HandleTypeDef hdma_usart1_tx; DMA_HandleTypeDef hdma_usart2_rx; DMA_HandleTypeDef hdma_usart2_tx; +/* UART4 init function */ +void MX_UART4_Init(void) +{ + + /* USER CODE BEGIN UART4_Init 0 */ + + /* USER CODE END UART4_Init 0 */ + + /* USER CODE BEGIN UART4_Init 1 */ + + /* USER CODE END UART4_Init 1 */ + huart4.Instance = UART4; + huart4.Init.BaudRate = 115200; + huart4.Init.WordLength = UART_WORDLENGTH_8B; + huart4.Init.StopBits = UART_STOPBITS_1; + huart4.Init.Parity = UART_PARITY_NONE; + huart4.Init.Mode = UART_MODE_TX_RX; + huart4.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart4.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart4) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN UART4_Init 2 */ + + /* USER CODE END UART4_Init 2 */ + +} /* USART1 init function */ void MX_USART1_UART_Init(void) @@ -74,7 +103,7 @@ void MX_USART2_UART_Init(void) /* USER CODE END USART2_Init 1 */ huart2.Instance = USART2; - huart2.Init.BaudRate = 115200; + huart2.Init.BaudRate = 38400; huart2.Init.WordLength = UART_WORDLENGTH_8B; huart2.Init.StopBits = UART_STOPBITS_1; huart2.Init.Parity = UART_PARITY_NONE; @@ -124,7 +153,42 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) { GPIO_InitTypeDef GPIO_InitStruct = {0}; - if(uartHandle->Instance==USART1) + if(uartHandle->Instance==UART4) + { + /* USER CODE BEGIN UART4_MspInit 0 */ + + /* USER CODE END UART4_MspInit 0 */ + /* UART4 clock enable */ + __HAL_RCC_UART4_CLK_ENABLE(); + + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + /**UART4 GPIO Configuration + PA0-WKUP ------> UART4_TX + PC11 ------> UART4_RX + */ + GPIO_InitStruct.Pin = GPIO_PIN_0; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF8_UART4; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = GPIO_PIN_11; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF8_UART4; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /* UART4 interrupt Init */ + HAL_NVIC_SetPriority(UART4_IRQn, 5, 0); + HAL_NVIC_EnableIRQ(UART4_IRQn); + /* USER CODE BEGIN UART4_MspInit 1 */ + + /* USER CODE END UART4_MspInit 1 */ + } + else if(uartHandle->Instance==USART1) { /* USER CODE BEGIN USART1_MspInit 0 */ @@ -281,7 +345,29 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle) { - if(uartHandle->Instance==USART1) + if(uartHandle->Instance==UART4) + { + /* USER CODE BEGIN UART4_MspDeInit 0 */ + + /* USER CODE END UART4_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_UART4_CLK_DISABLE(); + + /**UART4 GPIO Configuration + PA0-WKUP ------> UART4_TX + PC11 ------> UART4_RX + */ + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_0); + + HAL_GPIO_DeInit(GPIOC, GPIO_PIN_11); + + /* UART4 interrupt Deinit */ + HAL_NVIC_DisableIRQ(UART4_IRQn); + /* USER CODE BEGIN UART4_MspDeInit 1 */ + + /* USER CODE END UART4_MspDeInit 1 */ + } + else if(uartHandle->Instance==USART1) { /* USER CODE BEGIN USART1_MspDeInit 0 */ diff --git a/README.md b/README.md index fe07e76..e69de29 100644 --- a/README.md +++ b/README.md @@ -1,44 +0,0 @@ -ref:https://iflytop1.feishu.cn/wiki/PbUHwG2o6ikWagkmsiqcTFwAnjp - -// 电机通道编号 -#define MOTOR_SPI hspi1 -#define TMC5130_MOTOR_NUM 1 -#define MOTOR0_CSN PA4 -#define MOTOR0_ENN PB7 -#define MOTOR1_SPI_MODE_SELECT PB4 - -#define ID0 PC0 -#define ID1 PC1 -#define ID2 PC2 -#define ID3 PC3 -#define ID4 PC4 - -// 调试串口zwsd@192.168.1.3:project_boditech_vidas_a8000_v2/a8000_cliptip_module.git -#define DEBUG_UART huart1 -// 调试指示灯 -#define DEBUG_LIGHT_GPIO PE2 -// 微秒延迟定时器,注意该延时定时器需要按照以下文档进行配置 -// http://192.168.1.3:3000/zwikipedia/iflytop_wikipedia/src/branch/master/doc/stm32cubemx_us_timer.md -#define DELAY_US_TIMER htim6 - -// 步进电机 -#define STEPPER_MOTOR_ZERO_SENSOR SENSOR_INT0 -#define STEPPER_MOTOR_FORWARD_SENSOR SENSOR_INT8 -#define STEPPER_MOTOR_BACKWARD_SENSOR SENSOR_INT9 - -#define SENSOR_INT0 PD0 -#define SENSOR_INT1 PD1 -#define SENSOR_INT2 PD2 -#define SENSOR_INT3 PD3 -#define SENSOR_INT4 PD4 -#define SENSOR_INT5 PD5 -#define SENSOR_INT6 PD6 -#define SENSOR_INT7 PD7 -#define SENSOR_INT8 PD8 -#define SENSOR_INT9 PD9 - ---------------------------------------------------- -1. 支持位置限制逻辑 -2. 支持获取当前坐标逻辑 -3. 支持记录当前点作为逻辑点逻辑 -4. 支持flash保存参数逻辑 \ No newline at end of file diff --git a/a8000_cliptip_module.ioc b/a8000_cliptip_module.ioc index 50782d4..2397f94 100644 --- a/a8000_cliptip_module.ioc +++ b/a8000_cliptip_module.ioc @@ -89,9 +89,10 @@ Mcu.IP12=TIM2 Mcu.IP13=TIM3 Mcu.IP14=TIM6 Mcu.IP15=TIM7 -Mcu.IP16=USART1 -Mcu.IP17=USART2 -Mcu.IP18=USART3 +Mcu.IP16=UART4 +Mcu.IP17=USART1 +Mcu.IP18=USART2 +Mcu.IP19=USART3 Mcu.IP2=CRC Mcu.IP3=DMA Mcu.IP4=FREERTOS @@ -100,45 +101,47 @@ Mcu.IP6=NVIC Mcu.IP7=RCC Mcu.IP8=RNG Mcu.IP9=SPI1 -Mcu.IPNb=19 +Mcu.IPNb=20 Mcu.Name=STM32F407V(E-G)Tx Mcu.Package=LQFP100 Mcu.Pin0=PH0-OSC_IN Mcu.Pin1=PH1-OSC_OUT -Mcu.Pin10=PB0 -Mcu.Pin11=PB1 -Mcu.Pin12=PE9 -Mcu.Pin13=PE13 -Mcu.Pin14=PB10 -Mcu.Pin15=PB11 -Mcu.Pin16=PC9 -Mcu.Pin17=PA9 -Mcu.Pin18=PA10 -Mcu.Pin19=PA11 +Mcu.Pin10=PC4 +Mcu.Pin11=PB0 +Mcu.Pin12=PB1 +Mcu.Pin13=PE9 +Mcu.Pin14=PE13 +Mcu.Pin15=PB10 +Mcu.Pin16=PB11 +Mcu.Pin17=PC9 +Mcu.Pin18=PA9 +Mcu.Pin19=PA10 Mcu.Pin2=PC0 -Mcu.Pin20=PA12 -Mcu.Pin21=PA13 -Mcu.Pin22=PA14 -Mcu.Pin23=PD5 -Mcu.Pin24=PD6 -Mcu.Pin25=PB6 -Mcu.Pin26=PB7 -Mcu.Pin27=VP_CRC_VS_CRC -Mcu.Pin28=VP_FREERTOS_VS_CMSIS_V1 -Mcu.Pin29=VP_RNG_VS_RNG -Mcu.Pin3=PA1 -Mcu.Pin30=VP_SYS_VS_tim11 -Mcu.Pin31=VP_TIM1_VS_ClockSourceINT -Mcu.Pin32=VP_TIM3_VS_ClockSourceINT -Mcu.Pin33=VP_TIM6_VS_ClockSourceINT -Mcu.Pin34=VP_TIM7_VS_ClockSourceINT -Mcu.Pin4=PA2 -Mcu.Pin5=PA3 -Mcu.Pin6=PA5 -Mcu.Pin7=PA6 -Mcu.Pin8=PA7 -Mcu.Pin9=PC4 -Mcu.PinsNb=35 +Mcu.Pin20=PA11 +Mcu.Pin21=PA12 +Mcu.Pin22=PA13 +Mcu.Pin23=PA14 +Mcu.Pin24=PC11 +Mcu.Pin25=PD5 +Mcu.Pin26=PD6 +Mcu.Pin27=PB6 +Mcu.Pin28=PB7 +Mcu.Pin29=VP_CRC_VS_CRC +Mcu.Pin3=PA0-WKUP +Mcu.Pin30=VP_FREERTOS_VS_CMSIS_V1 +Mcu.Pin31=VP_RNG_VS_RNG +Mcu.Pin32=VP_SYS_VS_tim11 +Mcu.Pin33=VP_TIM1_VS_ClockSourceINT +Mcu.Pin34=VP_TIM3_VS_ClockSourceINT +Mcu.Pin35=VP_TIM6_VS_ClockSourceINT +Mcu.Pin36=VP_TIM7_VS_ClockSourceINT +Mcu.Pin4=PA1 +Mcu.Pin5=PA2 +Mcu.Pin6=PA3 +Mcu.Pin7=PA5 +Mcu.Pin8=PA6 +Mcu.Pin9=PA7 +Mcu.PinsNb=37 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F407VETx @@ -170,9 +173,12 @@ NVIC.TIM6_DAC_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.TIM7_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.TimeBase=TIM1_TRG_COM_TIM11_IRQn NVIC.TimeBaseIP=TIM11 +NVIC.UART4_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.USART2_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.USART3_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false +PA0-WKUP.Mode=Asynchronous +PA0-WKUP.Signal=UART4_TX PA1.Locked=true PA1.Signal=S_TIM2_CH2 PA10.Mode=Asynchronous @@ -214,6 +220,8 @@ PB7.Mode=I2C PB7.Signal=I2C1_SDA PC0.Locked=true PC0.Signal=GPXTI0 +PC11.Mode=Asynchronous +PC11.Signal=UART4_RX PC4.Locked=true PC4.Signal=GPXTI4 PC9.Locked=true @@ -342,10 +350,13 @@ TIM6.IPParameters=Prescaler TIM6.Prescaler=71 TIM7.IPParameters=Prescaler TIM7.Prescaler=81 +UART4.IPParameters=VirtualMode +UART4.VirtualMode=Asynchronous USART1.BaudRate=961200 USART1.IPParameters=VirtualMode,BaudRate USART1.VirtualMode=VM_ASYNC -USART2.IPParameters=VirtualMode +USART2.BaudRate=9600 +USART2.IPParameters=VirtualMode,BaudRate USART2.VirtualMode=VM_ASYNC USART3.BaudRate=9600 USART3.IPParameters=VirtualMode,BaudRate diff --git a/a8000_cliptip_module.launch b/a8000_cliptip_module.launch index 40be9f4..558eaa2 100644 --- a/a8000_cliptip_module.launch +++ b/a8000_cliptip_module.launch @@ -52,7 +52,7 @@ - + diff --git a/sdk b/sdk index fbe10ee..2835695 160000 --- a/sdk +++ b/sdk @@ -1 +1 @@ -Subproject commit fbe10eeb6c72a4419f1e05c745bca2b7518e54e8 +Subproject commit 283569575d2fdfa9a9719bbcfba1d874d52aff8f diff --git a/usrc/board.h b/usrc/board.h index ae0d35b..9f7093b 100644 --- a/usrc/board.h +++ b/usrc/board.h @@ -9,4 +9,3 @@ #define MOTOR_CFG_FLASH_MARK "MOTOR_CFG_FLASH_MARK" -#define BOARD_ID 2 diff --git a/usrc/main.cpp b/usrc/main.cpp index a11a563..56430e0 100644 --- a/usrc/main.cpp +++ b/usrc/main.cpp @@ -52,20 +52,20 @@ static void initsubmodule() { g_motor.setIHOLD_IRUN(0, 8, 10); static ZGPIO input[10]; - input[0].initAsInput(PD1 /*REFL*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); - input[1].initAsInput(PD2 /*REFR*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); + input[0].initAsInput(PD2 /*REFL*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); + input[1].initAsInput(PD1 /*REFR*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); input[2].initAsInput(PD3 /*DIAG0*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); input[3].initAsInput(PD4 /*DIAG1*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); I_StepMotorCtrlModule::flash_config_t smcm_cfg = {0}; StepMotorCtrlModule::create_default_cfg(smcm_cfg); - smcm_cfg.base_param.distance_scale = 100; + smcm_cfg.base_param.distance_scale = 80; smcm_cfg.base_param.distance_scale_denominator = 1; smcm_cfg.base_param.ihold = 1; smcm_cfg.base_param.irun = 8; - smcm_cfg.base_param.x_shaft = true; - smcm_cfg.base_param.maxspeed = 300; - smcm_cfg.base_param.run_to_zero_speed = 50; + smcm_cfg.base_param.x_shaft = false; + smcm_cfg.base_param.maxspeed = 500; + smcm_cfg.base_param.run_to_zero_speed = 100; smcm_cfg.base_param.max_x = 0; smcm_cfg.base_param.min_x = 0; @@ -76,7 +76,7 @@ static void initsubmodule() { { static PipetteModule g_pipetteModule; PipetteModule::config_t cfg = { - .limit_ul = 100, + .limit_ul = 30, }; PipetteModule::hardward_config_t hardwarecfg = { @@ -92,7 +92,7 @@ static void initsubmodule() { // static M3078CodeScanner codescanner; static M3078CodeScanner::hardware_config_t cfg = { - .uart = &huart2, + .uart = &huart4, .hdma_rx = nullptr, .hdma_tx = nullptr,