
我在官方AN2953《如何从STM32F10xxx固件库V2.0.3升级为STM32F10xxx标准外设库V3.0.0》的库升级方案中,按照自动脚本升级步骤走了一遍之后,经过编译改错之后,发现仍有一个问题不好解决。细节如下: 这是我想实现的功能:(该函数是基于库版本2.0.3)1 R' d" E1 l; Q5 c //******************************************************************************* // 函数名称 : void SysTick_Config(void) // 功能描述 : 初始化节拍定时器,每隔10ms重装一次,使能节拍定时器中断 // //% K) h2 W |! h // 输入 : None // 输出 : None // 返回 : None //****************************************************************************** void SysTick_Configuration(SYSTICK_TIMER_S *pstSysTickTimer, u16 uiSysTickTimer) { // 时间结构体初始化 ST_MEMZERO(pstSysTickTimer, sizeof(SYSTICK_TIMER_S));% d0 l) Q7 K+ {: |5 P& @ pstSysTickTimer->uiSysTickTimer = uiSysTickTimer; pstSysTickTimer->us100msTickNum = 1000 / uiSysTickTimer; pstSysTickTimer->us200msTickNum = 2000 / uiSysTickTimer;5 [/ a$ c/ ]4 |. I+ f7 b pstSysTickTimer->us500msTickNum = 5000 / uiSysTickTimer;$ l9 _% _0 O( ^. c4 C pstSysTickTimer->us1000msTickNum = 10000 / uiSysTickTimer; //失能SysTick定时器& K# _. @' X _ SysTick_CounterCmd(SysTick_Counter_Disable);$ S( U; x: g3 T4 M; z5 u //失能SysTick中断 SysTick_ITConfig(DISABLE);3 y, |+ r3 ~( R2 {& H2 j, \ //设置SysTick时钟源 SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //设置SysTick重载值 SysTick_SetReload(900 * pstSysTickTimer->uiSysTickTimer);# _" f& U" C" Y% Y7 n& I- |2 { //开SysTick中断, Z8 R6 Z8 d) D' d4 h SysTick_ITConfig(ENABLE);+ A3 E3 v0 v+ W4 n" |$ J0 n8 A% d % N0 n* ]' c( [$ I4 k+ H //开SysTick定时器 SysTick_CounterCmd(SysTick_Counter_Enable); * r$ R3 T0 k m, j( P }4 Z/ k5 F$ s" I% R5 [ 我在基于库V3.5.0的工程模板中把APP里面的应用程序复制,并修改stm32f10x_conf.h头文件,编译后提示错误: ..\Output\Template.axf: Error: L6218E: Undefined symbol SysTick_CounterCmd (referred from st_cor_hw_conf.o).6 D+ Y( Y" l7 H5 I# u. d ..\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.: ]$ o! w7 A' u- k2 r% [ ..\Output\Template.axf: Finished: 1 information, 0 warning and 3 error messages. Target not created 3 t& `7 |1 K( J6 x 后来查官方资料后发现:6 V0 ]6 I# i; j) S( z; \, c: y" m ( l$ j a* Y- _ SysTick 在标准外设库中移除了SysTick的驱动,因此用户必须调用CMSIS定义的函数。 CMSIS只提供了一个SysTick设置的函数,替代了STM32原有SysTick驱动的全部函数。6 W4 q& [+ [$ b5 N6 p4 W v. F5 F SysTick_Config(uint32_t ticks); 该函数设置了自动重载入计数器(LOAD)的值,SysTick IRQ的优先级,复位了计数器(VAL)的值,开始计数并打开SysTick IRQ中断。SysTick时钟默认使用系统时钟。 下面的例程为使用固件库V2.0.3进行SysTick设置: ! z U6 i2 l+ q5 u /* Select the HCLK Clock as SysTick clock source (72MHz) */ SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); /* SysTick end of count event each 1ms with input clock equal to 7 I! |, ?3 k: v( F0 [0 a6 v# j; Z 72MHz (HCLK) */ SysTick_SetReload(72000); 0 G7 L) B4 f+ A _ /* Enable SysTick interrupt */ / V( G% E0 Y) v SysTick_ITConfig(ENABLE); 下面的例程为使用标准外设库V3.0.0进行SysTick设置: , y( l5 B* |% _5 k5 ]6 K# D /* Setup SysTick Timer for 1 msec interrupts */ if (SysTick_Config(SystemFrequency / 1000)) /* SystemFrequency is defined in “system_stm32f10x.h” and equal to HCLK frequency */ 0 W. e( t) Q, E( J" m { /* Capture error */ % b7 n- J3 x6 k# J6 i 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)
现在已完成了库升级,多谢楼上那位!