2019-10-15 05:51发布
hande 发表于 2017-1-23 15:03 我查了一下,好像是中断函数运行时间太长了,有什么办法可以解决这个问题吗
lvkanger 发表于 2017-1-23 16:02 你中断里都干嘛了?为啥会运行时间太长?贴下代码吧
hande 发表于 2017-1-23 16:20 void TIM3_IRQHandler(void) { static float temp;
最多设置5个标签!
你中断里都干嘛了?为啥会运行时间太长?贴下代码吧
void TIM3_IRQHandler(void)
{
static float temp;
static UINT bw; /* ????????????? */
static FRESULT ress;
static FIL file;
static unsigned char buf[482]="";
static char zh[6];
static u8 i=0;
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
{
temp=(float)ADC_ConvertedValue*(3.3/4096);
printf("%.3f ",temp);
sprintf(zh,"%.3f",temp);
strcat(buf,zh);
strcat(buf," ");
i++;
if(i>=80){
ress = f_open(&file, "0:/data.txt",FA_OPEN_ALWAYS|FA_READ|FA_WRITE );
if ( ress == FR_OK )
{
ress = f_lseek(&file,file.fsize);
ress = f_write(&file, buf, sizeof(buf), &bw);
f_close(&file);
i=0;
}
memset(buf,0,sizeof(buf));
}
TIM_ClearITPendingBit(TIM3, TIM_IT_Update );
}
}
这个就是中断函数
你在中断里做这么多事儿肯定时间长啊,你用定时器中断置标志就好了,把ADC采样和写SD卡都放到外边去!
一周热门 更多>