#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/