调这个定时器调了一晚了,到现在还是没弄好。发现它的预分频无效?有这回事吗?
代码:
void TimerInit(unsigned short pTime)
{
volatile unsigned long vTick;
vTick = ((gvSystemClk/128) * ((unsigned long)pTime) )/ 32768;
CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE);
TIM2_DeInit();
TIM2_TimeBaseInit(TIM2_Prescaler_128, TIM2_CounterMode_Up, vTick);
TIM2->CR1 |= 0x08; //一次计数
TIM2_Cmd(ENABLE); //开启时钟
}
unsigned short TimerRead(void)
{
if(TIM2->CR1 & 0x01) //如果当前还是使能的,返回1,否则返回0
{
return 1;
}
else
{
return 0;
}
}
main()
{
.....其它代码
while(1)
{
vI = 128;
while(vI--)
{
TimerInit(32768);
while(TimerRead())
{
}
}
PortSet(Pin_State); //引脚置位 --自己封装的函数
vI = 128;
while(vI--)
{
TimerInit(32768);
while(TimerRead())
{
}
}
PortClr(Pin_State); //引脚复位
}
不管我预分频值设到多少,就是一样的速度。火死人了,莫非是有我没注意到的地方?
请高手指点!~ |