原来使用EWSTM8运行正常的工程,使用的是V1.6.1的STD库。做了一块新板子,把整个工程移植到EWSTM8 3.10,发现LSE不能运行,为了测试,写了以下测试代码,使用 HSI作为通用定时器2的时钟,代码见下。
/*******************************************************************************
* @brief Initialize Rcc
* @param None
* @retval None
*******************************************************************************/
void Init_Rcc(void)
{
/* Select HSI as system clock source */
CLK_SYSCLKSourceSwitchCmd(ENABLE);
CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI);
/* 不分频,系统时钟为16MHz HSI */
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSI)
{}
}
/******************************************************************************
name: Tim2_Init
introduce: sysTick
description: 使用系统时钟
parameter: none
return: none
******************************************************************************/
void Init_TIM2(void)
{
TIM2_DeInit();
CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE); //将主时钟信号送给定时器2(L系列单片机必需)
//TIM2_TimeBaseInit(TIM2_Prescaler_64, TIM2_CounterMode_Up, 250);
TIM2_TimeBaseInit(TIM2_Prescaler_1, TIM2_CounterMode_Up, 100);
TIM2_SetCounter(50);
TIM2_ARRPreloadConfig(ENABLE);
TIM2_ITConfig(TIM2_IT_Update, ENABLE);
TIM2_Cmd(ENABLE);
}
int main(void)
{
Init_Rcc();
Init_TIM2();
while(1);
}
代码初始化正常,但是定时器就是不工作,怀疑代码有误。打开TIMER2的寄存器对照,初始化都正常,但就是COUNT不自增,定时器不启动。把工程下到之前的板子,也不行。考虑到工程是从2.20升级而来,我直接新建了工程,使用上面的测试代码,也不行。原因还不知。因为我用3.10也成功开发过项目,而且库也是同一版本。
最后先换回EWSTM8 2.20版本,定时器可以正常工作。此处先记录。
作者在使用EWSTM8从V1.6.1 STD库升级到3.10后,遇到LSE无法运行的问题。通过测试代码尝试使用HSI作为定时器2的时钟源,发现尽管初始化正常,但定时器不工作,COUNT不自增。在旧板子上同样无法运行,即使创建新工程亦然。最终,回退到EWSTM82.20版本解决了问题。
3426

被折叠的 条评论
为什么被折叠?



