关于F4的定时器的问题,比较诡异

2019-07-20 23:39发布

本帖最后由 charly 于 2016-2-28 21:33 编辑

我现在用f4的定时器3定时1s然后串口输出一行字符,现在预分频值和重装载值都设置对了,但是串口输出的的时间间隔明显不是1s,基本上是5s左右。
然后看数据手册定时器3的时钟的是APB1,分频值设置的是0,那TIMER3的时钟就是84M的。之后我进硬件调试,调试用的JTLIN的sw模式调试的。进systemInit函数中,然后再进其中的SetSysClock函数中观察是否是时钟配置的问题,其中RCC->CR |= ((uint32_t)RCC_CR_HSEON)启动外部高速时钟之后,
执行HSEStatus = RCC->CR & RCC_CR_HSERDY;表示HSEStatus代表高速时钟就绪标志位,发现这个标志位一直是0,导致不能进下面的分频设置代码中,RCC->CR寄存器的值是0x00017883,之后我就调HSE_STARTUP_TIMEOUT这个延迟时间,默认值是0x0500,我调到0x5000,RCC->CR寄存器的值还是是0x00017883。之后我又把
HSE_VALUE设置成40 000 000,以前设置的是8 000 000,该值还是一样。做这些操作的时候,我的外设串口,spi,dma,io口都能正常工作。这我就不知道是怎么回事了。现在想问我如果在systeminit函数中分频设置HCLK,HCLK1,HCLK2都没成功,是不是串口之类的外设也会工作不正常啊,如果外部时钟不正常,那f4会自动切换的内部高速时钟吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。