本帖最后由 Mojo 于 2017-8-17 09:49 编辑
我用原子哥的HAL库版本的教程自己新建了一个工程模板,然后复制了原子哥的“跑马灯试验的原代码到main函数里,同时复制了LED.c里面的代码,运行之后发现SYSTICK并未运行,卡在了delay_us的while循环里,因为tnow和told都为零(SYSTICK未运行)。 经过一番研究之后发现,我在delay.c的函数systick时钟那里加上HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000U)函数之后,SYSTICK就可以正常运行了,但是我在原子哥的”跑马灯试验“原代码里并未发现使用这段函数,并且HAL_Init();里面也已经包含了这段函数,我自己建的模板里的HAL_Init()同样包含了此段函数。
想不明白为什么原子哥的原代码里没有这段函数也可以让SYSTICK工作,而我的模板和代码与原子哥的都是一样的我的就不能让SYSTICK工作。
在旺旺上找了技术支持,未果,望有知道为什么的朋友告知一下。十分感谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我并未使用OS,只是简单的跑马灯试验。你在最下面的部分代码我在原子哥的例程里看了下,完全体是这样的:
[mw_shl_code=applescript,true]#if SYSTEM_SUPPORT_OS
reload=SYSCLK;
reload*=1000000/delay_ostickspersec;
fac_ms=1000/delay_ostickspersec;
SysTick->CTRL|=SysTick_CTRL_TICKINT_Msk;
SysTick->LOAD=reload;
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; [/mw_shl_code]
原子哥的代码里只有在SYSTEM_SUPPORT_OS为1时你最后提到的代码才会被执行,但是这个跑马灯实验并未这样做啊。
一周热门 更多>