diff --git a/Inc/main.h b/Inc/main.h index 481e5c23..50fd3061 100644 --- a/Inc/main.h +++ b/Inc/main.h @@ -79,22 +79,21 @@ #define M1_IC_GPIO_Port GPIOC #define M1_IB_Pin GPIO_PIN_3 #define M1_IB_GPIO_Port GPIOC -#define GPIO_1_Pin GPIO_PIN_0 -#define GPIO_1_GPIO_Port GPIOA -#define GPIO_1_EXTI_IRQn EXTI0_IRQn -#define GPIO_2_Pin GPIO_PIN_1 -#define GPIO_2_GPIO_Port GPIOA -#define GPIO_3_Pin GPIO_PIN_2 -#define GPIO_3_GPIO_Port GPIOA -#define GPIO_3_EXTI_IRQn EXTI2_IRQn +#define VBUS_S_Pin GPIO_PIN_0 +#define VBUS_S_GPIO_Port GPIOA +#define M1_TEMP_Pin GPIO_PIN_1 +#define M1_TEMP_GPIO_Port GPIOA +#define AUX_I_Pin GPIO_PIN_2 +#define AUX_I_GPIO_Port GPIOA #define GPIO_4_Pin GPIO_PIN_3 #define GPIO_4_GPIO_Port GPIOA -#define M1_TEMP_Pin GPIO_PIN_4 -#define M1_TEMP_GPIO_Port GPIOA -#define AUX_I_Pin GPIO_PIN_5 -#define AUX_I_GPIO_Port GPIOA -#define VBUS_S_Pin GPIO_PIN_6 -#define VBUS_S_GPIO_Port GPIOA +#define GPIO_3_Pin GPIO_PIN_4 +#define GPIO_3_GPIO_Port GPIOA +#define GPIO_3_EXTI_IRQn EXTI4_IRQn +#define GPIO_2_Pin GPIO_PIN_5 +#define GPIO_2_GPIO_Port GPIOA +#define AUX_V_Pin GPIO_PIN_6 +#define AUX_V_GPIO_Port GPIOA #define M1_AL_Pin GPIO_PIN_7 #define M1_AL_GPIO_Port GPIOA #define AUX_TEMP_Pin GPIO_PIN_4 @@ -105,8 +104,9 @@ #define M1_BL_GPIO_Port GPIOB #define M1_CL_Pin GPIO_PIN_1 #define M1_CL_GPIO_Port GPIOB -#define GPIO_5_Pin GPIO_PIN_2 -#define GPIO_5_GPIO_Port GPIOB +#define GPIO_1_Pin GPIO_PIN_2 +#define GPIO_1_GPIO_Port GPIOB +#define GPIO_1_EXTI_IRQn EXTI2_IRQn #define AUX_L_Pin GPIO_PIN_10 #define AUX_L_GPIO_Port GPIOB #define AUX_H_Pin GPIO_PIN_11 diff --git a/Inc/stm32f4xx_it.h b/Inc/stm32f4xx_it.h index 74b19b28..caaf7ef3 100644 --- a/Inc/stm32f4xx_it.h +++ b/Inc/stm32f4xx_it.h @@ -52,8 +52,8 @@ void BusFault_Handler(void); void UsageFault_Handler(void); void DebugMon_Handler(void); void SysTick_Handler(void); -void EXTI0_IRQHandler(void); void EXTI2_IRQHandler(void); +void EXTI4_IRQHandler(void); void ADC_IRQHandler(void); void OTG_FS_IRQHandler(void); diff --git a/Odrive.ioc b/Odrive.ioc index b7bd70f6..d99a7c69 100755 --- a/Odrive.ioc +++ b/Odrive.ioc @@ -1,6 +1,6 @@ #MicroXplorer Configuration settings - do not modify -ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_6 -ADC1.Channel-1\#ChannelInjectedConversion=ADC_CHANNEL_6 +ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_0 +ADC1.Channel-1\#ChannelInjectedConversion=ADC_CHANNEL_0 ADC1.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV4 ADC1.ContinuousConvMode=DISABLE ADC1.DMAContinuousRequests=DISABLE @@ -169,8 +169,8 @@ MxDb.Version=DB.4.0.220 NVIC.ADC_IRQn=true\:5\:0\:false\:false\:true\:true NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false -NVIC.EXTI0_IRQn=true\:0\:0\:false\:false\:true\:false NVIC.EXTI2_IRQn=true\:0\:0\:false\:false\:true\:false +NVIC.EXTI4_IRQn=true\:0\:0\:false\:false\:true\:false NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false @@ -180,16 +180,12 @@ NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:false\:false NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:true NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false -PA0-WKUP.GPIOParameters=GPIO_PuPd,GPIO_Label -PA0-WKUP.GPIO_Label=GPIO_1 -PA0-WKUP.GPIO_PuPd=GPIO_PULLDOWN -PA0-WKUP.Locked=true -PA0-WKUP.Signal=GPXTI0 -PA1.GPIOParameters=GPIO_PuPd,GPIO_Label -PA1.GPIO_Label=GPIO_2 -PA1.GPIO_PuPd=GPIO_NOPULL -PA1.Locked=true -PA1.Signal=GPIO_Input +PA0-WKUP.GPIOParameters=GPIO_Label +PA0-WKUP.GPIO_Label=VBUS_S +PA0-WKUP.Signal=ADCx_IN0 +PA1.GPIOParameters=GPIO_Label +PA1.GPIO_Label=M1_TEMP +PA1.Signal=ADCx_IN1 PA10.GPIOParameters=GPIO_Label PA10.GPIO_Label=M0_CH PA10.Locked=true @@ -206,27 +202,26 @@ PA15.GPIOParameters=GPIO_Label PA15.GPIO_Label=M0_ENC_Z PA15.Locked=true PA15.Signal=GPIO_Input -PA2.GPIOParameters=GPIO_PuPd,GPIO_Label -PA2.GPIO_Label=GPIO_3 -PA2.GPIO_PuPd=GPIO_PULLDOWN -PA2.Locked=true -PA2.Signal=GPXTI2 +PA2.GPIOParameters=GPIO_Label +PA2.GPIO_Label=AUX_I +PA2.Signal=ADCx_IN2 PA3.GPIOParameters=GPIO_PuPd,GPIO_Label PA3.GPIO_Label=GPIO_4 -PA3.GPIO_PuPd=GPIO_NOPULL +PA3.GPIO_PuPd=GPIO_PULLDOWN PA3.Locked=true PA3.Signal=GPIO_Input -PA4.GPIOParameters=GPIO_Label -PA4.GPIO_Label=M1_TEMP +PA4.GPIOParameters=GPIO_PuPd,GPIO_Label +PA4.GPIO_Label=GPIO_3 +PA4.GPIO_PuPd=GPIO_PULLDOWN PA4.Locked=true -PA4.Signal=ADCx_IN4 -PA5.GPIOParameters=GPIO_Label -PA5.GPIO_Label=AUX_I +PA4.Signal=GPXTI4 +PA5.GPIOParameters=GPIO_PuPd,GPIO_Label +PA5.GPIO_Label=GPIO_2 +PA5.GPIO_PuPd=GPIO_PULLDOWN PA5.Locked=true -PA5.Signal=ADCx_IN5 +PA5.Signal=GPIO_Input PA6.GPIOParameters=GPIO_Label -PA6.GPIO_Label=VBUS_S -PA6.Locked=true +PA6.GPIO_Label=AUX_V PA6.Signal=ADCx_IN6 PA7.GPIOParameters=GPIO_Label PA7.GPIO_Label=M1_AL @@ -278,10 +273,11 @@ PB15.GPIO_Label=M0_CL PB15.Locked=true PB15.Mode=PWM Generation3 CH3 CH3N PB15.Signal=TIM1_CH3N -PB2.GPIOParameters=GPIO_Label -PB2.GPIO_Label=GPIO_5 +PB2.GPIOParameters=GPIO_PuPd,GPIO_Label +PB2.GPIO_Label=GPIO_1 +PB2.GPIO_PuPd=GPIO_PULLDOWN PB2.Locked=true -PB2.Signal=GPIO_Input +PB2.Signal=GPXTI2 PB3.GPIOParameters=GPIO_Label PB3.GPIO_Label=M1_ENC_Z PB3.Locked=true @@ -433,6 +429,12 @@ RCC.VCOI2SOutputFreq_Value=384000000 RCC.VCOInputFreq_Value=2000000 RCC.VCOOutputFreq_Value=336000000 RCC.VcooutputI2S=192000000 +SH.ADCx_IN0.0=ADC1_IN0,IN0 +SH.ADCx_IN0.1=ADC2_IN0,IN0 +SH.ADCx_IN0.ConfNb=2 +SH.ADCx_IN1.0=ADC1_IN1,IN1 +SH.ADCx_IN1.1=ADC2_IN1,IN1 +SH.ADCx_IN1.ConfNb=2 SH.ADCx_IN10.0=ADC1_IN10,IN10 SH.ADCx_IN10.1=ADC2_IN10,IN10 SH.ADCx_IN10.2=ADC3_IN10,IN10 @@ -455,19 +457,16 @@ SH.ADCx_IN14.ConfNb=2 SH.ADCx_IN15.0=ADC1_IN15,IN15 SH.ADCx_IN15.1=ADC2_IN15,IN15 SH.ADCx_IN15.ConfNb=2 -SH.ADCx_IN4.0=ADC1_IN4,IN4 -SH.ADCx_IN4.1=ADC2_IN4,IN4 -SH.ADCx_IN4.ConfNb=2 -SH.ADCx_IN5.0=ADC1_IN5,IN5 -SH.ADCx_IN5.1=ADC2_IN5,IN5 -SH.ADCx_IN5.ConfNb=2 +SH.ADCx_IN2.0=ADC1_IN2,IN2 +SH.ADCx_IN2.1=ADC2_IN2,IN2 +SH.ADCx_IN2.ConfNb=2 SH.ADCx_IN6.0=ADC1_IN6,IN6 SH.ADCx_IN6.1=ADC2_IN6,IN6 SH.ADCx_IN6.ConfNb=2 -SH.GPXTI0.0=GPIO_EXTI0 -SH.GPXTI0.ConfNb=1 SH.GPXTI2.0=GPIO_EXTI2 SH.GPXTI2.ConfNb=1 +SH.GPXTI4.0=GPIO_EXTI4 +SH.GPXTI4.ConfNb=1 SH.S_TIM1_CH1.0=TIM1_CH1,PWM Generation1 CH1 CH1N SH.S_TIM1_CH1.ConfNb=1 SH.S_TIM1_CH2.0=TIM1_CH2,PWM Generation2 CH2 CH2N diff --git a/Src/adc.c b/Src/adc.c index 96549988..00024a98 100644 --- a/Src/adc.c +++ b/Src/adc.c @@ -87,7 +87,7 @@ void MX_ADC1_Init(void) /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. */ - sConfig.Channel = ADC_CHANNEL_6; + sConfig.Channel = ADC_CHANNEL_0; sConfig.Rank = 1; sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) @@ -97,7 +97,7 @@ void MX_ADC1_Init(void) /**Configures for the selected ADC injected channel its corresponding rank in the sequencer and its sample time */ - sConfigInjected.InjectedChannel = ADC_CHANNEL_6; + sConfigInjected.InjectedChannel = ADC_CHANNEL_0; sConfigInjected.InjectedRank = 1; sConfigInjected.InjectedNbrOfConversion = 1; sConfigInjected.InjectedSamplingTime = ADC_SAMPLETIME_3CYCLES; @@ -234,8 +234,9 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle) PC1 ------> ADC1_IN11 PC2 ------> ADC1_IN12 PC3 ------> ADC1_IN13 - PA4 ------> ADC1_IN4 - PA5 ------> ADC1_IN5 + PA0-WKUP ------> ADC1_IN0 + PA1 ------> ADC1_IN1 + PA2 ------> ADC1_IN2 PA6 ------> ADC1_IN6 PC4 ------> ADC1_IN14 PC5 ------> ADC1_IN15 @@ -246,7 +247,7 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle) GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - GPIO_InitStruct.Pin = M1_TEMP_Pin|AUX_I_Pin|VBUS_S_Pin; + GPIO_InitStruct.Pin = VBUS_S_Pin|M1_TEMP_Pin|AUX_I_Pin|AUX_V_Pin; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); @@ -271,8 +272,9 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle) PC1 ------> ADC2_IN11 PC2 ------> ADC2_IN12 PC3 ------> ADC2_IN13 - PA4 ------> ADC2_IN4 - PA5 ------> ADC2_IN5 + PA0-WKUP ------> ADC2_IN0 + PA1 ------> ADC2_IN1 + PA2 ------> ADC2_IN2 PA6 ------> ADC2_IN6 PC4 ------> ADC2_IN14 PC5 ------> ADC2_IN15 @@ -283,7 +285,7 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle) GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - GPIO_InitStruct.Pin = M1_TEMP_Pin|AUX_I_Pin|VBUS_S_Pin; + GPIO_InitStruct.Pin = VBUS_S_Pin|M1_TEMP_Pin|AUX_I_Pin|AUX_V_Pin; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); @@ -339,8 +341,9 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle) PC1 ------> ADC1_IN11 PC2 ------> ADC1_IN12 PC3 ------> ADC1_IN13 - PA4 ------> ADC1_IN4 - PA5 ------> ADC1_IN5 + PA0-WKUP ------> ADC1_IN0 + PA1 ------> ADC1_IN1 + PA2 ------> ADC1_IN2 PA6 ------> ADC1_IN6 PC4 ------> ADC1_IN14 PC5 ------> ADC1_IN15 @@ -348,7 +351,7 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle) HAL_GPIO_DeInit(GPIOC, M0_IB_Pin|M0_IC_Pin|M1_IC_Pin|M1_IB_Pin |AUX_TEMP_Pin|M0_TEMP_Pin); - HAL_GPIO_DeInit(GPIOA, M1_TEMP_Pin|AUX_I_Pin|VBUS_S_Pin); + HAL_GPIO_DeInit(GPIOA, VBUS_S_Pin|M1_TEMP_Pin|AUX_I_Pin|AUX_V_Pin); /* ADC1 interrupt Deinit */ /* USER CODE BEGIN ADC1:ADC_IRQn disable */ @@ -376,8 +379,9 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle) PC1 ------> ADC2_IN11 PC2 ------> ADC2_IN12 PC3 ------> ADC2_IN13 - PA4 ------> ADC2_IN4 - PA5 ------> ADC2_IN5 + PA0-WKUP ------> ADC2_IN0 + PA1 ------> ADC2_IN1 + PA2 ------> ADC2_IN2 PA6 ------> ADC2_IN6 PC4 ------> ADC2_IN14 PC5 ------> ADC2_IN15 @@ -385,7 +389,7 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle) HAL_GPIO_DeInit(GPIOC, M0_IB_Pin|M0_IC_Pin|M1_IC_Pin|M1_IB_Pin |AUX_TEMP_Pin|M0_TEMP_Pin); - HAL_GPIO_DeInit(GPIOA, M1_TEMP_Pin|AUX_I_Pin|VBUS_S_Pin); + HAL_GPIO_DeInit(GPIOA, VBUS_S_Pin|M1_TEMP_Pin|AUX_I_Pin|AUX_V_Pin); /* ADC2 interrupt Deinit */ /* USER CODE BEGIN ADC2:ADC_IRQn disable */ diff --git a/Src/gpio.c b/Src/gpio.c index 08092bfb..5e1ca683 100644 --- a/Src/gpio.c +++ b/Src/gpio.c @@ -96,22 +96,22 @@ void MX_GPIO_Init(void) HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); /*Configure GPIO pins : PAPin PAPin */ - GPIO_InitStruct.Pin = GPIO_1_Pin|GPIO_3_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; + GPIO_InitStruct.Pin = GPIO_4_Pin|GPIO_2_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - /*Configure GPIO pins : PAPin PAPin PAPin */ - GPIO_InitStruct.Pin = GPIO_2_Pin|GPIO_4_Pin|M0_ENC_Z_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + /*Configure GPIO pin : PtPin */ + GPIO_InitStruct.Pin = GPIO_3_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; + GPIO_InitStruct.Pull = GPIO_PULLDOWN; + HAL_GPIO_Init(GPIO_3_GPIO_Port, &GPIO_InitStruct); - /*Configure GPIO pins : PBPin PBPin */ - GPIO_InitStruct.Pin = GPIO_5_Pin|M1_ENC_Z_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + /*Configure GPIO pin : PtPin */ + GPIO_InitStruct.Pin = GPIO_1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; + GPIO_InitStruct.Pull = GPIO_PULLDOWN; + HAL_GPIO_Init(GPIO_1_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pin : PtPin */ GPIO_InitStruct.Pin = EN_GATE_Pin; @@ -120,19 +120,31 @@ void MX_GPIO_Init(void) GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(EN_GATE_GPIO_Port, &GPIO_InitStruct); + /*Configure GPIO pin : PtPin */ + GPIO_InitStruct.Pin = M0_ENC_Z_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(M0_ENC_Z_GPIO_Port, &GPIO_InitStruct); + /*Configure GPIO pin : PtPin */ GPIO_InitStruct.Pin = nFAULT_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(nFAULT_GPIO_Port, &GPIO_InitStruct); - /* EXTI interrupt init*/ - HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(EXTI0_IRQn); + /*Configure GPIO pin : PtPin */ + GPIO_InitStruct.Pin = M1_ENC_Z_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(M1_ENC_Z_GPIO_Port, &GPIO_InitStruct); + /* EXTI interrupt init*/ HAL_NVIC_SetPriority(EXTI2_IRQn, 0, 0); HAL_NVIC_EnableIRQ(EXTI2_IRQn); + HAL_NVIC_SetPriority(EXTI4_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(EXTI4_IRQn); + } /* USER CODE BEGIN 2 */ diff --git a/Src/stm32f4xx_it.c b/Src/stm32f4xx_it.c index 7cec13a9..302c116b 100644 --- a/Src/stm32f4xx_it.c +++ b/Src/stm32f4xx_it.c @@ -167,20 +167,6 @@ void SysTick_Handler(void) /* please refer to the startup file (startup_stm32f4xx.s). */ /******************************************************************************/ -/** -* @brief This function handles EXTI line0 interrupt. -*/ -void EXTI0_IRQHandler(void) -{ - /* USER CODE BEGIN EXTI0_IRQn 0 */ - - /* USER CODE END EXTI0_IRQn 0 */ - HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0); - /* USER CODE BEGIN EXTI0_IRQn 1 */ - - /* USER CODE END EXTI0_IRQn 1 */ -} - /** * @brief This function handles EXTI line2 interrupt. */ @@ -195,6 +181,20 @@ void EXTI2_IRQHandler(void) /* USER CODE END EXTI2_IRQn 1 */ } +/** +* @brief This function handles EXTI line4 interrupt. +*/ +void EXTI4_IRQHandler(void) +{ + /* USER CODE BEGIN EXTI4_IRQn 0 */ + + /* USER CODE END EXTI4_IRQn 0 */ + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4); + /* USER CODE BEGIN EXTI4_IRQn 1 */ + + /* USER CODE END EXTI4_IRQn 1 */ +} + /** * @brief This function handles ADC1, ADC2 and ADC3 global interrupts. */