#include "main.h"
#include "stm32f3xx_hal.h"
#include<time.h>

TIM_HandleTypeDef htim2
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_TIM2_Init(void);
long int count1,count2,count,i=5;


int main(void)
{
    HAL_Init();

    SystemClock_Config();

    MX_GPIO_Init();
    MX_TIM2_Init();
    HAL_TIM_Base_Init(&htim2);
    HAL_TIM_Base_Start(&htim2);

    count1= __HAL_TIM_GET_COUNTER(&htim2);

    while (i)
    {
        HAL_GPIO_WritePin(GPIOB,GPIO_PIN_3,GPIO_PIN_SET);
        HAL_Delay(50000);
        HAL_GPIO_WritePin(GPIOB,GPIO_PIN_3,GPIO_PIN_RESET);
        HAL_Delay(10000);
        i--;
    }
    count=count2-count1;
    count2= __HAL_TIM_GET_COUNTER(&htim2);
}

代码输出始终为0。我无法获取计数值。有人能告诉我为什么不执行吗?我使用的是STM32F303k8微控制器。即使需要几分钟才能完全执行,计数值始终为零!!
提前谢谢!

最佳答案

这:

count=count2-count1;
count2= __HAL_TIM_GET_COUNTER(&htim2);

完全没有意义,在从计时器刷新之前,您要从count2中减去它?
或许应该是:
const uint32_t now = __HAL_TIM_GET_COUNTER(&htim2);
count += now - last;
last = now;

循环前有uint32_t last = __HAL_TIM_GET_COUNTER(&htim2);

关于c - 如何在stm32f3xx中找到执行时间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48903510/

10-11 17:32