From 6836cbe29e35111dd9ff9e5e5be64dfdc6a32850 Mon Sep 17 00:00:00 2001 From: zhangfuqiang Date: Wed, 30 Dec 2020 15:52:00 +0800 Subject: [PATCH] fixed timer config issue for cpup --- arch/arm/cortex_m/src/fault.c | 8 +++---- targets/Cloud_STM32F429IGTx_FIRE/Src/tim.c | 4 +++- targets/STM32F072_Nucleo/Src/tim.c | 4 +++- targets/STM32F103_FIRE_Arbitrary/Src/tim.c | 26 ++++---------------- targets/STM32F407_ATK_Explorer/Src/tim.c | 28 ++++------------------ targets/STM32F769IDISCOVERY/Src/tim.c | 4 +++- targets/STM32L431_BearPi/Src/tim.c | 4 +++- 7 files changed, 25 insertions(+), 53 deletions(-) diff --git a/arch/arm/cortex_m/src/fault.c b/arch/arm/cortex_m/src/fault.c index 704cdaf55..eb33ab69d 100644 --- a/arch/arm/cortex_m/src/fault.c +++ b/arch/arm/cortex_m/src/fault.c @@ -298,12 +298,12 @@ VOID BackTraceSub(UINTPTR sp) } while ((stackPointer < stackBottom) && (count < OS_MAX_BACKTRACE)) { - if (((*(UINT32 *)stackPointer) >= (UINT32)(text_start)) && - ((*(UINT32 *)stackPointer) <= (UINT32)(text_end)) && - (IS_ALIGNED(*((UINT32 *)stackPointer - 1), THUM_OFFSET))) { + if ((*(UINT32 *)stackPointer >= (UINT32)text_start) && + (*(UINT32 *)stackPointer <= (UINT32)text_end) && + IS_ALIGNED(*(UINT32 *)stackPointer - 1, THUM_OFFSET)) { /* Get the entry address of current function. */ - UINTPTR checkBL = CalculateTargetAddress (*(UINT32 *)stackPointer - 1); + UINTPTR checkBL = CalculateTargetAddress(*(UINT32 *)stackPointer - 1); if ((checkBL == 0) || (checkBL == tmpJump)) { stackPointer += STACK_OFFSET; continue; diff --git a/targets/Cloud_STM32F429IGTx_FIRE/Src/tim.c b/targets/Cloud_STM32F429IGTx_FIRE/Src/tim.c index 14010089e..c2c9a4b3f 100644 --- a/targets/Cloud_STM32F429IGTx_FIRE/Src/tim.c +++ b/targets/Cloud_STM32F429IGTx_FIRE/Src/tim.c @@ -113,8 +113,8 @@ UINT64 Timer3Getcycle(VOID) if (swCycles <= bacCycle) { cycleTimes++; - bacCycle = swCycles; } + bacCycle = swCycles; return swCycles + cycleTimes * TIMER3_RELOAD; } @@ -130,7 +130,9 @@ VOID StmTimerHwiCreate(VOID) ret = LOS_HwiCreate(TIM_IRQ, 0, 0, TIM3_IRQHandler, 0); // 16: cortex-m irq num shift if (ret != 0) { printf("ret of TIM3 LOS_HwiCreate = %#x\n", ret); + return; } + HAL_TIM_Base_Start_IT(&htim3); } UINT64 StmGetTimerCycles(Timer_t num) diff --git a/targets/STM32F072_Nucleo/Src/tim.c b/targets/STM32F072_Nucleo/Src/tim.c index 7e51a0b64..be4f62b45 100644 --- a/targets/STM32F072_Nucleo/Src/tim.c +++ b/targets/STM32F072_Nucleo/Src/tim.c @@ -133,8 +133,8 @@ UINT64 Timer3Getcycle(VOID) if (swCycles <= bacCycle) { cycleTimes++; - bacCycle = swCycles; } + bacCycle = swCycles; return swCycles + cycleTimes * TIMER3_RELOAD; } @@ -150,7 +150,9 @@ VOID StmTimerHwiCreate(VOID) ret = LOS_HwiCreate(TIM_IRQ, 0, 0, TIM3_IRQHandler, 0); // 16: cortex-m irq num shift if (ret != 0) { printf("ret of TIM3 LOS_HwiCreate = %#x\n", ret); + return; } + HAL_TIM_Base_Start_IT(&htim3); } UINT64 StmGetTimerCycles(Timer_t num) diff --git a/targets/STM32F103_FIRE_Arbitrary/Src/tim.c b/targets/STM32F103_FIRE_Arbitrary/Src/tim.c index 5247c7565..76c52cf19 100644 --- a/targets/STM32F103_FIRE_Arbitrary/Src/tim.c +++ b/targets/STM32F103_FIRE_Arbitrary/Src/tim.c @@ -35,17 +35,14 @@ void MX_TIM3_Init(void) TIM_MasterConfigTypeDef sMasterConfig = { 0 }; htim3.Instance = TIM3; - htim3.Init.Prescaler = 3600 - 1; + htim3.Init.Prescaler = 7200 - 1; htim3.Init.CounterMode = TIM_COUNTERMODE_UP; htim3.Init.Period = 50000 - 1; htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; if (HAL_TIM_Base_Init(&htim3) != HAL_OK) { Error_Handler(); } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_ETRMODE2; - sClockSourceConfig.ClockPolarity = TIM_CLOCKPOLARITY_NONINVERTED; - sClockSourceConfig.ClockPrescaler = TIM_CLOCKPRESCALER_DIV1; - sClockSourceConfig.ClockFilter = 0; + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) { Error_Handler(); } @@ -58,7 +55,6 @@ void MX_TIM3_Init(void) void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *tim_baseHandle) { - GPIO_InitTypeDef GPIO_InitStruct = { 0 }; if (tim_baseHandle->Instance == TIM3) { /* USER CODE BEGIN TIM3_MspInit 0 */ @@ -66,15 +62,6 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *tim_baseHandle) /* TIM3 clock enable */ __HAL_RCC_TIM3_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - /* *TIM3 GPIO Configuration - PD2 ------> TIM3_ETR - */ - GPIO_InitStruct.Pin = GPIO_PIN_2; - GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - /* TIM3 interrupt Init */ HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0); HAL_NVIC_EnableIRQ(TIM3_IRQn); @@ -93,11 +80,6 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *tim_baseHandle) /* Peripheral clock disable */ __HAL_RCC_TIM3_CLK_DISABLE(); - /* *TIM3 GPIO Configuration - PD2 ------> TIM3_ETR - */ - HAL_GPIO_DeInit(GPIOD, GPIO_PIN_2); - /* TIM3 interrupt Deinit */ HAL_NVIC_DisableIRQ(TIM3_IRQn); /* USER CODE BEGIN TIM3_MspDeInit 1 */ @@ -129,8 +111,8 @@ UINT64 Timer3Getcycle(VOID) if (swCycles <= bacCycle) { cycleTimes++; - bacCycle = swCycles; } + bacCycle = swCycles; return swCycles + cycleTimes * TIMER3_RELOAD; } @@ -146,7 +128,9 @@ VOID StmTimerHwiCreate(VOID) ret = LOS_HwiCreate(TIM_IRQ, 0, 0, TIM3_IRQHandler, 0); // 16: cortex-m irq num shift if (ret != 0) { printf("ret of TIM3 LOS_HwiCreate = %#x\n", ret); + return; } + HAL_TIM_Base_Start_IT(&htim3); } UINT64 StmGetTimerCycles(Timer_t num) diff --git a/targets/STM32F407_ATK_Explorer/Src/tim.c b/targets/STM32F407_ATK_Explorer/Src/tim.c index 4f297ae11..13f165fac 100644 --- a/targets/STM32F407_ATK_Explorer/Src/tim.c +++ b/targets/STM32F407_ATK_Explorer/Src/tim.c @@ -43,10 +43,7 @@ void MX_TIM3_Init(void) if (HAL_TIM_Base_Init(&htim3) != HAL_OK) { Error_Handler(); } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_ETRMODE2; - sClockSourceConfig.ClockPolarity = TIM_CLOCKPOLARITY_NONINVERTED; - sClockSourceConfig.ClockPrescaler = TIM_CLOCKPRESCALER_DIV1; - sClockSourceConfig.ClockFilter = 0; + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) { Error_Handler(); } @@ -59,25 +56,12 @@ void MX_TIM3_Init(void) void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *tim_baseHandle) { - GPIO_InitTypeDef GPIO_InitStruct = { 0 }; if (tim_baseHandle->Instance == TIM3) { /* USER CODE BEGIN TIM3_MspInit 0 */ /* USER CODE END TIM3_MspInit 0 */ /* TIM3 clock enable */ __HAL_RCC_TIM3_CLK_ENABLE(); - - __HAL_RCC_GPIOD_CLK_ENABLE(); - /* *TIM3 GPIO Configuration - PD2 ------> TIM3_ETR - */ - GPIO_InitStruct.Pin = GPIO_PIN_2; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - GPIO_InitStruct.Alternate = GPIO_AF2_TIM3; - HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - /* USER CODE BEGIN TIM3_MspInit 1 */ /* USER CODE END TIM3_MspInit 1 */ @@ -92,12 +76,6 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *tim_baseHandle) /* USER CODE END TIM3_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_TIM3_CLK_DISABLE(); - - /* *TIM3 GPIO Configuration - PD2 ------> TIM3_ETR - */ - HAL_GPIO_DeInit(GPIOD, GPIO_PIN_2); - /* USER CODE BEGIN TIM3_MspDeInit 1 */ /* USER CODE END TIM3_MspDeInit 1 */ @@ -128,8 +106,8 @@ UINT64 Timer3Getcycle(VOID) if (swCycles <= bacCycle) { cycleTimes++; - bacCycle = swCycles; } + bacCycle = swCycles; return swCycles + cycleTimes * TIMER3_RELOAD; } @@ -145,7 +123,9 @@ VOID StmTimerHwiCreate(VOID) ret = LOS_HwiCreate(TIM_IRQ, 0, 0, TIM3_IRQHandler, 0); // 16: cortex-m irq num shift if (ret != 0) { printf("ret of TIM3 LOS_HwiCreate = %#x\n", ret); + return; } + HAL_TIM_Base_Start_IT(&htim3); } UINT64 StmGetTimerCycles(Timer_t num) diff --git a/targets/STM32F769IDISCOVERY/Src/tim.c b/targets/STM32F769IDISCOVERY/Src/tim.c index 57364f754..49d304553 100644 --- a/targets/STM32F769IDISCOVERY/Src/tim.c +++ b/targets/STM32F769IDISCOVERY/Src/tim.c @@ -105,8 +105,8 @@ UINT64 Timer3Getcycle(VOID) if (swCycles <= bacCycle) { cycleTimes++; - bacCycle = swCycles; } + bacCycle = swCycles; return swCycles + cycleTimes * TIMER3_RELOAD; } @@ -122,7 +122,9 @@ VOID StmTimerHwiCreate(VOID) ret = LOS_HwiCreate(TIM_IRQ, 0, 0, TIM3_IRQHandler, 0); // 16: cortex-m irq num shift if (ret != 0) { printf("ret of TIM3 LOS_HwiCreate = %#x\n", ret); + return; } + HAL_TIM_Base_Start_IT(&htim3); } UINT64 StmGetTimerCycles(Timer_t num) diff --git a/targets/STM32L431_BearPi/Src/tim.c b/targets/STM32L431_BearPi/Src/tim.c index 06e5bf7fd..2adf9de56 100644 --- a/targets/STM32L431_BearPi/Src/tim.c +++ b/targets/STM32L431_BearPi/Src/tim.c @@ -106,8 +106,8 @@ UINT64 Timer7Getcycle(VOID) if (swCycles <= bacCycle) { cycleTimes++; - bacCycle = swCycles; } + bacCycle = swCycles; return swCycles + cycleTimes * TIMER7_RELOAD; } @@ -123,7 +123,9 @@ VOID StmTimerHwiCreate(VOID) ret = LOS_HwiCreate(TIM_IRQ, 0, 0, TIM7_IRQHandler, 0); // 16: cortex-m irq num shift if (ret != 0) { printf("ret of TIM7 LOS_HwiCreate = %#x\n", ret); + return; } + HAL_TIM_Base_Start_IT(&htim7); } UINT64 StmGetTimerCycles(Timer_t num) -- Gitee