初级会员

- 积分
- 73
- 金钱
- 73
- 注册时间
- 2015-12-4
- 在线时间
- 1 小时
|
5金钱
我用定时器3做1ms中断计时,如果main()下不执行不长的代码就正常,如果执行如LCD显示就变慢了
void AUTO_RUN()
{
.......
SEND_FLAG=1;
//
}
int main()
{
delay_init(); //延时函数初始化
RCC_Config();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
TIM3_Int_Init(1000,72-1); //定时器系统节拍1ms初始化
//LED_Init(); //初始化与LED连接的硬件接口
//KEY_Init(); //初始化按键
DMX_init();
LCD_Init();
while(1)
{
if(!DMX_FLAG)AUTO_RUN();
if(SEND_FLAG)
{
SEND_FLAG=0;
//LCD_Fill(0,0,319,200,GUI_Color565(LED_Fade_Rg[0]<<16|LED_Fade_Rg[1]<<8|LED_Fade_Rg[2]));//注释这句就正常,如果不注释就变得好慢
Show_Str(30,210,320,16,"显示字符",16,0);
}
}
}
void TIM3_IRQHandler(void) //TIM3中断
{
if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查TIM3更新中断发生与否
{
static u8 TickPhase = 0;
TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx更新中断标志
if(!dmx_flag)
{
if(!pause)
{
if(Mode_Delay_Rg) Mode_Delay_Rg--;
}
else
if(++pause_rg>999){pause=0;pause_rg=0;}
if(++dmx_delay>2) SEND_FLAG=1;
}
}
|
|