From 7a50a755c37227ca5257a7d1ce2f2e5c908dcce8 Mon Sep 17 00:00:00 2001 From: wangxujie Date: Fri, 21 Feb 2025 13:24:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BC=96=E7=A0=81=E5=99=A8?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Core/Inc/main.h | 4 + Core/Inc/stm32f4xx_it.h | 2 +- Core/Inc/tim.h | 3 + Core/Src/freertos.c | 31 +++- Core/Src/main.c | 7 +- Core/Src/stm32f4xx_hal_timebase_tim.c | 63 ++++---- Core/Src/stm32f4xx_it.c | 30 ++-- Core/Src/tim.c | 99 +++++++++++++ MDK-ARM/semi-finished_product_testing.uvoptx | 14 +- semi-finished_product_testing.ioc | 142 +++++++++++-------- 10 files changed, 285 insertions(+), 110 deletions(-) diff --git a/Core/Inc/main.h b/Core/Inc/main.h index b829f00..74832b8 100644 --- a/Core/Inc/main.h +++ b/Core/Inc/main.h @@ -103,6 +103,10 @@ void Error_Handler(void); #define LED3_G_GPIO_Port GPIOB #define LED3_Y_Pin GPIO_PIN_7 #define LED3_Y_GPIO_Port GPIOE +#define EC11_A_Pin GPIO_PIN_9 +#define EC11_A_GPIO_Port GPIOE +#define EC11_B_Pin GPIO_PIN_11 +#define EC11_B_GPIO_Port GPIOE #define LED2_R_Pin GPIO_PIN_12 #define LED2_R_GPIO_Port GPIOE #define LED2_G_Pin GPIO_PIN_13 diff --git a/Core/Inc/stm32f4xx_it.h b/Core/Inc/stm32f4xx_it.h index 257123a..20b965a 100644 --- a/Core/Inc/stm32f4xx_it.h +++ b/Core/Inc/stm32f4xx_it.h @@ -61,8 +61,8 @@ void DMA1_Stream3_IRQHandler(void); void DMA1_Stream4_IRQHandler(void); void DMA1_Stream5_IRQHandler(void); void DMA1_Stream6_IRQHandler(void); -void TIM1_UP_TIM10_IRQHandler(void); void TIM3_IRQHandler(void); +void TIM4_IRQHandler(void); void USART2_IRQHandler(void); void USART3_IRQHandler(void); void DMA1_Stream7_IRQHandler(void); diff --git a/Core/Inc/tim.h b/Core/Inc/tim.h index a898331..8901d04 100644 --- a/Core/Inc/tim.h +++ b/Core/Inc/tim.h @@ -32,6 +32,8 @@ extern "C" { /* USER CODE END Includes */ +extern TIM_HandleTypeDef htim1; + extern TIM_HandleTypeDef htim2; extern TIM_HandleTypeDef htim3; @@ -84,6 +86,7 @@ extern TIM_HandleTypeDef htim3; } while (__LINE__ == -1) /* USER CODE END Private defines */ +void MX_TIM1_Init(void); void MX_TIM2_Init(void); void MX_TIM3_Init(void); diff --git a/Core/Src/freertos.c b/Core/Src/freertos.c index a86ead1..205b38c 100644 --- a/Core/Src/freertos.c +++ b/Core/Src/freertos.c @@ -29,6 +29,7 @@ #include "ad7124.h" #include "usart.h" #include "communication_protocol.h" +#include "tim.h" /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ @@ -55,10 +56,13 @@ osThreadId led_taskHandle; osThreadId dac_taskHandle; osThreadId adc_taskHandle; osThreadId gpio_di_do_taskHandle; +osThreadId ec11_taskHandle; /* Private function prototypes -----------------------------------------------*/ /* USER CODE BEGIN FunctionPrototypes */ extern float current_buff[2]; +int direction = 0; +int encode_num = 0; /* USER CODE END FunctionPrototypes */ void start_tcp_task(void const *argument); @@ -66,6 +70,7 @@ void start_led_toggle_task(void const *argument); void start_dac_task(void const *argument); void start_adc_task(void const *argument); void start_gpio_di_do_task(void const *argument); +void start_ec11_task(void const *argument); extern void MX_LWIP_Init(void); void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */ @@ -134,6 +139,10 @@ void MX_FREERTOS_Init(void) osThreadDef(gpio_di_do_task, start_gpio_di_do_task, osPriorityNormal, 0, 128); gpio_di_do_taskHandle = osThreadCreate(osThread(gpio_di_do_task), NULL); + /* definition and creation of ec11_task */ + osThreadDef(ec11_task, start_ec11_task, osPriorityNormal, 0, 128); + ec11_taskHandle = osThreadCreate(osThread(ec11_task), NULL); + /* USER CODE BEGIN RTOS_THREADS */ /* add threads, ... */ /* USER CODE END RTOS_THREADS */ @@ -263,11 +272,31 @@ void start_gpio_di_do_task(void const *argument) /* Infinite loop */ for (;;) { - osDelay(1); + vTaskDelay(500); } /* USER CODE END start_gpio_di_do_task */ } +/* USER CODE BEGIN Header_start_ec11_task */ +/** + * @brief Function implementing the ec11_task thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_start_ec11_task */ +void start_ec11_task(void const *argument) +{ + /* USER CODE BEGIN start_ec11_task */ + /* Infinite loop */ + for (;;) + { + direction = __HAL_TIM_IS_TIM_COUNTING_DOWN(&htim1); + encode_num = (short)__HAL_TIM_GET_COUNTER(&htim1); + osDelay(1); + } + /* USER CODE END start_ec11_task */ +} + /* Private application code --------------------------------------------------*/ /* USER CODE BEGIN Application */ diff --git a/Core/Src/main.c b/Core/Src/main.c index ca7dc56..2902217 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -98,7 +98,6 @@ int main(void) /* USER CODE END Init */ - /* Configure the system clock */ SystemClock_Config(); @@ -117,6 +116,7 @@ int main(void) MX_UART5_Init(); MX_USART2_UART_Init(); MX_USART3_UART_Init(); + MX_TIM1_Init(); /* USER CODE BEGIN 2 */ // HAL_GPIO_WritePin(DO_EN_GPIO_Port, DO_EN_Pin, GPIO_PIN_SET); // DO输出使能 @@ -127,6 +127,7 @@ int main(void) HAL_UARTEx_ReceiveToIdle_DMA(&huart2, hart2_uart2.rx_data_temp, ARRAY_LEN(hart2_uart2.rx_data_temp)); hart_ht1200m_reset(); // 初始化HT1200M模块 HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); // PWM输出,用于驱动HT1200M模块 + HAL_TIM_Encoder_Start(&htim1, TIM_CHANNEL_ALL); /* USER CODE END 2 */ /* Call init function for freertos objects (in freertos.c) */ @@ -259,7 +260,7 @@ void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) /** * @brief Period elapsed callback in non blocking mode - * @note This function is called when TIM1 interrupt took place, inside + * @note This function is called when TIM4 interrupt took place, inside * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment * a global variable "uwTick" used as application time base. * @param htim : TIM handle @@ -270,7 +271,7 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) /* USER CODE BEGIN Callback 0 */ /* USER CODE END Callback 0 */ - if (htim->Instance == TIM1) { + if (htim->Instance == TIM4) { HAL_IncTick(); } /* USER CODE BEGIN Callback 1 */ diff --git a/Core/Src/stm32f4xx_hal_timebase_tim.c b/Core/Src/stm32f4xx_hal_timebase_tim.c index c667839..27b36e3 100644 --- a/Core/Src/stm32f4xx_hal_timebase_tim.c +++ b/Core/Src/stm32f4xx_hal_timebase_tim.c @@ -25,12 +25,12 @@ /* Private define ------------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ -TIM_HandleTypeDef htim1; +TIM_HandleTypeDef htim4; /* Private function prototypes -----------------------------------------------*/ /* Private functions ---------------------------------------------------------*/ /** - * @brief This function configures the TIM1 as a time base source. + * @brief This function configures the TIM4 as a time base source. * The time source is configured to have 1ms time base with a dedicated * Tick interrupt priority. * @note This function is called automatically at the beginning of program after @@ -41,54 +41,63 @@ TIM_HandleTypeDef htim1; HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) { RCC_ClkInitTypeDef clkconfig; - uint32_t uwTimclock = 0U; + uint32_t uwTimclock, uwAPB1Prescaler = 0U; uint32_t uwPrescalerValue = 0U; uint32_t pFLatency; HAL_StatusTypeDef status; - /* Enable TIM1 clock */ - __HAL_RCC_TIM1_CLK_ENABLE(); + /* Enable TIM4 clock */ + __HAL_RCC_TIM4_CLK_ENABLE(); /* Get clock configuration */ HAL_RCC_GetClockConfig(&clkconfig, &pFLatency); - /* Compute TIM1 clock */ - uwTimclock = 2*HAL_RCC_GetPCLK2Freq(); + /* Get APB1 prescaler */ + uwAPB1Prescaler = clkconfig.APB1CLKDivider; + /* Compute TIM4 clock */ + if (uwAPB1Prescaler == RCC_HCLK_DIV1) + { + uwTimclock = HAL_RCC_GetPCLK1Freq(); + } + else + { + uwTimclock = 2UL * HAL_RCC_GetPCLK1Freq(); + } - /* Compute the prescaler value to have TIM1 counter clock equal to 1MHz */ + /* Compute the prescaler value to have TIM4 counter clock equal to 1MHz */ uwPrescalerValue = (uint32_t) ((uwTimclock / 1000000U) - 1U); - /* Initialize TIM1 */ - htim1.Instance = TIM1; + /* Initialize TIM4 */ + htim4.Instance = TIM4; /* Initialize TIMx peripheral as follow: - + Period = [(TIM1CLK/1000) - 1]. to have a (1/1000) s time base. + + Period = [(TIM4CLK/1000) - 1]. to have a (1/1000) s time base. + Prescaler = (uwTimclock/1000000 - 1) to have a 1MHz counter clock. + ClockDivision = 0 + Counter direction = Up */ - htim1.Init.Period = (1000000U / 1000U) - 1U; - htim1.Init.Prescaler = uwPrescalerValue; - htim1.Init.ClockDivision = 0; - htim1.Init.CounterMode = TIM_COUNTERMODE_UP; - htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + htim4.Init.Period = (1000000U / 1000U) - 1U; + htim4.Init.Prescaler = uwPrescalerValue; + htim4.Init.ClockDivision = 0; + htim4.Init.CounterMode = TIM_COUNTERMODE_UP; + htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - status = HAL_TIM_Base_Init(&htim1); + status = HAL_TIM_Base_Init(&htim4); if (status == HAL_OK) { /* Start the TIM time Base generation in interrupt mode */ - status = HAL_TIM_Base_Start_IT(&htim1); + status = HAL_TIM_Base_Start_IT(&htim4); if (status == HAL_OK) { - /* Enable the TIM1 global Interrupt */ - HAL_NVIC_EnableIRQ(TIM1_UP_TIM10_IRQn); + /* Enable the TIM4 global Interrupt */ + HAL_NVIC_EnableIRQ(TIM4_IRQn); /* Configure the SysTick IRQ priority */ if (TickPriority < (1UL << __NVIC_PRIO_BITS)) { /* Configure the TIM IRQ priority */ - HAL_NVIC_SetPriority(TIM1_UP_TIM10_IRQn, TickPriority, 0U); + HAL_NVIC_SetPriority(TIM4_IRQn, TickPriority, 0U); uwTickPrio = TickPriority; } else @@ -104,25 +113,25 @@ HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) /** * @brief Suspend Tick increment. - * @note Disable the tick increment by disabling TIM1 update interrupt. + * @note Disable the tick increment by disabling TIM4 update interrupt. * @param None * @retval None */ void HAL_SuspendTick(void) { - /* Disable TIM1 update Interrupt */ - __HAL_TIM_DISABLE_IT(&htim1, TIM_IT_UPDATE); + /* Disable TIM4 update Interrupt */ + __HAL_TIM_DISABLE_IT(&htim4, TIM_IT_UPDATE); } /** * @brief Resume Tick increment. - * @note Enable the tick increment by Enabling TIM1 update interrupt. + * @note Enable the tick increment by Enabling TIM4 update interrupt. * @param None * @retval None */ void HAL_ResumeTick(void) { - /* Enable TIM1 Update interrupt */ - __HAL_TIM_ENABLE_IT(&htim1, TIM_IT_UPDATE); + /* Enable TIM4 Update interrupt */ + __HAL_TIM_ENABLE_IT(&htim4, TIM_IT_UPDATE); } diff --git a/Core/Src/stm32f4xx_it.c b/Core/Src/stm32f4xx_it.c index 4718c0d..f1dc188 100644 --- a/Core/Src/stm32f4xx_it.c +++ b/Core/Src/stm32f4xx_it.c @@ -78,7 +78,7 @@ extern UART_HandleTypeDef huart5; extern UART_HandleTypeDef huart2; extern UART_HandleTypeDef huart3; extern UART_HandleTypeDef huart6; -extern TIM_HandleTypeDef htim1; +extern TIM_HandleTypeDef htim4; /* USER CODE BEGIN EV */ @@ -308,20 +308,6 @@ void DMA1_Stream6_IRQHandler(void) /* USER CODE END DMA1_Stream6_IRQn 1 */ } -/** - * @brief This function handles TIM1 update interrupt and TIM10 global interrupt. - */ -void TIM1_UP_TIM10_IRQHandler(void) -{ - /* USER CODE BEGIN TIM1_UP_TIM10_IRQn 0 */ - - /* USER CODE END TIM1_UP_TIM10_IRQn 0 */ - HAL_TIM_IRQHandler(&htim1); - /* USER CODE BEGIN TIM1_UP_TIM10_IRQn 1 */ - - /* USER CODE END TIM1_UP_TIM10_IRQn 1 */ -} - /** * @brief This function handles TIM3 global interrupt. */ @@ -336,6 +322,20 @@ void TIM3_IRQHandler(void) /* USER CODE END TIM3_IRQn 1 */ } +/** + * @brief This function handles TIM4 global interrupt. + */ +void TIM4_IRQHandler(void) +{ + /* USER CODE BEGIN TIM4_IRQn 0 */ + + /* USER CODE END TIM4_IRQn 0 */ + HAL_TIM_IRQHandler(&htim4); + /* USER CODE BEGIN TIM4_IRQn 1 */ + + /* USER CODE END TIM4_IRQn 1 */ +} + /** * @brief This function handles USART2 global interrupt. */ diff --git a/Core/Src/tim.c b/Core/Src/tim.c index ae27cfe..8285c5f 100644 --- a/Core/Src/tim.c +++ b/Core/Src/tim.c @@ -24,9 +24,55 @@ /* USER CODE END 0 */ +TIM_HandleTypeDef htim1; TIM_HandleTypeDef htim2; TIM_HandleTypeDef htim3; +/* TIM1 init function */ +void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_Encoder_InitTypeDef sConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 2; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + sConfig.EncoderMode = TIM_ENCODERMODE_TI12; + sConfig.IC1Polarity = TIM_ICPOLARITY_RISING; + sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI; + sConfig.IC1Prescaler = TIM_ICPSC_DIV1; + sConfig.IC1Filter = 0; + sConfig.IC2Polarity = TIM_ICPOLARITY_RISING; + sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI; + sConfig.IC2Prescaler = TIM_ICPSC_DIV1; + sConfig.IC2Filter = 0; + if (HAL_TIM_Encoder_Init(&htim1, &sConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} /* TIM2 init function */ void MX_TIM2_Init(void) { @@ -122,6 +168,36 @@ void MX_TIM3_Init(void) } +void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef* tim_encoderHandle) +{ + + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(tim_encoderHandle->Instance==TIM1) + { + /* USER CODE BEGIN TIM1_MspInit 0 */ + + /* USER CODE END TIM1_MspInit 0 */ + /* TIM1 clock enable */ + __HAL_RCC_TIM1_CLK_ENABLE(); + + __HAL_RCC_GPIOE_CLK_ENABLE(); + /**TIM1 GPIO Configuration + PE9 ------> TIM1_CH1 + PE11 ------> TIM1_CH2 + */ + GPIO_InitStruct.Pin = EC11_A_Pin|EC11_B_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF1_TIM1; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM1_MspInit 1 */ + + /* USER CODE END TIM1_MspInit 1 */ + } +} + void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) { @@ -180,6 +256,29 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle) } +void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef* tim_encoderHandle) +{ + + if(tim_encoderHandle->Instance==TIM1) + { + /* USER CODE BEGIN TIM1_MspDeInit 0 */ + + /* USER CODE END TIM1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM1_CLK_DISABLE(); + + /**TIM1 GPIO Configuration + PE9 ------> TIM1_CH1 + PE11 ------> TIM1_CH2 + */ + HAL_GPIO_DeInit(GPIOE, EC11_A_Pin|EC11_B_Pin); + + /* USER CODE BEGIN TIM1_MspDeInit 1 */ + + /* USER CODE END TIM1_MspDeInit 1 */ + } +} + void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle) { diff --git a/MDK-ARM/semi-finished_product_testing.uvoptx b/MDK-ARM/semi-finished_product_testing.uvoptx index 233e055..94fddf6 100644 --- a/MDK-ARM/semi-finished_product_testing.uvoptx +++ b/MDK-ARM/semi-finished_product_testing.uvoptx @@ -165,6 +165,16 @@ 1 xReturn + + 3 + 1 + direction + + + 4 + 1 + encode_num + 0 @@ -248,7 +258,7 @@ 2 2 1 - 0 + 1 0 0 ../Core/Src/main.c @@ -272,7 +282,7 @@ 2 4 1 - 0 + 1 0 0 ../Core/Src/freertos.c diff --git a/semi-finished_product_testing.ioc b/semi-finished_product_testing.ioc index 8d4d443..a3cafbf 100644 --- a/semi-finished_product_testing.ioc +++ b/semi-finished_product_testing.ioc @@ -117,7 +117,7 @@ ETH.IPParameters=MediaInterface ETH.MediaInterface=HAL_ETH_RMII_MODE FREERTOS.FootprintOK=true FREERTOS.IPParameters=Tasks01,configMAX_TASK_NAME_LEN,configENABLE_FPU,configMAX_PRIORITIES,FootprintOK -FREERTOS.Tasks01=lwip_task,2,512,start_tcp_task,Default,NULL,Dynamic,NULL,NULL;led_task,-2,128,start_led_toggle_task,Default,NULL,Dynamic,NULL,NULL;dac_task,0,512,start_dac_task,Default,NULL,Dynamic,NULL,NULL;adc_task,-1,128,start_adc_task,Default,NULL,Dynamic,NULL,NULL;gpio_di_do_task,0,128,start_gpio_di_do_task,Default,NULL,Dynamic,NULL,NULL +FREERTOS.Tasks01=lwip_task,2,512,start_tcp_task,Default,NULL,Dynamic,NULL,NULL;led_task,-2,128,start_led_toggle_task,Default,NULL,Dynamic,NULL,NULL;dac_task,0,512,start_dac_task,Default,NULL,Dynamic,NULL,NULL;adc_task,-1,128,start_adc_task,Default,NULL,Dynamic,NULL,NULL;gpio_di_do_task,0,128,start_gpio_di_do_task,Default,NULL,Dynamic,NULL,NULL;ec11_task,0,128,start_ec11_task,Default,NULL,Dynamic,NULL,NULL FREERTOS.configENABLE_FPU=1 FREERTOS.configMAX_PRIORITIES=32 FREERTOS.configMAX_TASK_NAME_LEN=24 @@ -147,20 +147,21 @@ Mcu.CPN=STM32F407VGT6 Mcu.Family=STM32F4 Mcu.IP0=DMA Mcu.IP1=ETH -Mcu.IP10=UART4 -Mcu.IP11=UART5 -Mcu.IP12=USART2 -Mcu.IP13=USART3 -Mcu.IP14=USART6 +Mcu.IP10=TIM3 +Mcu.IP11=UART4 +Mcu.IP12=UART5 +Mcu.IP13=USART2 +Mcu.IP14=USART3 +Mcu.IP15=USART6 Mcu.IP2=FREERTOS Mcu.IP3=LWIP Mcu.IP4=NVIC Mcu.IP5=RCC Mcu.IP6=SPI1 Mcu.IP7=SYS -Mcu.IP8=TIM2 -Mcu.IP9=TIM3 -Mcu.IPNb=15 +Mcu.IP8=TIM1 +Mcu.IP9=TIM2 +Mcu.IPNb=16 Mcu.Name=STM32F407V(E-G)Tx Mcu.Package=LQFP100 Mcu.Pin0=PE2 @@ -169,61 +170,63 @@ Mcu.Pin10=PC5 Mcu.Pin11=PB1 Mcu.Pin12=PB2 Mcu.Pin13=PE7 -Mcu.Pin14=PE12 -Mcu.Pin15=PE13 -Mcu.Pin16=PE14 -Mcu.Pin17=PB11 -Mcu.Pin18=PB12 -Mcu.Pin19=PB13 +Mcu.Pin14=PE9 +Mcu.Pin15=PE11 +Mcu.Pin16=PE12 +Mcu.Pin17=PE13 +Mcu.Pin18=PE14 +Mcu.Pin19=PB11 Mcu.Pin2=PH0-OSC_IN -Mcu.Pin20=PD8 -Mcu.Pin21=PD9 -Mcu.Pin22=PD11 -Mcu.Pin23=PD12 -Mcu.Pin24=PD13 -Mcu.Pin25=PD14 -Mcu.Pin26=PD15 -Mcu.Pin27=PC6 -Mcu.Pin28=PC7 -Mcu.Pin29=PC8 +Mcu.Pin20=PB12 +Mcu.Pin21=PB13 +Mcu.Pin22=PD8 +Mcu.Pin23=PD9 +Mcu.Pin24=PD11 +Mcu.Pin25=PD12 +Mcu.Pin26=PD13 +Mcu.Pin27=PD14 +Mcu.Pin28=PD15 +Mcu.Pin29=PC6 Mcu.Pin3=PH1-OSC_OUT -Mcu.Pin30=PC9 -Mcu.Pin31=PA8 -Mcu.Pin32=PA11 -Mcu.Pin33=PA12 -Mcu.Pin34=PA13 -Mcu.Pin35=PA14 -Mcu.Pin36=PA15 -Mcu.Pin37=PC10 -Mcu.Pin38=PC11 -Mcu.Pin39=PC12 +Mcu.Pin30=PC7 +Mcu.Pin31=PC8 +Mcu.Pin32=PC9 +Mcu.Pin33=PA8 +Mcu.Pin34=PA11 +Mcu.Pin35=PA12 +Mcu.Pin36=PA13 +Mcu.Pin37=PA14 +Mcu.Pin38=PA15 +Mcu.Pin39=PC10 Mcu.Pin4=PC0 -Mcu.Pin40=PD0 -Mcu.Pin41=PD1 -Mcu.Pin42=PD2 -Mcu.Pin43=PD3 -Mcu.Pin44=PD4 -Mcu.Pin45=PD5 -Mcu.Pin46=PD6 -Mcu.Pin47=PD7 -Mcu.Pin48=PB3 -Mcu.Pin49=PB4 +Mcu.Pin40=PC11 +Mcu.Pin41=PC12 +Mcu.Pin42=PD0 +Mcu.Pin43=PD1 +Mcu.Pin44=PD2 +Mcu.Pin45=PD3 +Mcu.Pin46=PD4 +Mcu.Pin47=PD5 +Mcu.Pin48=PD6 +Mcu.Pin49=PD7 Mcu.Pin5=PC1 -Mcu.Pin50=PB5 -Mcu.Pin51=PB6 -Mcu.Pin52=PB7 -Mcu.Pin53=PE0 -Mcu.Pin54=PE1 -Mcu.Pin55=VP_FREERTOS_VS_CMSIS_V1 -Mcu.Pin56=VP_LWIP_VS_Enabled -Mcu.Pin57=VP_SYS_VS_tim1 -Mcu.Pin58=VP_TIM2_VS_ClockSourceINT -Mcu.Pin59=VP_TIM3_VS_ClockSourceINT +Mcu.Pin50=PB3 +Mcu.Pin51=PB4 +Mcu.Pin52=PB5 +Mcu.Pin53=PB6 +Mcu.Pin54=PB7 +Mcu.Pin55=PE0 +Mcu.Pin56=PE1 +Mcu.Pin57=VP_FREERTOS_VS_CMSIS_V1 +Mcu.Pin58=VP_LWIP_VS_Enabled +Mcu.Pin59=VP_SYS_VS_tim4 Mcu.Pin6=PA1 +Mcu.Pin60=VP_TIM2_VS_ClockSourceINT +Mcu.Pin61=VP_TIM3_VS_ClockSourceINT Mcu.Pin7=PA2 Mcu.Pin8=PA7 Mcu.Pin9=PC4 -Mcu.PinsNb=60 +Mcu.PinsNb=62 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F407VGTx @@ -255,10 +258,10 @@ NVIC.SavedPendsvIrqHandlerGenerated=true NVIC.SavedSvcallIrqHandlerGenerated=true NVIC.SavedSystickIrqHandlerGenerated=true NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:false\:true\:false\:true\:false -NVIC.TIM1_UP_TIM10_IRQn=true\:15\:0\:false\:false\:true\:false\:false\:true\:true NVIC.TIM3_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true -NVIC.TimeBase=TIM1_UP_TIM10_IRQn -NVIC.TimeBaseIP=TIM1 +NVIC.TIM4_IRQn=true\:15\:0\:false\:false\:true\:false\:false\:true\:true +NVIC.TimeBase=TIM4_IRQn +NVIC.TimeBaseIP=TIM4 NVIC.UART4_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.UART5_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.USART2_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true @@ -487,6 +490,11 @@ PE1.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH PE1.Locked=true PE1.PinState=GPIO_PIN_SET PE1.Signal=GPIO_Output +PE11.GPIOParameters=GPIO_PuPd,GPIO_Label +PE11.GPIO_Label=EC11_B +PE11.GPIO_PuPd=GPIO_PULLUP +PE11.Locked=true +PE11.Signal=S_TIM1_CH2 PE12.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultOutputPP PE12.GPIO_Label=LED2_R PE12.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_PP @@ -527,6 +535,11 @@ PE7.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM PE7.Locked=true PE7.PinState=GPIO_PIN_SET PE7.Signal=GPIO_Output +PE9.GPIOParameters=GPIO_PuPd,GPIO_Label +PE9.GPIO_Label=EC11_A +PE9.GPIO_PuPd=GPIO_PULLUP +PE9.Locked=true +PE9.Signal=S_TIM1_CH1 PH0-OSC_IN.Mode=HSE-External-Oscillator PH0-OSC_IN.Signal=RCC_OSC_IN PH1-OSC_OUT.Mode=HSE-External-Oscillator @@ -598,6 +611,10 @@ SH.GPXTI1.0=GPIO_EXTI1 SH.GPXTI1.ConfNb=1 SH.GPXTI3.0=GPIO_EXTI3 SH.GPXTI3.ConfNb=1 +SH.S_TIM1_CH1.0=TIM1_CH1,Encoder_Interface +SH.S_TIM1_CH1.ConfNb=1 +SH.S_TIM1_CH2.0=TIM1_CH2,Encoder_Interface +SH.S_TIM1_CH2.ConfNb=1 SH.S_TIM2_CH1_ETR.0=TIM2_CH1,PWM Generation1 CH1 SH.S_TIM2_CH1_ETR.ConfNb=1 SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_256 @@ -608,6 +625,9 @@ SPI1.Direction=SPI_DIRECTION_2LINES SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler,CLKPolarity,CLKPhase SPI1.Mode=SPI_MODE_MASTER SPI1.VirtualType=VM_MASTER +TIM1.EncoderMode=TIM_ENCODERMODE_TI12 +TIM1.IPParameters=EncoderMode,Prescaler +TIM1.Prescaler=2 TIM2.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1 TIM2.IPParameters=Channel-PWM Generation1 CH1,Period,Pulse-PWM Generation1 CH1 TIM2.Period=119 @@ -636,8 +656,8 @@ VP_FREERTOS_VS_CMSIS_V1.Mode=CMSIS_V1 VP_FREERTOS_VS_CMSIS_V1.Signal=FREERTOS_VS_CMSIS_V1 VP_LWIP_VS_Enabled.Mode=Enabled VP_LWIP_VS_Enabled.Signal=LWIP_VS_Enabled -VP_SYS_VS_tim1.Mode=TIM1 -VP_SYS_VS_tim1.Signal=SYS_VS_tim1 +VP_SYS_VS_tim4.Mode=TIM4 +VP_SYS_VS_tim4.Signal=SYS_VS_tim4 VP_TIM2_VS_ClockSourceINT.Mode=Internal VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT VP_TIM3_VS_ClockSourceINT.Mode=Internal