问题描述:
- 我通过STM32的定时器计时,在TIM2的中断里面调用了全局变量(TimN),让它一直往上加(中断时间是10ms),程序如下
void TIM2_IRQHandler(void)
{
static int tim=0;
if(LL_TIM_IsActiveFlag_UPDATE(TIM2) == SET)
{
LL_TIM_ClearFlag_UPDATE(TIM2);
tim++;
TimN++;
}
}
- 但是我自己写了一个峰值识别程序,想把这个峰值之间的时间计算出来,所以需要在子程序调用TimN这个变量,但是发现只要运行到T[i]=TimN 程序就死机了,去掉该行程序正常运行,不知道怎么回事,求各位高人指点一哈:
for (n_data = 1; n_data < Len_Data; n_data++)
{
if ((data[n_data] > data[n_data - 1]) && (data[n_data] > data[n_data + 1])) //筛选峰值
{
PeakVall->Peakval[i] = data[n_data];
PeakVall->PeakValle[k] = data[n_data];
T[i]=TimN; //记录峰值时间点
i++;
n_peak = i; //峰值数量
PeakVall->n_peak= i; //返回结构体
k++;
}
if ((data[n_data] < data[n_data - 1]) && (data[n_data] < data[n_data + 1])) //筛选谷值
{
PeakVall->Valleyval[j] = data[n_data];
PeakVall->PeakValle[k] = data[n_data];
j++;
n_valley = j; //谷值数量
PeakVall->n_valley = j; //返回结构体
k++;
}
}
- 配置TIM2是通过CubeMx配置的,中断可以正常进入计算时间。