STM32-定时器相关介绍

我采用得是STM32F10RC  参考得是STM32普中科技的给出得例子:https://www.bilibili.com/video/av30149282/?p=45(这里给出网址)

本次实验的目的,通过定时器的作用来进行LED灯的控制

1、定时器结构框图的介绍

2、通用定时器

   a、16位的自动重载寄存器 (0-65535)    通过psc(预分频器)

   b、好几个定时器的资源是完全独立的,故而可以并行使用

  c、TIMx(TIM2-TIM5)通过寄存器

   d、通用定时器的结构框图

e、一共有三个寄存器 16 位寄存器

   psc预分频器  自动重载计数器(实际上起作用的是影子寄存器,自动重载寄存器会直接更新影子存器)  计数器

f、输入捕获

 输入信号的脉宽的测量,同时也可以进行pwm的信号的测量    

3、通用定时器的配置步骤

void time_init()
{
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;	 //ÉùÃ÷Ò»¸ö½á¹¹Ìå±äÁ¿£¬ÓÃÀ´³õʼ»¯¶¨Ê±Æ÷

	NVIC_InitTypeDef NVIC_InitStructure;

	/* ¿ªÆô¶¨Ê±Æ÷3ʱÖÓ */
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
	


	TIM_ClearITPendingBit(TIM3,TIM_IT_Update);//Çå³ýTIMxµÄÖжϴý´¦Àíλ:TIM ÖжÏÔ´
	TIM_TimeBaseInitStructure.TIM_Period = 2000;//ÉèÖÃ×Ô¶¯ÖØ×°ÔؼĴæÆ÷ÖÜÆÚµÄÖµ
	TIM_TimeBaseInitStructure.TIM_Prescaler = 35999;//ÉèÖÃÓÃÀ´×÷ΪTIMxʱÖÓƵÂÊÔ¤·ÖƵֵ£¬100Khz¼ÆÊýƵÂÊ
	TIM_TimeBaseInitStructure.TIM_ClockDivision = 0; //ÉèÖÃʱÖÓ·Ö¸î:TDTS = Tck_tim
	TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//TIMÏòÉϼÆÊýģʽ
	TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);	
	TIM_Cmd(TIM3,ENABLE); //ʹÄÜ»òÕßʧÄÜTIMxÍâÉè
	/* ÉèÖÃÖжϲÎÊý£¬²¢´ò¿ªÖÐ¶Ï */
	TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE );	//ʹÄÜ»òÕßʧÄÜÖ¸¶¨µÄTIMÖжÏ
	
	TIM_ClearITPendingBit(TIM3,TIM_IT_Update);  //·ÀÖ¹Ò»´ò¿ªÖжϾͳöÏÖÖжϱêÖ¾ÖÃλµÄÇé¿ö£¬ËùÒÔÌáÇ°Çå³þµôÖжϱê־λ
	
	/* ÉèÖÃNVIC²ÎÊý */
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
	NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn; //´ò¿ªTIM3_IRQnµÄÈ«¾ÖÖжÏ
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;	//ÇÀÕ¼ÓÅÏȼ¶Îª0
	NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;  //ÏìÓ¦ÓÅÏȼ¶Îª1
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;	//ʹÄÜ
	NVIC_Init(&NVIC_InitStructure);	
}

猜你喜欢

转载自blog.csdn.net/weixin_42066185/article/details/87685257