DSP BasicMath测试实验-定时器溢出次数问题

2019-07-20 05:05发布

DSP BasicMath测试实验,主函数中定义的定时器溢出次数timeout,是如何实现递增的,没看懂,求大神指教?


u8 timeout;//定时器溢出次数

int main(void)
{
float time;
u8 buf[50];
u8 res;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
delay_init(168);  //初始化延时函数
uart_init(115200);  //初始化串口波特率为115200

LED_Init();     //初始化LED
KEY_Init();     //初始化按键
  LCD_Init();     //初始化LCD
  TIM3_Int_Init(65535,8400-1);//10Khz计数频率,最大计时6.5秒超出
POINT_COLOR=RED;
LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");
LCD_ShowString(30,70,200,16,16,"DSP BasicMath TEST");
LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(30,110,200,16,16,"2014/7/2");
LCD_ShowString(30,150,200,16,16," No DSP runtime:"); //显示提示信息
LCD_ShowString(30,190,200,16,16,"Use DSP runtime:"); //显示提示信息
  POINT_COLOR=BLUE; //设置字体为蓝 {MOD}   
while(1)
{
  LCD_Fill(30+16*8,150,lcddev.width-1,60,WHITE);  //清除原来现实
  //不使用DSP优化
  TIM_SetCounter(TIM3,0);//重设TIM3定时器的计数器值
  timeout=0;
  res=sin_cos_test(PI/6,200000,0);
  time=TIM_GetCounter(TIM3)+(u32)timeout*65536;
  sprintf((char*)buf,"%0.1fms ",time/10);
  if(res==0)LCD_ShowString(30+16*8,150,100,16,16,buf); //显示运行时间  
  else LCD_ShowString(30+16*8,150,100,16,16,"error!"); //显示当前运行情况
  //使用DSP优化  
  TIM_SetCounter(TIM3,0);//重设TIM3定时器的计数器值
  timeout=0;
  res=sin_cos_test(PI/6,200000,1);
  time=TIM_GetCounter(TIM3)+(u32)timeout*65536;
  sprintf((char*)buf,"%0.1fms ",time/10);
  if(res==0)LCD_ShowString(30+16*8,190,100,16,16,buf); //显示运行时间
  else LCD_ShowString(30+16*8,190,100,16,16,"error!"); //显示错误
  LED0=!LED0;
}
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
正点原子
1楼-- · 2019-07-20 08:18
 精彩回答 2  元偷偷看……
安宁如水
2楼-- · 2019-07-20 13:11
我以为timer文件没修改,才看到里面申明了timeout, 感谢!

一周热门 更多>