初级会员

- 积分
- 127
- 金钱
- 127
- 注册时间
- 2016-4-7
- 在线时间
- 33 小时
|
5金钱
主函数中:
while(1)
{
if(KEY_Scan()==1) //10s后,若键值是1,启动定时器
{
TIM3_Int_Init(4,7199); //2KHz采样率,0.5ms采样一次,采样10s自动关闭中断,停止采样
}
if(KEY_Scan()==2) //10s后,若键值是2,从flash中读取,并发送这20K数据
{
while(numr<40960)
{
STMFLASH_Read(FLASH_SAVE_ADDR+numr,(u16*)TEXT_Buffer1,1);
u2_printf("%d\r\n",TEXT_Buffer1[0]);//蓝牙发送
numr=numr+2;
}
numr=0;
}
}
定时器3中断服务函数中:
//每秒中采样2K的ADC,并存储在flash,计满10s,关闭定时器
void TIM3_IRQHandler(void) //TIM3中断
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx的中断待处理位:TIM 中断源
TEXT_Buffer[0]=Get_Adc(ADC_Channel_11); //定义有 u16 TEXT_Buffer[1];
STMFLASH_Write(FLASH_SAVE_ADDR+numw,(u16*)TEXT_Buffer,1);//
LCD_ShowString(60,150,200,16,16,"ING.... "); //显示正在采样
numw=numw+2;
if(numw==40960) //采样10s,计满20KADC,40Kbyte数据,故numw是40960时停止
{
numw=0;
TIM_Cmd(TIM3, DISABLE); //关闭定时器
LCD_ShowString(60,150,200,16,16,"END.... ");//显示采样结束
}
}
}
按下KEY0后,KEY_Scan()==1,结果LCD一直在显示ING....,10s后也不显示END……,貌似在if前就会产生中断,进不了if。而且复位后黑屏。 求解。。
|
|