sys文件中delay函数的问题

2019-07-20 13:11发布

sys文件的的延时函数是用内核的滴答时钟做的。
我最近想把这个函数用在stm32f413开发板上,这个板子没有接外部高速时钟(HSE)。所以用标准库函数配置后,会使用内部高速时钟(HSI)作为系统时钟。
HSI的频率是16MHz,系统的时钟也就为16MHz。然后我套用sys文件中的关于delay配置的函数,基本什么都没改,这时 滴答时钟的频率=系统频率/8=2MHz,
然后我在主函数初始化delay函数如下
delay_init(16);

可是我在使用延时时,比如
delay_ms(1000);//延时1s

结果根本没有1s就结束了,
以上是我的理解,不知道问题出在哪儿。求助



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
正点原子
1楼-- · 2019-07-20 19:10
 精彩回答 2  元偷偷看……
还是看不穿
2楼-- · 2019-07-20 20:02
忘了说,如果按照正常的配置,STM32F413的主频可达100MHz
还是看不穿
3楼-- · 2019-07-21 01:39
 精彩回答 2  元偷偷看……
还是看不穿
4楼-- · 2019-07-21 06:42
正点原子 发表于 2017-7-23 00:33
检查时钟配置i

确实是时钟的配置问题。我在main()函数的初始位置中增加下面语句
[mw_shl_code=applescript,true]RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI );[/mw_shl_code]

这条语句的意思设置HSI为系统时钟源。这样就可以正常使用延时了,然后我用示波器大概测了一下 LED闪烁的周期大概为 1.96s   也差不多。
不过我看在系统初始化函数中
[mw_shl_code=applescript,true]void SystemInit(void)[/mw_shl_code]

也是把HSI做为系统时钟源。不知道怎么就不行的


还是看不穿
5楼-- · 2019-07-21 07:19
还是看不穿 发表于 2017-7-24 11:46
确实是时钟的配置问题。我在main()函数的初始位置中增加下面语句
[mw_shl_code=applescript,true]RCC_ ...

[mw_shl_code=applescript,true]void SystemInit(void)[/mw_shl_code]
这里面的有两句是配置为HSI的  
[mw_shl_code=applescript,true]  /* Reset the RCC clock configuration to the default reset state ------------*/
  /* Set HSION bit */
  RCC->CR |= (uint32_t)0x00000001;

  /* Reset CFGR register */
  RCC->CFGR = 0x00000000;[/mw_shl_code]

这个函数后面的配置,都是对相应寄存器进行重置 然后在后面调用下面这个函数
[mw_shl_code=applescript,true] /* Configure the System clock source, PLL Multiplier and Divider factors,
     AHB/APBx prescalers and Flash settings ----------------------------------*/
  SetSysClock();[/mw_shl_code]

正真完成时钟的配置,但是这个函数是针对HSE配置的,我的板子
还是看不穿
6楼-- · 2019-07-21 12:01
 精彩回答 2  元偷偷看……

一周热门 更多>