*/
/* Output Compare Timing Mode configuration: Channel1 *///输出比较模式
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = CCR1_Val; //预置值
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //对CCER中CCxP的操作
TIM_OC1Init(TIM2, &TIM_OCInitStructure);
/*对捕获/比较使能寄存器(TIMx_CCER)进行操作,置CC1E为1 */
TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_DISAble);
/* Output Compare Timing Mode configuration: Channel2 */
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = CCR2_Val;
//这个是将CCR2_Val的值送到TMI2_CCR2中
TIM_OC2Init(TIM2, &TIM_OCInitStructure);
TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Disable);
/* Output Compare Timing Mode configuration: Channel3 */
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = CCR3_Val;
TIM_OC3Init(TIM2, &TIM_OCInitStructure);
TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Disable);
/*
*/
/* Output Compare Timing Mode configuration: Channel4 */
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = CCR4_Val;
TIM_OC4Init(TIM2, &TIM_OCInitStructure);
TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Disable);
/* TIM IT enable */
TIM_ITConfig(TIM2, TIM_IT_CC1 | TIM_IT_CC2 | TIM_IT_CC3 | TIM_IT_CC4, ENABLE);
对DIER寄存器操作,中断允许配置,相关代码如下:

而DIER寄存器如下:

/* TIM2 enable counter */
TIM_Cmd(TIM2, ENABLE);
//开启定时器的运行
while (1);
}
解读:
(1) 时钟来源 CK_INT,设置的方法是让TIMx_SMCR中的SMS[2:0]=000,最后通过TIM_Cmd(TIM2, ENABLE);函数将TIMx_CR1中的CEN置1,开启定时器的运行;
(2) 接下来设置定时器的基本参数
(3) 然后是设置定时器的各个通道
(4) 最后开启定时器运行
最后,将这个例子稍加修改,令其运行在我的实验板上。
需要修改的仅是将其原来的输出从GPIOC的第6~第9脚变为GPIOD的第8~第11脚。为此,需要改的地方有:

将蓝色框内的GPIOC改为GPIOD。这个是最先写的,但实际上一开始根本没注意到这个地方,没有改成GPIOD,结果一仿真,不正确,再一细查,原来端口还要配置时钟,改过来就对了。瞧,这不验证了上面的说法“认识事物是螺旋式上升的”学了定时器,对于I/O口和时钟又有了更进一步的理解了。

将红色框内的GPIO分别改成8,9,10,11,将蓝色框内的GPIOC改为GPIOD。
最后,到stm32f10x_it.c中,修改相应的输出

参考上图红色框内,将GPIOC改为GPIOD,将6脚改为8脚,其他部分类推。
修改好后运行,所有灯亮了,看不出效果,于是又将预分频系数由4改为64,这样一来,LED开始闪烁了。
上一页 [1] [2] [3] [4]
本文关键字:单片机 程序 电脑-单片机-自动控制,电子学习 - 基础知识 - 电脑-单片机-自动控制