diff --git a/32g431.ioc b/32g431.ioc index 9a8eae9..8ff502c 100644 --- a/32g431.ioc +++ b/32g431.ioc @@ -38,6 +38,7 @@ Mcu.CPN=STM32G431CBU3 Mcu.Family=STM32G4 Mcu.IP0=DMA Mcu.IP1=FDCAN1 +Mcu.IP10=USART3 Mcu.IP2=IWDG Mcu.IP3=LPUART1 Mcu.IP4=NVIC @@ -46,7 +47,7 @@ Mcu.IP6=SYS Mcu.IP7=TIM6 Mcu.IP8=USART1 Mcu.IP9=USART2 -Mcu.IPNb=10 +Mcu.IPNb=11 Mcu.Name=STM32G431C(6-8-B)Ux Mcu.Package=UFQFPN48 Mcu.Pin0=PF0-OSC_IN @@ -60,14 +61,16 @@ Mcu.Pin15=PA11 Mcu.Pin16=PA12 Mcu.Pin17=PA13 Mcu.Pin18=PA14 -Mcu.Pin19=PB3 +Mcu.Pin19=PC10 Mcu.Pin2=PA2 -Mcu.Pin20=PB4 -Mcu.Pin21=PB5 -Mcu.Pin22=VP_IWDG_VS_IWDG -Mcu.Pin23=VP_SYS_VS_Systick -Mcu.Pin24=VP_SYS_VS_DBSignals -Mcu.Pin25=VP_TIM6_VS_ClockSourceINT +Mcu.Pin20=PC11 +Mcu.Pin21=PB3 +Mcu.Pin22=PB4 +Mcu.Pin23=PB5 +Mcu.Pin24=VP_IWDG_VS_IWDG +Mcu.Pin25=VP_SYS_VS_Systick +Mcu.Pin26=VP_SYS_VS_DBSignals +Mcu.Pin27=VP_TIM6_VS_ClockSourceINT Mcu.Pin3=PA3 Mcu.Pin4=PA4 Mcu.Pin5=PA5 @@ -75,7 +78,7 @@ Mcu.Pin6=PA6 Mcu.Pin7=PA7 Mcu.Pin8=PC4 Mcu.Pin9=PB10 -Mcu.PinsNb=26 +Mcu.PinsNb=28 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32G431CBUx @@ -96,6 +99,7 @@ NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false NVIC.TIM6_DAC_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true +NVIC.USART3_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false PA10.Mode=Asynchronous PA10.Signal=USART1_RX @@ -127,10 +131,11 @@ PA7.GPIOParameters=GPIO_Label PA7.GPIO_Label=K2 PA7.Locked=true PA7.Signal=GPIO_Output -PA8.GPIOParameters=PinState,GPIO_Label +PA8.GPIOParameters=GPIO_Speed,PinState,GPIO_Label PA8.GPIO_Label=RS485_2_DIR +PA8.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH PA8.Locked=true -PA8.PinState=GPIO_PIN_SET +PA8.PinState=GPIO_PIN_RESET PA8.Signal=GPIO_Output PA9.Locked=true PA9.Mode=Asynchronous @@ -141,10 +146,11 @@ PB10.Signal=LPUART1_RX PB11.Locked=true PB11.Mode=Asynchronous PB11.Signal=LPUART1_TX -PB12.GPIOParameters=PinState,GPIO_Label +PB12.GPIOParameters=GPIO_Speed,PinState,GPIO_Label PB12.GPIO_Label=RS485_1_DIR +PB12.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH PB12.Locked=true -PB12.PinState=GPIO_PIN_SET +PB12.PinState=GPIO_PIN_RESET PB12.Signal=GPIO_Output PB3.GPIOParameters=GPIO_Label PB3.GPIO_Label=LED3 @@ -158,6 +164,12 @@ PB5.GPIOParameters=GPIO_Label PB5.GPIO_Label=LED1 PB5.Locked=true PB5.Signal=GPIO_Output +PC10.Locked=true +PC10.Mode=Asynchronous +PC10.Signal=USART3_TX +PC11.Locked=true +PC11.Mode=Asynchronous +PC11.Signal=USART3_RX PC4.GPIOParameters=GPIO_Label PC4.GPIO_Label=K3 PC4.Locked=true @@ -199,7 +211,7 @@ ProjectManager.ToolChainLocation= ProjectManager.UAScriptAfterPath= ProjectManager.UAScriptBeforePath= ProjectManager.UnderRoot=false -ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_IWDG_Init-IWDG-false-HAL-true,5-MX_USART1_UART_Init-USART1-false-HAL-true,6-MX_TIM6_Init-TIM6-false-HAL-true,7-MX_FDCAN1_Init-FDCAN1-false-HAL-true,8-MX_LPUART1_UART_Init-LPUART1-false-HAL-true,9-MX_USART2_UART_Init-USART2-false-HAL-true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_IWDG_Init-IWDG-false-HAL-true,5-MX_USART1_UART_Init-USART1-false-HAL-true,6-MX_TIM6_Init-TIM6-false-HAL-true,7-MX_FDCAN1_Init-FDCAN1-false-HAL-true,8-MX_LPUART1_UART_Init-LPUART1-false-HAL-true,9-MX_USART3_UART_Init-USART3-false-HAL-true,10-MX_USART2_UART_Init-USART2-false-HAL-true RCC.ADC12Freq_Value=100000000 RCC.AHBFreq_Value=100000000 RCC.APB1Freq_Value=100000000 @@ -254,6 +266,8 @@ USART1.IPParameters=VirtualMode-Asynchronous,BaudRate USART1.VirtualMode-Asynchronous=VM_ASYNC USART2.IPParameters=VirtualMode-Asynchronous USART2.VirtualMode-Asynchronous=VM_ASYNC +USART3.IPParameters=VirtualMode-Asynchronous +USART3.VirtualMode-Asynchronous=VM_ASYNC VP_IWDG_VS_IWDG.Mode=IWDG_Activate VP_IWDG_VS_IWDG.Signal=IWDG_VS_IWDG VP_SYS_VS_DBSignals.Mode=DisableDeadBatterySignals diff --git a/Core/Inc/stm32g4xx_it.h b/Core/Inc/stm32g4xx_it.h index ca6cf3b..9ca6ec8 100644 --- a/Core/Inc/stm32g4xx_it.h +++ b/Core/Inc/stm32g4xx_it.h @@ -58,6 +58,7 @@ void SysTick_Handler(void); void DMA1_Channel1_IRQHandler(void); void FDCAN1_IT0_IRQHandler(void); void USART1_IRQHandler(void); +void USART3_IRQHandler(void); void TIM6_DAC_IRQHandler(void); void LPUART1_IRQHandler(void); /* USER CODE BEGIN EFP */ diff --git a/Core/Inc/usart.h b/Core/Inc/usart.h index f99ab58..550e734 100644 --- a/Core/Inc/usart.h +++ b/Core/Inc/usart.h @@ -38,6 +38,8 @@ extern UART_HandleTypeDef huart1; extern UART_HandleTypeDef huart2; +extern UART_HandleTypeDef huart3; + /* USER CODE BEGIN Private defines */ /* USER CODE END Private defines */ @@ -45,6 +47,7 @@ extern UART_HandleTypeDef huart2; void MX_LPUART1_UART_Init(void); void MX_USART1_UART_Init(void); void MX_USART2_UART_Init(void); +void MX_USART3_UART_Init(void); /* USER CODE BEGIN Prototypes */ diff --git a/Core/Src/gpio.c b/Core/Src/gpio.c index f4346c0..ea327b3 100644 --- a/Core/Src/gpio.c +++ b/Core/Src/gpio.c @@ -51,24 +51,17 @@ void MX_GPIO_Init(void) __HAL_RCC_GPIOB_CLK_ENABLE(); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOA, K4_Pin|K5_Pin|K1_Pin|K2_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOA, K4_Pin|K5_Pin|K1_Pin|K2_Pin + |RS485_2_DIR_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(K3_GPIO_Port, K3_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(RS485_1_DIR_GPIO_Port, RS485_1_DIR_Pin, GPIO_PIN_SET); + HAL_GPIO_WritePin(GPIOB, RS485_1_DIR_Pin|LED3_Pin|LED2_Pin|LED1_Pin, GPIO_PIN_RESET); - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(RS485_2_DIR_GPIO_Port, RS485_2_DIR_Pin, GPIO_PIN_SET); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOB, LED3_Pin|LED2_Pin|LED1_Pin, GPIO_PIN_RESET); - - /*Configure GPIO pins : K4_Pin K5_Pin K1_Pin K2_Pin - RS485_2_DIR_Pin */ - GPIO_InitStruct.Pin = K4_Pin|K5_Pin|K1_Pin|K2_Pin - |RS485_2_DIR_Pin; + /*Configure GPIO pins : K4_Pin K5_Pin K1_Pin K2_Pin */ + GPIO_InitStruct.Pin = K4_Pin|K5_Pin|K1_Pin|K2_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; @@ -81,8 +74,22 @@ void MX_GPIO_Init(void) GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(K3_GPIO_Port, &GPIO_InitStruct); - /*Configure GPIO pins : RS485_1_DIR_Pin LED3_Pin LED2_Pin LED1_Pin */ - GPIO_InitStruct.Pin = RS485_1_DIR_Pin|LED3_Pin|LED2_Pin|LED1_Pin; + /*Configure GPIO pin : RS485_1_DIR_Pin */ + GPIO_InitStruct.Pin = RS485_1_DIR_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + HAL_GPIO_Init(RS485_1_DIR_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : RS485_2_DIR_Pin */ + GPIO_InitStruct.Pin = RS485_2_DIR_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + HAL_GPIO_Init(RS485_2_DIR_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : LED3_Pin LED2_Pin LED1_Pin */ + GPIO_InitStruct.Pin = LED3_Pin|LED2_Pin|LED1_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; diff --git a/Core/Src/main.c b/Core/Src/main.c index 532a88d..3475dd8 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -101,6 +101,7 @@ int main(void) MX_TIM6_Init(); MX_FDCAN1_Init(); MX_LPUART1_UART_Init(); + MX_USART3_UART_Init(); MX_USART2_UART_Init(); /* USER CODE BEGIN 2 */ @@ -111,12 +112,12 @@ int main(void) #ifdef MEM_POOL_TOTAL_SIZE RD_INIT(); void Myprint_Init(void); - Myprint_Init(); + //Myprint_Init(); #endif SpoolendInit(); while (1) { - SpoolendTask(); + SpoolendTask(); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ diff --git a/Core/Src/stm32g4xx_it.c b/Core/Src/stm32g4xx_it.c index df84a78..b791adf 100644 --- a/Core/Src/stm32g4xx_it.c +++ b/Core/Src/stm32g4xx_it.c @@ -59,6 +59,7 @@ extern FDCAN_HandleTypeDef hfdcan1; extern DMA_HandleTypeDef hdma_usart1_tx; extern UART_HandleTypeDef hlpuart1; extern UART_HandleTypeDef huart1; +extern UART_HandleTypeDef huart3; extern TIM_HandleTypeDef htim6; /* USER CODE BEGIN EV */ @@ -244,6 +245,20 @@ void USART1_IRQHandler(void) /* USER CODE END USART1_IRQn 1 */ } +/** + * @brief This function handles USART3 global interrupt / USART3 wake-up interrupt through EXTI line 28. + */ +void USART3_IRQHandler(void) +{ + /* USER CODE BEGIN USART3_IRQn 0 */ + + /* USER CODE END USART3_IRQn 0 */ + HAL_UART_IRQHandler(&huart3); + /* USER CODE BEGIN USART3_IRQn 1 */ + + /* USER CODE END USART3_IRQn 1 */ +} + /** * @brief This function handles TIM6 global interrupt, DAC1 and DAC3 channel underrun error interrupts. */ diff --git a/Core/Src/usart.c b/Core/Src/usart.c index f966816..bb2f4b3 100644 --- a/Core/Src/usart.c +++ b/Core/Src/usart.c @@ -27,6 +27,7 @@ UART_HandleTypeDef hlpuart1; UART_HandleTypeDef huart1; UART_HandleTypeDef huart2; +UART_HandleTypeDef huart3; DMA_HandleTypeDef hdma_usart1_tx; /* LPUART1 init function */ @@ -159,6 +160,50 @@ void MX_USART2_UART_Init(void) /* USER CODE END USART2_Init 2 */ +} +/* USART3 init function */ + +void MX_USART3_UART_Init(void) +{ + + /* USER CODE BEGIN USART3_Init 0 */ + + /* USER CODE END USART3_Init 0 */ + + /* USER CODE BEGIN USART3_Init 1 */ + + /* USER CODE END USART3_Init 1 */ + huart3.Instance = USART3; + huart3.Init.BaudRate = 115200; + huart3.Init.WordLength = UART_WORDLENGTH_8B; + huart3.Init.StopBits = UART_STOPBITS_1; + huart3.Init.Parity = UART_PARITY_NONE; + huart3.Init.Mode = UART_MODE_TX_RX; + huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart3.Init.OverSampling = UART_OVERSAMPLING_16; + huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; + huart3.Init.ClockPrescaler = UART_PRESCALER_DIV1; + huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; + if (HAL_UART_Init(&huart3) != HAL_OK) + { + Error_Handler(); + } + if (HAL_UARTEx_SetTxFifoThreshold(&huart3, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) + { + Error_Handler(); + } + if (HAL_UARTEx_SetRxFifoThreshold(&huart3, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) + { + Error_Handler(); + } + if (HAL_UARTEx_DisableFifoMode(&huart3) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART3_Init 2 */ + + /* USER CODE END USART3_Init 2 */ + } void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) @@ -292,6 +337,43 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) /* USER CODE END USART2_MspInit 1 */ } + else if(uartHandle->Instance==USART3) + { + /* USER CODE BEGIN USART3_MspInit 0 */ + + /* USER CODE END USART3_MspInit 0 */ + + /** Initializes the peripherals clocks + */ + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART3; + PeriphClkInit.Usart3ClockSelection = RCC_USART3CLKSOURCE_PCLK1; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } + + /* USART3 clock enable */ + __HAL_RCC_USART3_CLK_ENABLE(); + + __HAL_RCC_GPIOC_CLK_ENABLE(); + /**USART3 GPIO Configuration + PC10 ------> USART3_TX + PC11 ------> USART3_RX + */ + GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF7_USART3; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /* USART3 interrupt Init */ + HAL_NVIC_SetPriority(USART3_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(USART3_IRQn); + /* USER CODE BEGIN USART3_MspInit 1 */ + + /* USER CODE END USART3_MspInit 1 */ + } } void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle) @@ -358,6 +440,26 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle) /* USER CODE END USART2_MspDeInit 1 */ } + else if(uartHandle->Instance==USART3) + { + /* USER CODE BEGIN USART3_MspDeInit 0 */ + + /* USER CODE END USART3_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_USART3_CLK_DISABLE(); + + /**USART3 GPIO Configuration + PC10 ------> USART3_TX + PC11 ------> USART3_RX + */ + HAL_GPIO_DeInit(GPIOC, GPIO_PIN_10|GPIO_PIN_11); + + /* USART3 interrupt Deinit */ + HAL_NVIC_DisableIRQ(USART3_IRQn); + /* USER CODE BEGIN USART3_MspDeInit 1 */ + + /* USER CODE END USART3_MspDeInit 1 */ + } } /* USER CODE BEGIN 1 */ diff --git a/robot b/robot index 3951688..7b27175 160000 --- a/robot +++ b/robot @@ -1 +1 @@ -Subproject commit 39516883b210d0aa525ce1872b49c4b35e6eb27b +Subproject commit 7b2717567a718df89f0a241243b2db676460580e