定时器中断和串口

功能说明:通过定时器3产生1秒的中断,(1)在中断函数中让开发板小灯闪烁,证明程序正常运行;

                   (2)在定时器中断函数中设置一个static变量,在中断来之

                       后,自动加1,且把变量值通usart发送到串口;

 基础知识:
  1.stm32通用定时器,16位预分频和自动重装载。

  2.RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); 

打开定时器的时钟源。

  3.其他的知识可以借助数据手册和网络得到,这里就不过多阐述。

1.main函数

  

int main(void)
{		 
	delay_init();	    	 //延时函数初始化	  
	NVIC_Configuration(); 	 //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	uart_init(9600);	 //串口初始化为9600
 	LED_Init();	      //LED端口初始化
	TIM3_Int_Init(9999,7199);//延时1秒  
   //说明:1s = (9999+1) * (7199+1)/72M
   //1.(7199+1)/72M 当stm32工作在72M时,每秒中跳动72M,通过分频,每秒钟跳动10000;
   //2.(9999+1)=10000,刚好1秒     


   	while(1)
	{
			   
	}

/****************timer.c文件*********************/

//定时器3中断服务程序
void TIM3_IRQHandler(void) //TIM3中断
{
  static u16 time=0;
  if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查TIM3更新中断发生与否
  {
  TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx更新中断标志
  time++;
  printf("时间 =%d\r\n",time);
  LED0=!LED0;
  }
}

    
}

	  
}
  

posted on 2014-04-23 17:36  qglddh  阅读(1057)  评论(0编辑  收藏  举报

导航