
我在官方AN2953《如何从STM32F10xxx固件库V2.0.3升级为STM32F10xxx标准外设库V3.0.0》的库升级方案中,按照自动脚本升级步骤走了一遍之后,经过编译改错之后,发现仍有一个问题不好解决。细节如下:, P, l* P& I( [; M 这是我想实现的功能:(该函数是基于库版本2.0.3)$ r# C, f2 O6 ~- B. k" o1 q //******************************************************************************* // 函数名称 : void SysTick_Config(void)% c' R+ V4 w: N. q `; A2 n // 功能描述 : 初始化节拍定时器,每隔10ms重装一次,使能节拍定时器中断* }* z( A `- O' @) R$ } // 1 q4 Q5 c7 s# i/ T: Q! r* N // // 输入 : None // 输出 : None3 D6 R m. W& `9 g1 r7 L& {3 Y" v // 返回 : None //******************************************************************************* y# a9 u% u1 S5 S& O6 Z void SysTick_Configuration(SYSTICK_TIMER_S *pstSysTickTimer, u16 uiSysTickTimer) { // 时间结构体初始化# B& I3 X5 j4 {& M$ I! u5 V6 a ST_MEMZERO(pstSysTickTimer, sizeof(SYSTICK_TIMER_S));* \$ c8 T8 _0 ?3 H& H8 V pstSysTickTimer->uiSysTickTimer = uiSysTickTimer;2 O: W5 [ N; z- d& o1 {/ A pstSysTickTimer->us100msTickNum = 1000 / uiSysTickTimer; pstSysTickTimer->us200msTickNum = 2000 / uiSysTickTimer;! {; n5 E8 y6 ~* U8 q pstSysTickTimer->us500msTickNum = 5000 / uiSysTickTimer;! z" y3 D1 j o e- A pstSysTickTimer->us1000msTickNum = 10000 / uiSysTickTimer;) x7 g6 P! T, X+ |- e % P% v7 m0 i: O W4 e //失能SysTick定时器1 x: e7 i2 n0 o' s' t SysTick_CounterCmd(SysTick_Counter_Disable);: o, N) K# ~/ M6 l- | , H0 F5 U! ~/ V; x1 E, |4 W5 V //失能SysTick中断 SysTick_ITConfig(DISABLE);( _$ D: A! G8 C: `, z7 V5 ? //设置SysTick时钟源 y. z. t, A8 c( P SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); 8 e, l7 Q7 O* G# e //设置SysTick重载值" s/ q( i; C* r# |% f# H- A ~ SysTick_SetReload(900 * pstSysTickTimer->uiSysTickTimer); //开SysTick中断 SysTick_ITConfig(ENABLE);- M+ T3 l& g# a' N i1 O //开SysTick定时器 SysTick_CounterCmd(SysTick_Counter_Enable); ' f, G6 o% Q* C7 W - d1 G* \" `; Q1 w2 \4 ~& Z6 U6 r( S/ u } 我在基于库V3.5.0的工程模板中把APP里面的应用程序复制,并修改stm32f10x_conf.h头文件,编译后提示错误:; D+ a+ F/ ?* q B ..\Output\Template.axf: Error: L6218E: Undefined symbol SysTick_CounterCmd (referred from st_cor_hw_conf.o).- }# r, r* q0 S ..\Output\Template.axf: Error: L6218E: Undefined symbol SysTick_ITConfig (referred from st_cor_hw_conf.o). ..\Output\Template.axf: Error: L6218E: Undefined symbol SysTick_SetReload (referred from st_cor_hw_conf.o). ..\Output\Template.axf: Not enough information to list image symbols. ..\Output\Template.axf: Finished: 1 information, 0 warning and 3 error messages.& R* X7 `; B' l. B0 u9 e Target not created $ o5 `+ u5 h, h1 b( u0 u# N ' w% }7 N w* i! a4 _+ s; l3 K1 j 后来查官方资料后发现:/ h; t8 N3 z. G & ]4 E' B: {" {/ _1 \! } SysTick 在标准外设库中移除了SysTick的驱动,因此用户必须调用CMSIS定义的函数。! R6 F6 i) D; T" {: Q" F8 m4 Z CMSIS只提供了一个SysTick设置的函数,替代了STM32原有SysTick驱动的全部函数。 SysTick_Config(uint32_t ticks); 该函数设置了自动重载入计数器(LOAD)的值,SysTick IRQ的优先级,复位了计数器(VAL)的值,开始计数并打开SysTick IRQ中断。SysTick时钟默认使用系统时钟。8 J( u1 C4 B% f9 C6 m 下面的例程为使用固件库V2.0.3进行SysTick设置: # ]; E) \2 N) D% ?5 g" e /* Select the HCLK Clock as SysTick clock source (72MHz) */ % S8 a" l+ a1 _' ^2 O SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); 9 \: F2 i3 B4 k /* SysTick end of count event each 1ms with input clock equal to - Z( @0 ~; h7 A5 n 72MHz (HCLK) */ SysTick_SetReload(72000); /* Enable SysTick interrupt */ ( x' G* ]: o4 E: E; t) h SysTick_ITConfig(ENABLE); 1 B1 Q: s- x g. C 下面的例程为使用标准外设库V3.0.0进行SysTick设置: /* Setup SysTick Timer for 1 msec interrupts */ if (SysTick_Config(SystemFrequency / 1000)) /* SystemFrequency is defined in “system_stm32f10x.h” and equal to HCLK frequency */ 6 r u* j7 r4 Z; B9 ] | {* C& e8 h( w6 g/ P( X) L /* Capture error */ ) W: |/ ~1 d! H8 `, D8 I7 Z' D while (1); } |
STM32åºä»¶åº2.03ä¸3.0çæ¬çæ¯è¾ä¸æç.pdf
下载1.17 MB, 下载次数: 110
RE:关于STM32F10x库版本升级(2.0.3升级到3.5.0)
RE:关于STM32F10x库版本升级(2.0.3升级到3.5.0)
请问还怎么办?
RE:关于STM32F10x库版本升级(2.0.3升级到3.5.0)
回复:关于STM32F10x库版本升级(2.0.3升级到3.5.0)
现在已完成了库升级,多谢楼上那位!