1. main函数里执行LCD_Clear(LIGHTBLUE),将LCD画成LIGHTBLUE颜 {MOD};
2. 按照定时器中断例子,main函数初始化Tim3: Timerx_Init(5000,7199);
3. 中断处理函数 void TIM3_IRQHandler(void)
{
if(TIM3->SR&0X0001)//溢出中断
{
LCD_ShowString(40, 40, "Tim3");
}
TIM3->SR&=~(1<<0);//清除中断标志位
}
4. main函数
int main(void)
{
Stm32_Clock_Init(9);//系统时钟设置
delay_init(72); //延时初始化
LCD_Init();
LCD_Clear(LIGHTBLUE);
Timerx_Init(5000,7199);
while(1)
{
LCD_ShowString(20, 20, "Main");
}
}
现在出现的状况是Timer里显示的"Tim3"字串周围有很多杂点。
这是什么原因啊?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1。 main里面
while(1)
{
TIM3->CR1&=~(0x0001); //关闭定时器3
LCD_ShowString(20,20,"Main");
TIM3->CR1|=0x0001; //使能定时器3
delay_ms(10);
}
情况依旧。
2. 我尝试修改一下LCD_ShowString函数,保证LCD_ShowString还没有返回时,不能同时调用
LCD_ShowChar()
u8 gLCDworking=0;
void LCD_ShowString(u16 x,u16 y,const u8 *p)
{
while(gLCDworking)
{
delay_ms(10);
}
gLCDworking=1;
printf("LCD_ShowString:%s ", p);
while(*p!=' ')
{
if(x>MAX_CHAR_POSX){x=0;y+=16;}
if(y>MAX_CHAR_POSY){y=x=0;LCD_Clear(WHITE);}
LCD_ShowChar(x,y,*p,16,0);
x+=8;
p++;
}
gLCDworking=0;
}
结果还是有白 {MOD}竖线呢,这就不好解释啦,
一周热门 更多>