From 7670cda730824636af63071f6f4c9f46c98e7d5d Mon Sep 17 00:00:00 2001 From: Rene Hopf Date: Sat, 6 Jan 2018 22:59:15 +0100 Subject: [PATCH] cleanup --- Inc/adc.h | 85 --------- Inc/defines.h | 38 ++-- Inc/dma.h | 78 -------- Inc/stm32f1xx_hal_conf.h | 2 +- Inc/tim.h | 86 --------- Makefile | 40 +---- Src/adc.c | 380 --------------------------------------- Src/dma.c | 85 --------- Src/gpio.c | 219 +++++++++------------- Src/main.c | 46 ++++- Src/tim.c | 309 ------------------------------- 11 files changed, 156 insertions(+), 1212 deletions(-) delete mode 100644 Inc/adc.h delete mode 100644 Inc/dma.h delete mode 100644 Inc/tim.h delete mode 100644 Src/adc.c delete mode 100644 Src/dma.c delete mode 100644 Src/tim.c diff --git a/Inc/adc.h b/Inc/adc.h deleted file mode 100644 index d31a288..0000000 --- a/Inc/adc.h +++ /dev/null @@ -1,85 +0,0 @@ -/** - ****************************************************************************** - * File Name : ADC.h - * Description : This file provides code for the configuration - * of the ADC instances. - ****************************************************************************** - ** This notice applies to any and all portions of this file - * that are not between comment pairs USER CODE BEGIN and - * USER CODE END. Other portions of this file, whether - * inserted by the user or by software development tools - * are owned by their respective copyright owners. - * - * COPYRIGHT(c) 2017 STMicroelectronics - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************** - */ -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __adc_H -#define __adc_H -#ifdef __cplusplus - extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "stm32f1xx_hal.h" -#include "main.h" - -/* USER CODE BEGIN Includes */ - -/* USER CODE END Includes */ - -extern ADC_HandleTypeDef hadc1; -extern ADC_HandleTypeDef hadc2; -extern ADC_HandleTypeDef hadc3; - -/* USER CODE BEGIN Private defines */ - -/* USER CODE END Private defines */ - -extern void _Error_Handler(char *, int); - -void MX_ADC1_Init(void); -void MX_ADC2_Init(void); -void MX_ADC3_Init(void); - -/* USER CODE BEGIN Prototypes */ - -/* USER CODE END Prototypes */ - -#ifdef __cplusplus -} -#endif -#endif /*__ adc_H */ - -/** - * @} - */ - -/** - * @} - */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Inc/defines.h b/Inc/defines.h index f3df326..9a52200 100644 --- a/Inc/defines.h +++ b/Inc/defines.h @@ -71,9 +71,9 @@ #define RIGHT_TIM_WL_PIN GPIO_PIN_15 #define RIGHT_TIM_WL_PORT GPIOB -#define LEFT_DC_CUR_ADC ADC1 -#define LEFT_U_CUR_ADC ADC1 -#define LEFT_V_CUR_ADC ADC1 +// #define LEFT_DC_CUR_ADC ADC1 +// #define LEFT_U_CUR_ADC ADC1 +// #define LEFT_V_CUR_ADC ADC1 #define LEFT_DC_CUR_PIN GPIO_PIN_0 #define LEFT_U_CUR_PIN GPIO_PIN_0 @@ -83,9 +83,9 @@ #define LEFT_U_CUR_PORT GPIOA #define LEFT_V_CUR_PORT GPIOC -#define RIGHT_DC_CUR_ADC ADC2 -#define RIGHT_U_CUR_ADC ADC2 -#define RIGHT_V_CUR_ADC ADC2 +// #define RIGHT_DC_CUR_ADC ADC2 +// #define RIGHT_U_CUR_ADC ADC2 +// #define RIGHT_V_CUR_ADC ADC2 #define RIGHT_DC_CUR_PIN GPIO_PIN_1 #define RIGHT_U_CUR_PIN GPIO_PIN_4 @@ -95,12 +95,12 @@ #define RIGHT_U_CUR_PORT GPIOC #define RIGHT_V_CUR_PORT GPIOC -#define DCLINK_ADC ADC3 -#define DCLINK_CHANNEL +// #define DCLINK_ADC ADC3 +// #define DCLINK_CHANNEL #define DCLINK_PIN GPIO_PIN_2 #define DCLINK_PORT GPIOC -#define DCLINK_PULLUP 30000 -#define DCLINK_PULLDOWN 1000 +// #define DCLINK_PULLUP 30000 +// #define DCLINK_PULLDOWN 1000 #define LED_PIN GPIO_PIN_2 #define LED_PORT GPIOB @@ -129,10 +129,6 @@ #define MILLI_PSI (PSI * 1000) #define MILLI_V (V * 1000) - - - - #define NO 0 #define YES 1 #define ABS(a) (((a) < 0.0) ? -(a) : (a)) @@ -151,6 +147,14 @@ #define MAX3(a, b, c) MAX(a, MAX(b, c)) typedef struct { - uint16_t data1; - uint16_t data2; -} adc_buf_t; \ No newline at end of file + uint16_t rr1; + uint16_t rr2; + uint16_t rl1; + uint16_t rl2; + uint16_t r_dc1; + uint16_t l_dc2; + uint16_t batt1; + uint16_t l_tx2; + uint16_t bat1; + uint16_t l_rx2; +} adc_buf_t; diff --git a/Inc/dma.h b/Inc/dma.h deleted file mode 100644 index 9d6b17d..0000000 --- a/Inc/dma.h +++ /dev/null @@ -1,78 +0,0 @@ -/** - ****************************************************************************** - * File Name : dma.h - * Description : This file contains all the function prototypes for - * the dma.c file - ****************************************************************************** - ** This notice applies to any and all portions of this file - * that are not between comment pairs USER CODE BEGIN and - * USER CODE END. Other portions of this file, whether - * inserted by the user or by software development tools - * are owned by their respective copyright owners. - * - * COPYRIGHT(c) 2017 STMicroelectronics - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************** - */ -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __dma_H -#define __dma_H - -#ifdef __cplusplus - extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "stm32f1xx_hal.h" -#include "main.h" - -/* DMA memory to memory transfer handles -------------------------------------*/ -extern void _Error_Handler(char*, int); - -/* USER CODE BEGIN Includes */ - -/* USER CODE END Includes */ - -/* USER CODE BEGIN Private defines */ - -/* USER CODE END Private defines */ - -void MX_DMA_Init(void); - -/* USER CODE BEGIN Prototypes */ - -/* USER CODE END Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif /* __dma_H */ - -/** - * @} - */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Inc/stm32f1xx_hal_conf.h b/Inc/stm32f1xx_hal_conf.h index 497993c..7763b92 100644 --- a/Inc/stm32f1xx_hal_conf.h +++ b/Inc/stm32f1xx_hal_conf.h @@ -80,7 +80,7 @@ /*#define HAL_SPI_MODULE_ENABLED */ /*#define HAL_SRAM_MODULE_ENABLED */ #define HAL_TIM_MODULE_ENABLED -/*#define HAL_UART_MODULE_ENABLED */ +#define HAL_UART_MODULE_ENABLED /*#define HAL_USART_MODULE_ENABLED */ /*#define HAL_WWDG_MODULE_ENABLED */ diff --git a/Inc/tim.h b/Inc/tim.h deleted file mode 100644 index 0e7093f..0000000 --- a/Inc/tim.h +++ /dev/null @@ -1,86 +0,0 @@ -/** - ****************************************************************************** - * File Name : TIM.h - * Description : This file provides code for the configuration - * of the TIM instances. - ****************************************************************************** - ** This notice applies to any and all portions of this file - * that are not between comment pairs USER CODE BEGIN and - * USER CODE END. Other portions of this file, whether - * inserted by the user or by software development tools - * are owned by their respective copyright owners. - * - * COPYRIGHT(c) 2017 STMicroelectronics - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************** - */ -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __tim_H -#define __tim_H -#ifdef __cplusplus - extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "stm32f1xx_hal.h" -#include "main.h" - -/* USER CODE BEGIN Includes */ - -/* USER CODE END Includes */ - -extern TIM_HandleTypeDef htim1; -extern TIM_HandleTypeDef htim8; - -/* USER CODE BEGIN Private defines */ - -/* USER CODE END Private defines */ - -extern void _Error_Handler(char *, int); - -void MX_TIM1_Init(void); -void MX_TIM8_Init(void); - -void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); - - -/* USER CODE BEGIN Prototypes */ - -/* USER CODE END Prototypes */ - -#ifdef __cplusplus -} -#endif -#endif /*__ tim_H */ - -/** - * @} - */ - -/** - * @} - */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Makefile b/Makefile index d864f9b..f5e8fe4 100644 --- a/Makefile +++ b/Makefile @@ -1,21 +1,8 @@ -########################################################################################################################## -# File automatically-generated by tool: [projectgenerator] version: [2.26.0] date: [Fri Dec 29 02:20:09 CET 2017] -########################################################################################################################## - -# ------------------------------------------------ -# Generic Makefile (based on gcc) -# -# ChangeLog : -# 2017-02-10 - Several enhancements + project update mode -# 2015-07-22 - first version -# ------------------------------------------------ - ###################################### # target ###################################### TARGET = hover - ###################################### # building variables ###################################### @@ -24,14 +11,6 @@ DEBUG = 1 # optimization OPT = -Og - -####################################### -# paths -####################################### - -# firmware library path -PERIFLIB_PATH = - # Build path BUILD_DIR = build @@ -47,30 +26,23 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c \ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c \ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c \ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c \ -Src/gpio.c \ -Src/stm32f1xx_it.c \ -Src/main.c \ -Src/system_stm32f1xx.c \ -Src/stm32f1xx_hal_msp.c \ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c \ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c \ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c \ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c \ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c \ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c \ - +Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c \ +Src/system_stm32f1xx.c \ +Src/stm32f1xx_hal_msp.c \ +Src/gpio.c \ +Src/stm32f1xx_it.c \ +Src/main.c \ # ASM sources ASM_SOURCES = \ startup_stm32f103xe.s - -###################################### -# firmware library -###################################### -PERIFLIB_SOURCES = - - ####################################### # binaries ####################################### diff --git a/Src/adc.c b/Src/adc.c deleted file mode 100644 index d357653..0000000 --- a/Src/adc.c +++ /dev/null @@ -1,380 +0,0 @@ -/** - ****************************************************************************** - * File Name : ADC.c - * Description : This file provides code for the configuration - * of the ADC instances. - ****************************************************************************** - ** This notice applies to any and all portions of this file - * that are not between comment pairs USER CODE BEGIN and - * USER CODE END. Other portions of this file, whether - * inserted by the user or by software development tools - * are owned by their respective copyright owners. - * - * COPYRIGHT(c) 2017 STMicroelectronics - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************** - */ - -/* Includes ------------------------------------------------------------------*/ -#include "adc.h" - -#include "gpio.h" -#include "dma.h" - -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -ADC_HandleTypeDef hadc1; -ADC_HandleTypeDef hadc2; -ADC_HandleTypeDef hadc3; -DMA_HandleTypeDef hdma_adc1; -DMA_HandleTypeDef hdma_adc3; - -/* ADC1 init function */ -void MX_ADC1_Init(void) -{ - ADC_MultiModeTypeDef multimode; - ADC_ChannelConfTypeDef sConfig; - - /**Common config - */ - hadc1.Instance = ADC1; - hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE; - hadc1.Init.ContinuousConvMode = ENABLE; - hadc1.Init.DiscontinuousConvMode = DISABLE; - hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T8_TRGO; - hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; - hadc1.Init.NbrOfConversion = 3; - if (HAL_ADC_Init(&hadc1) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - /**Enable or disable the remapping of ADC1_ETRGREG: - * ADC1 External Event regular conversion is connected to TIM8 TRG0 - */ - __HAL_AFIO_REMAP_ADC1_ETRGREG_ENABLE(); - - /**Configure the ADC multi-mode - */ - multimode.Mode = ADC_DUALMODE_REGSIMULT; - if (HAL_ADCEx_MultiModeConfigChannel(&hadc1, &multimode) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - /**Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_0; - sConfig.Rank = 1; - sConfig.SamplingTime = ADC_SAMPLETIME_13CYCLES_5; - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - /**Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_10; - sConfig.Rank = 2; - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - /**Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_13; - sConfig.Rank = 3; - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - -} -/* ADC2 init function */ -void MX_ADC2_Init(void) -{ - ADC_ChannelConfTypeDef sConfig; - - /**Common config - */ - hadc2.Instance = ADC2; - hadc2.Init.ScanConvMode = ADC_SCAN_ENABLE; - hadc2.Init.ContinuousConvMode = DISABLE; - hadc2.Init.DiscontinuousConvMode = DISABLE; - hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START; - hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT; - hadc2.Init.NbrOfConversion = 3; - if (HAL_ADC_Init(&hadc2) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - /**Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_11; - sConfig.Rank = 1; - sConfig.SamplingTime = ADC_SAMPLETIME_13CYCLES_5; - if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - /**Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_14; - sConfig.Rank = 2; - if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - /**Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_15; - sConfig.Rank = 3; - if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - -} -/* ADC3 init function */ -void MX_ADC3_Init(void) -{ - ADC_ChannelConfTypeDef sConfig; - - /**Common config - */ - hadc3.Instance = ADC3; - hadc3.Init.ScanConvMode = ADC_SCAN_DISABLE; - hadc3.Init.ContinuousConvMode = DISABLE; - hadc3.Init.DiscontinuousConvMode = DISABLE; - hadc3.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T8_TRGO; - hadc3.Init.DataAlign = ADC_DATAALIGN_RIGHT; - hadc3.Init.NbrOfConversion = 1; - if (HAL_ADC_Init(&hadc3) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - /**Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_12; - sConfig.Rank = 1; - sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; - if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - -} - -void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle) -{ - - GPIO_InitTypeDef GPIO_InitStruct; - if(adcHandle->Instance==ADC1) - { - /* USER CODE BEGIN ADC1_MspInit 0 */ - - /* USER CODE END ADC1_MspInit 0 */ - /* ADC1 clock enable */ - __HAL_RCC_ADC1_CLK_ENABLE(); - - /**ADC1 GPIO Configuration - PC0 ------> ADC1_IN10 - PC3 ------> ADC1_IN13 - PA0-WKUP ------> ADC1_IN0 - */ - GPIO_InitStruct.Pin = LEFT_DC_Pin|L_B_CUR_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - - GPIO_InitStruct.Pin = L_A_CUR_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; - HAL_GPIO_Init(L_A_CUR_GPIO_Port, &GPIO_InitStruct); - - /* ADC1 DMA Init */ - /* ADC1 Init */ - hdma_adc1.Instance = DMA1_Channel1; - hdma_adc1.Init.Direction = DMA_PERIPH_TO_MEMORY; - hdma_adc1.Init.PeriphInc = DMA_PINC_DISABLE; - hdma_adc1.Init.MemInc = DMA_MINC_ENABLE; - hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD; - hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_WORD; - hdma_adc1.Init.Mode = DMA_NORMAL; - hdma_adc1.Init.Priority = DMA_PRIORITY_HIGH; - if (HAL_DMA_Init(&hdma_adc1) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - __HAL_LINKDMA(adcHandle,DMA_Handle,hdma_adc1); - - /* USER CODE BEGIN ADC1_MspInit 1 */ - - /* USER CODE END ADC1_MspInit 1 */ - } - else if(adcHandle->Instance==ADC2) - { - /* USER CODE BEGIN ADC2_MspInit 0 */ - - /* USER CODE END ADC2_MspInit 0 */ - /* ADC2 clock enable */ - __HAL_RCC_ADC2_CLK_ENABLE(); - - /**ADC2 GPIO Configuration - PC1 ------> ADC2_IN11 - PC4 ------> ADC2_IN14 - PC5 ------> ADC2_IN15 - */ - GPIO_InitStruct.Pin = RIGHT_DC_Pin|R_A_CUR_Pin|R_B_CUR_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - - /* USER CODE BEGIN ADC2_MspInit 1 */ - - /* USER CODE END ADC2_MspInit 1 */ - } - else if(adcHandle->Instance==ADC3) - { - /* USER CODE BEGIN ADC3_MspInit 0 */ - - /* USER CODE END ADC3_MspInit 0 */ - /* ADC3 clock enable */ - __HAL_RCC_ADC3_CLK_ENABLE(); - - /**ADC3 GPIO Configuration - PC2 ------> ADC3_IN12 - */ - GPIO_InitStruct.Pin = DC_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; - HAL_GPIO_Init(DC_GPIO_Port, &GPIO_InitStruct); - - /* ADC3 DMA Init */ - /* ADC3 Init */ - hdma_adc3.Instance = DMA2_Channel5; - hdma_adc3.Init.Direction = DMA_PERIPH_TO_MEMORY; - hdma_adc3.Init.PeriphInc = DMA_PINC_DISABLE; - hdma_adc3.Init.MemInc = DMA_MINC_ENABLE; - hdma_adc3.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; - hdma_adc3.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; - hdma_adc3.Init.Mode = DMA_NORMAL; - hdma_adc3.Init.Priority = DMA_PRIORITY_HIGH; - if (HAL_DMA_Init(&hdma_adc3) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - __HAL_LINKDMA(adcHandle,DMA_Handle,hdma_adc3); - - /* USER CODE BEGIN ADC3_MspInit 1 */ - - /* USER CODE END ADC3_MspInit 1 */ - } -} - -void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle) -{ - - if(adcHandle->Instance==ADC1) - { - /* USER CODE BEGIN ADC1_MspDeInit 0 */ - - /* USER CODE END ADC1_MspDeInit 0 */ - /* Peripheral clock disable */ - __HAL_RCC_ADC1_CLK_DISABLE(); - - /**ADC1 GPIO Configuration - PC0 ------> ADC1_IN10 - PC3 ------> ADC1_IN13 - PA0-WKUP ------> ADC1_IN0 - */ - HAL_GPIO_DeInit(GPIOC, LEFT_DC_Pin|L_B_CUR_Pin); - - HAL_GPIO_DeInit(L_A_CUR_GPIO_Port, L_A_CUR_Pin); - - /* ADC1 DMA DeInit */ - HAL_DMA_DeInit(adcHandle->DMA_Handle); - /* USER CODE BEGIN ADC1_MspDeInit 1 */ - - /* USER CODE END ADC1_MspDeInit 1 */ - } - else if(adcHandle->Instance==ADC2) - { - /* USER CODE BEGIN ADC2_MspDeInit 0 */ - - /* USER CODE END ADC2_MspDeInit 0 */ - /* Peripheral clock disable */ - __HAL_RCC_ADC2_CLK_DISABLE(); - - /**ADC2 GPIO Configuration - PC1 ------> ADC2_IN11 - PC4 ------> ADC2_IN14 - PC5 ------> ADC2_IN15 - */ - HAL_GPIO_DeInit(GPIOC, RIGHT_DC_Pin|R_A_CUR_Pin|R_B_CUR_Pin); - - /* USER CODE BEGIN ADC2_MspDeInit 1 */ - - /* USER CODE END ADC2_MspDeInit 1 */ - } - else if(adcHandle->Instance==ADC3) - { - /* USER CODE BEGIN ADC3_MspDeInit 0 */ - - /* USER CODE END ADC3_MspDeInit 0 */ - /* Peripheral clock disable */ - __HAL_RCC_ADC3_CLK_DISABLE(); - - /**ADC3 GPIO Configuration - PC2 ------> ADC3_IN12 - */ - HAL_GPIO_DeInit(DC_GPIO_Port, DC_Pin); - - /* ADC3 DMA DeInit */ - HAL_DMA_DeInit(adcHandle->DMA_Handle); - /* USER CODE BEGIN ADC3_MspDeInit 1 */ - - /* USER CODE END ADC3_MspDeInit 1 */ - } -} - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ - -/** - * @} - */ - -/** - * @} - */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Src/dma.c b/Src/dma.c deleted file mode 100644 index 7f059ad..0000000 --- a/Src/dma.c +++ /dev/null @@ -1,85 +0,0 @@ -/** - ****************************************************************************** - * File Name : dma.c - * Description : This file provides code for the configuration - * of all the requested memory to memory DMA transfers. - ****************************************************************************** - ** This notice applies to any and all portions of this file - * that are not between comment pairs USER CODE BEGIN and - * USER CODE END. Other portions of this file, whether - * inserted by the user or by software development tools - * are owned by their respective copyright owners. - * - * COPYRIGHT(c) 2017 STMicroelectronics - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************** - */ -/* Includes ------------------------------------------------------------------*/ -#include "dma.h" - -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/*----------------------------------------------------------------------------*/ -/* Configure DMA */ -/*----------------------------------------------------------------------------*/ - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ - -/** - * Enable DMA controller clock - */ -void MX_DMA_Init(void) -{ - /* DMA controller clock enable */ - __HAL_RCC_DMA1_CLK_ENABLE(); - __HAL_RCC_DMA2_CLK_ENABLE(); - - /* DMA interrupt init */ - /* DMA1_Channel1_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn); - /* DMA2_Channel4_5_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(DMA2_Channel4_5_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(DMA2_Channel4_5_IRQn); - -} - -/* USER CODE BEGIN 2 */ - -/* USER CODE END 2 */ - -/** - * @} - */ - -/** - * @} - */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Src/gpio.c b/Src/gpio.c index 83c49c6..c187106 100644 --- a/Src/gpio.c +++ b/Src/gpio.c @@ -20,6 +20,45 @@ #include "defines.h" +TIM_HandleTypeDef htim_right; +TIM_HandleTypeDef htim_left; +ADC_HandleTypeDef hadc1; +ADC_HandleTypeDef hadc2; +volatile adc_buf_t adc_buffer; + +void UART_Init(){ + __HAL_RCC_USART3_CLK_ENABLE(); + __HAL_RCC_DMA1_CLK_ENABLE(); + + UART_HandleTypeDef huart3; + 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; + huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart3.Init.OverSampling = UART_OVERSAMPLING_16; + HAL_UART_Init(&huart3); + + USART3->CR3 |= USART_CR3_DMAT;// | USART_CR3_DMAR | USART_CR3_OVRDIS; + + GPIO_InitTypeDef GPIO_InitStruct; + GPIO_InitStruct.Pin = GPIO_PIN_10; + GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + DMA1_Channel2->CCR = 0; + DMA1_Channel2->CPAR = (uint32_t)&(USART3->DR); + DMA1_Channel2->CNDTR = 0; + DMA1_Channel2->CCR = DMA_CCR_MINC | DMA_CCR_DIR; + DMA1->IFCR = DMA_IFCR_CTCIF2 | DMA_IFCR_CHTIF2 | DMA_IFCR_CGIF2; +} + + + void MX_GPIO_Init(void) { @@ -91,7 +130,6 @@ void MX_GPIO_Init(void) GPIO_InitStruct.Pin = DCLINK_PIN; HAL_GPIO_Init(DCLINK_PORT, &GPIO_InitStruct); - // GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pin = LEFT_TIM_UH_PIN; @@ -131,9 +169,6 @@ void MX_GPIO_Init(void) HAL_GPIO_Init(RIGHT_TIM_WL_PORT, &GPIO_InitStruct); } -TIM_HandleTypeDef htim_right; -TIM_HandleTypeDef htim_left; - void MX_TIM_Init(void){ __HAL_RCC_TIM1_CLK_ENABLE(); __HAL_RCC_TIM8_CLK_ENABLE(); @@ -150,17 +185,11 @@ void MX_TIM_Init(void){ htim_right.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim_right.Init.RepetitionCounter = 0; htim_right.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_PWM_Init(&htim_right) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } + HAL_TIM_PWM_Init(&htim_right); sMasterConfig.MasterOutputTrigger = TIM_TRGO_ENABLE; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim_right, &sMasterConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } + HAL_TIMEx_MasterConfigSynchronization(&htim_right, &sMasterConfig); sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = 0; @@ -169,20 +198,9 @@ void MX_TIM_Init(void){ sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_SET; - if (HAL_TIM_PWM_ConfigChannel(&htim_right, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - if (HAL_TIM_PWM_ConfigChannel(&htim_right, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - if (HAL_TIM_PWM_ConfigChannel(&htim_right, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } + HAL_TIM_PWM_ConfigChannel(&htim_right, &sConfigOC, TIM_CHANNEL_1); + HAL_TIM_PWM_ConfigChannel(&htim_right, &sConfigOC, TIM_CHANNEL_2); + HAL_TIM_PWM_ConfigChannel(&htim_right, &sConfigOC, TIM_CHANNEL_3); sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_ENABLE; sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_ENABLE; @@ -191,10 +209,7 @@ void MX_TIM_Init(void){ sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_LOW; sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; - if (HAL_TIMEx_ConfigBreakDeadTime(&htim_right, &sBreakDeadTimeConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } + HAL_TIMEx_ConfigBreakDeadTime(&htim_right, &sBreakDeadTimeConfig); htim_left.Instance = LEFT_TIM; htim_left.Init.Prescaler = 0; @@ -203,17 +218,11 @@ void MX_TIM_Init(void){ htim_left.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim_left.Init.RepetitionCounter = 0; htim_left.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_PWM_Init(&htim_left) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } + HAL_TIM_PWM_Init(&htim_left); sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_ENABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim_left, &sMasterConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } + HAL_TIMEx_MasterConfigSynchronization(&htim_left, &sMasterConfig); sTimConfig.InputTrigger = TIM_TS_ITR0; sTimConfig.SlaveMode = TIM_SLAVEMODE_GATED; @@ -226,20 +235,9 @@ void MX_TIM_Init(void){ sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_SET; - if (HAL_TIM_PWM_ConfigChannel(&htim_left, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - if (HAL_TIM_PWM_ConfigChannel(&htim_left, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - if (HAL_TIM_PWM_ConfigChannel(&htim_left, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } + HAL_TIM_PWM_ConfigChannel(&htim_left, &sConfigOC, TIM_CHANNEL_1); + HAL_TIM_PWM_ConfigChannel(&htim_left, &sConfigOC, TIM_CHANNEL_2); + HAL_TIM_PWM_ConfigChannel(&htim_left, &sConfigOC, TIM_CHANNEL_3); sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_ENABLE; sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_ENABLE; @@ -248,10 +246,7 @@ void MX_TIM_Init(void){ sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_LOW; sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; - if (HAL_TIMEx_ConfigBreakDeadTime(&htim_left, &sBreakDeadTimeConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } + HAL_TIMEx_ConfigBreakDeadTime(&htim_left, &sBreakDeadTimeConfig); HAL_TIM_PWM_Start(&htim_left, TIM_CHANNEL_1); HAL_TIM_PWM_Start(&htim_left, TIM_CHANNEL_2); @@ -272,11 +267,6 @@ void MX_TIM_Init(void){ __HAL_TIM_ENABLE(&htim_right); } -ADC_HandleTypeDef hadc1; -ADC_HandleTypeDef hadc2; - -volatile adc_buf_t adc_buffer[3]; - void MX_ADC1_Init(void) { ADC_MultiModeTypeDef multimode; @@ -284,22 +274,14 @@ void MX_ADC1_Init(void) __HAL_RCC_ADC1_CLK_ENABLE(); - // HAL_ADC_DeInit(&hadc1); - // hadc1.Instance->CR2 = 0; - /**Common config - */ hadc1.Instance = ADC1; hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE; hadc1.Init.ContinuousConvMode = DISABLE; hadc1.Init.DiscontinuousConvMode = DISABLE; hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T8_TRGO; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; - hadc1.Init.NbrOfConversion = 3; - if (HAL_ADC_Init(&hadc1) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - + hadc1.Init.NbrOfConversion = 5; + HAL_ADC_Init(&hadc1); /**Enable or disable the remapping of ADC1_ETRGREG: * ADC1 External Event regular conversion is connected to TIM8 TRG0 */ @@ -308,45 +290,29 @@ void MX_ADC1_Init(void) /**Configure the ADC multi-mode */ multimode.Mode = ADC_DUALMODE_REGSIMULT; - if (HAL_ADCEx_MultiModeConfigChannel(&hadc1, &multimode) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } + HAL_ADCEx_MultiModeConfigChannel(&hadc1, &multimode); - /**Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_10; - sConfig.Rank = 1; sConfig.SamplingTime = ADC_SAMPLETIME_13CYCLES_5; - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - /**Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_10; + sConfig.Channel = ADC_CHANNEL_14; + sConfig.Rank = 1; + HAL_ADC_ConfigChannel(&hadc1, &sConfig); + + sConfig.Channel = ADC_CHANNEL_1; sConfig.Rank = 2; - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } + HAL_ADC_ConfigChannel(&hadc1, &sConfig); - /**Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_10; + sConfig.Channel = ADC_CHANNEL_11; sConfig.Rank = 3; - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } + HAL_ADC_ConfigChannel(&hadc1, &sConfig); - sConfig.Channel = ADC_CHANNEL_10; + sConfig.Channel = ADC_CHANNEL_12; sConfig.Rank = 4; - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } + HAL_ADC_ConfigChannel(&hadc1, &sConfig); + + sConfig.Channel = ADC_CHANNEL_12; + sConfig.Rank = 5; + HAL_ADC_ConfigChannel(&hadc1, &sConfig); hadc1.Instance->CR2 |= ADC_CR2_DMA; @@ -355,9 +321,9 @@ void MX_ADC1_Init(void) __HAL_RCC_DMA1_CLK_ENABLE(); DMA1_Channel1->CCR = 0; - DMA1_Channel1->CNDTR = 3; + DMA1_Channel1->CNDTR = 5; DMA1_Channel1->CPAR = (uint32_t)&(ADC1->DR); - DMA1_Channel1->CMAR = (uint32_t)adc_buffer; + DMA1_Channel1->CMAR = (uint32_t)&adc_buffer; DMA1_Channel1->CCR = DMA_CCR_MSIZE_1 | DMA_CCR_PSIZE_1 | DMA_CCR_MINC | DMA_CCR_CIRC | DMA_CCR_TCIE; DMA1_Channel1->CCR |= DMA_CCR_EN; @@ -382,39 +348,30 @@ void MX_ADC2_Init(void) hadc2.Init.DiscontinuousConvMode = DISABLE; hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START; hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT; - hadc2.Init.NbrOfConversion = 3; - if (HAL_ADC_Init(&hadc2) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } + hadc2.Init.NbrOfConversion = 5; + HAL_ADC_Init(&hadc2); - /**Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_14; - sConfig.Rank = 1; sConfig.SamplingTime = ADC_SAMPLETIME_13CYCLES_5; - if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - /**Configure Regular Channel - */ sConfig.Channel = ADC_CHANNEL_15; - sConfig.Rank = 2; - if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } + sConfig.Rank = 1; + HAL_ADC_ConfigChannel(&hadc2, &sConfig); - /**Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_11; + sConfig.Channel = ADC_CHANNEL_13; + sConfig.Rank = 2; + HAL_ADC_ConfigChannel(&hadc2, &sConfig); + + sConfig.Channel = ADC_CHANNEL_10; sConfig.Rank = 3; - if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } + HAL_ADC_ConfigChannel(&hadc2, &sConfig); + + sConfig.Channel = ADC_CHANNEL_2; + sConfig.Rank = 4; + HAL_ADC_ConfigChannel(&hadc2, &sConfig); + + sConfig.Channel = ADC_CHANNEL_3; + sConfig.Rank = 5; + HAL_ADC_ConfigChannel(&hadc2, &sConfig); hadc2.Instance->CR2 |= ADC_CR2_DMA; __HAL_ADC_ENABLE(&hadc2); diff --git a/Src/main.c b/Src/main.c index 32696d3..a2d3174 100644 --- a/Src/main.c +++ b/Src/main.c @@ -29,7 +29,7 @@ extern TIM_HandleTypeDef htim_left; extern TIM_HandleTypeDef htim_right; extern ADC_HandleTypeDef hadc1; extern ADC_HandleTypeDef hadc2; -extern volatile adc_buf_t adc_buffer[3]; +extern volatile adc_buf_t adc_buffer; volatile int posl = 0; volatile int posr = 0; @@ -93,9 +93,44 @@ int timer = 0; int max_time = PWM_FREQ / 10; volatile int vel = 0; +volatile uint8_t uart_buf[10]; + void DMA1_Channel1_IRQHandler(){ DMA1->IFCR = DMA_IFCR_CTCIF1; - HAL_GPIO_WritePin(LED_PORT, LED_PIN, 1); + + /* + uart_buf[0] = 0xff; + uart_buf[1] = adc_buffer.r_dc1 - 1850 + 127; + uart_buf[2] = adc_buffer.l_dc2 - 1850 + 127; + uart_buf[3] = 127;//adc_buffer.rr1 - 2000 + 127; + uart_buf[4] = 127;//adc_buffer.rr2 - 2000 + 127; + uart_buf[5] = 127;//adc_buffer.rl1 - 2000 + 127; + uart_buf[6] = 127;//adc_buffer.rl2 - 2000 + 127; + uart_buf[7] = adc_buffer.batt1 - 1550 + 127; + uart_buf[8] = adc_buffer.bat1 - 1550 + 127; + uart_buf[9] = '\n'; + + if(DMA1_Channel2->CNDTR == 0){ + DMA1_Channel2->CCR &= ~DMA_CCR_EN; + DMA1_Channel2->CNDTR = 10; + DMA1_Channel2->CMAR = (uint32_t)uart_buf; + DMA1_Channel2->CCR |= DMA_CCR_EN; + } + */ + + if(adc_buffer.l_dc2 > 1950){ + LEFT_TIM->BDTR &= ~TIM_BDTR_MOE; + HAL_GPIO_WritePin(LED_PORT, LED_PIN, 1); + }else{ + LEFT_TIM->BDTR |= TIM_BDTR_MOE; + HAL_GPIO_WritePin(LED_PORT, LED_PIN, 0); + } + + if(adc_buffer.r_dc1 > 1950){ + RIGHT_TIM->BDTR &= ~TIM_BDTR_MOE; + }else{ + RIGHT_TIM->BDTR |= TIM_BDTR_MOE; + } int ul = 0; int vl = 0; @@ -152,8 +187,6 @@ void DMA1_Channel1_IRQHandler(){ RIGHT_TIM->RIGHT_TIM_U = CLAMP(ur + pwm_res / 2, 0, pwm_res); RIGHT_TIM->RIGHT_TIM_V = CLAMP(vr + pwm_res / 2, 0, pwm_res); RIGHT_TIM->RIGHT_TIM_W = CLAMP(wr + pwm_res / 2, 0, pwm_res); - -HAL_GPIO_WritePin(LED_PORT, LED_PIN, 0); } int milli_vel_error_sum = 0; @@ -171,6 +204,7 @@ int main(void) MX_TIM_Init(); MX_ADC1_Init(); MX_ADC2_Init(); + UART_Init(); HAL_GPIO_WritePin(OFF_PORT, OFF_PIN, 1); @@ -190,8 +224,8 @@ int main(void) // milli_vel_error_sum += milli_vel_error; // milli_vel_error_sum = CLAMP(milli_vel_error_sum, -200000, 200000); // pwm = CLAMP(milli_vel_cmd / 5 + milli_vel_error_sum / 200, -500, 500); - pwml = 100; - pwmr = 100; + pwml = 150; + pwmr = 150; // if(vel > milli_vel_cmd){ // HAL_GPIO_WritePin(LED_PORT, LED_PIN, 1); diff --git a/Src/tim.c b/Src/tim.c deleted file mode 100644 index 6aa0292..0000000 --- a/Src/tim.c +++ /dev/null @@ -1,309 +0,0 @@ -/** - ****************************************************************************** - * File Name : TIM.c - * Description : This file provides code for the configuration - * of the TIM instances. - ****************************************************************************** - ** This notice applies to any and all portions of this file - * that are not between comment pairs USER CODE BEGIN and - * USER CODE END. Other portions of this file, whether - * inserted by the user or by software development tools - * are owned by their respective copyright owners. - * - * COPYRIGHT(c) 2017 STMicroelectronics - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************** - */ - -/* Includes ------------------------------------------------------------------*/ -#include "tim.h" - -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -TIM_HandleTypeDef htim1; -TIM_HandleTypeDef htim8; - -/* TIM1 init function */ -void MX_TIM1_Init(void) -{ - TIM_MasterConfigTypeDef sMasterConfig; - TIM_OC_InitTypeDef sConfigOC; - TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig; - - htim1.Instance = TIM1; - htim1.Init.Prescaler = 0; - htim1.Init.CounterMode = TIM_COUNTERMODE_CENTERALIGNED1; - htim1.Init.Period = 1600; - htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim1.Init.RepetitionCounter = 0; - htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_PWM_Init(&htim1) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_ENABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 0; - sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW; - sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; - sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_SET; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_ENABLE; - sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_ENABLE; - sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; - sBreakDeadTimeConfig.DeadTime = 255; - sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; - sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_LOW; - sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; - if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - HAL_TIM_MspPostInit(&htim1); - -} -/* TIM8 init function */ -void MX_TIM8_Init(void) -{ - TIM_MasterConfigTypeDef sMasterConfig; - TIM_OC_InitTypeDef sConfigOC; - TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig; - - htim8.Instance = TIM8; - htim8.Init.Prescaler = 0; - htim8.Init.CounterMode = TIM_COUNTERMODE_CENTERALIGNED1; - htim8.Init.Period = 1600; - htim8.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim8.Init.RepetitionCounter = 0; - htim8.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_PWM_Init(&htim8) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_ENABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim8, &sMasterConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 0; - sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW; - sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; - sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_SET; - if (HAL_TIM_PWM_ConfigChannel(&htim8, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - if (HAL_TIM_PWM_ConfigChannel(&htim8, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - if (HAL_TIM_PWM_ConfigChannel(&htim8, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_ENABLE; - sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_ENABLE; - sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; - sBreakDeadTimeConfig.DeadTime = 255; - sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; - sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_LOW; - sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; - if (HAL_TIMEx_ConfigBreakDeadTime(&htim8, &sBreakDeadTimeConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - HAL_TIM_MspPostInit(&htim8); - -} - -void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef* tim_pwmHandle) -{ - - if(tim_pwmHandle->Instance==TIM1) - { - /* USER CODE BEGIN TIM1_MspInit 0 */ - - /* USER CODE END TIM1_MspInit 0 */ - /* TIM1 clock enable */ - __HAL_RCC_TIM1_CLK_ENABLE(); - /* USER CODE BEGIN TIM1_MspInit 1 */ - - /* USER CODE END TIM1_MspInit 1 */ - } - else if(tim_pwmHandle->Instance==TIM8) - { - /* USER CODE BEGIN TIM8_MspInit 0 */ - - /* USER CODE END TIM8_MspInit 0 */ - /* TIM8 clock enable */ - __HAL_RCC_TIM8_CLK_ENABLE(); - /* USER CODE BEGIN TIM8_MspInit 1 */ - - /* USER CODE END TIM8_MspInit 1 */ - } -} -void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle) -{ - - GPIO_InitTypeDef GPIO_InitStruct; - if(timHandle->Instance==TIM1) - { - /* USER CODE BEGIN TIM1_MspPostInit 0 */ - - /* USER CODE END TIM1_MspPostInit 0 */ - /**TIM1 GPIO Configuration - PB13 ------> TIM1_CH1N - PB14 ------> TIM1_CH2N - PB15 ------> TIM1_CH3N - PA8 ------> TIM1_CH1 - PA9 ------> TIM1_CH2 - PA10 ------> TIM1_CH3 - */ - GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - - GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - - /* USER CODE BEGIN TIM1_MspPostInit 1 */ - - /* USER CODE END TIM1_MspPostInit 1 */ - } - else if(timHandle->Instance==TIM8) - { - /* USER CODE BEGIN TIM8_MspPostInit 0 */ - - /* USER CODE END TIM8_MspPostInit 0 */ - - /**TIM8 GPIO Configuration - PA7 ------> TIM8_CH1N - PB0 ------> TIM8_CH2N - PB1 ------> TIM8_CH3N - PC6 ------> TIM8_CH1 - PC7 ------> TIM8_CH2 - PC8 ------> TIM8_CH3 - */ - GPIO_InitStruct.Pin = GPIO_PIN_7; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - - GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - - GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - - /* USER CODE BEGIN TIM8_MspPostInit 1 */ - - /* USER CODE END TIM8_MspPostInit 1 */ - } - -} - -void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef* tim_pwmHandle) -{ - - if(tim_pwmHandle->Instance==TIM1) - { - /* USER CODE BEGIN TIM1_MspDeInit 0 */ - - /* USER CODE END TIM1_MspDeInit 0 */ - /* Peripheral clock disable */ - __HAL_RCC_TIM1_CLK_DISABLE(); - /* USER CODE BEGIN TIM1_MspDeInit 1 */ - - /* USER CODE END TIM1_MspDeInit 1 */ - } - else if(tim_pwmHandle->Instance==TIM8) - { - /* USER CODE BEGIN TIM8_MspDeInit 0 */ - - /* USER CODE END TIM8_MspDeInit 0 */ - /* Peripheral clock disable */ - __HAL_RCC_TIM8_CLK_DISABLE(); - /* USER CODE BEGIN TIM8_MspDeInit 1 */ - - /* USER CODE END TIM8_MspDeInit 1 */ - } -} - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ - -/** - * @} - */ - -/** - * @} - */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/