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;
}
}
一周热门 更多>