上去,其实也可以把T1搞到CC1上去同时把T1搞到CC2上去,这样就有了后来的PWM输入。输出上的特色是不直接输出,而是有个OC1REF,这样可以定义高有效还是低有效,输出自己需要的有效电平。五、做实验讲了这么多你一定烦了吧,那么让我们搞点实际的吧,通过做实验来熟悉定时器,用到新知识时再在其中加以介绍。实验一:TIMER1:定时器上溢,中断中取反LED现象:LED周期2秒闪烁。主要代码如下:TIM_DeI
itTIM2TIM_TimeBaseStructureTIM_Period2000ARR的值TIM_TimeBaseStructureTIM_Prescaler0TIM_TimeBaseStructureTIM_ClockDivisio
TIM_CKD_DIV1采样分频TIM_TimeBaseStructureTIM_Cou
terModeTIM_Cou
terMode_Up向上计数模式TIM_TimeBaseI
itTIM2TIM_TimeBaseStructureTIM_PrescalerCo
figTIM20x8C9FTIM_PSCReloadMode_Immediate时钟分频系数36000,所以定时器时钟为2KTIM_ARRPreloadCo
figTIM2DISABLE禁止ARR预装载缓冲器
fTIM_ITCo
figTIM2TIM_IT_UpdateENABLETIM_CmdTIM2ENABLE开启时钟解释一下,首先得配好ARR,这是必须地。然后配置预分频,为什么我先配为0再用TIM_PrescalerCo
figTIM20x8C9FTIM_PSCReloadMode_Immediate配呢,原来PSC也有个预装载功能,却不像ARR和CRR那样有相关的位控制立即装载或更新事件装载。也就是说只能更新事件来装载。在上面函数中手工产生了一个更新事件,使PSC立刻生效。CK_DIV暂时没用到。计数模式配置为向上计数。然后在中断中做下LED取反就可以了。溢出周期怎么算?在这个实验里AHB为72M,APB1为36M,所以CK_INT为72M,36000分频变为2KARR2000,所以1秒溢出1次。相关寄存器:CR19876543210
CKD10ARPECMS10DIROPMURSUDISCEN
ARRPSC
接下来的4个实验跟输出通道有关系实验2TIMER2强置输出现象:LED常亮例子比较简单关键是配好输出通道
CCER
1514131211109876543210
CC4PCC4E
CC3PCC3E
CC2PCC2E
CC1PCC1E
CCMR(输出)
OC2CEOC2M20OC2PEOC2FECC2SOC1CEOC1M20OC1PEOC1FECC1S
将通道1配为输出,输出使能,输出极性选择好,输出模式选择好就可以了。在V100实验板上PC69接了LED,刚好对应着TIMER3重映射后的输出,注意程序里的AFIO函数。
f实验3TIMER3输出比较现象:LED2秒的周期闪烁。跟上个实验配置大致相同,只是把输出模式改为翻转功能,并且CRR要配好,当CRRCNT时翻转输出。实验4TIMER4PWM输出现象:输出4种不同占空比的PWM波,4个LED亮度不同。实验5TIMER7单脉冲方式现象:LED只闪烁一次。将上个实验加一句话TIM_SelectO
ePulseModeTIM3TIM_OPMode_Si
gle设置单脉冲模式就是这个实验。其实手册上关于此实验r