你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于STM32F10x库版本升级(2.0.3升级到3.5.0)

[复制链接]
gehaiyangtai 发布时间:2013-8-9 11:45
我在官方AN2953《如何从STM32F10xxx固件库V2.0.3升级为STM32F10xxx标准外设库V3.0.0》的库升级方案中,按照自动脚本升级步骤走了一遍之后,经过编译改错之后,发现仍有一个问题不好解决。细节如下:
  这是我想实现的功能:(该函数是基于库版本2.0.3
//*******************************************************************************
// 函数名称    : void SysTick_Config(void)
// 功能描述    : 初始化节拍定时器,每隔10ms重装一次,使能节拍定时器中断
//               
//
// 输入        : None
// 输出        : None
// 返回        : None
//******************************************************************************
void SysTick_Configuration(SYSTICK_TIMER_S *pstSysTickTimer, u16 uiSysTickTimer)
{
    // 时间结构体初始化
    ST_MEMZERO(pstSysTickTimer, sizeof(SYSTICK_TIMER_S));
    pstSysTickTimer->uiSysTickTimer = uiSysTickTimer;
    pstSysTickTimer->us100msTickNum = 1000 / uiSysTickTimer;
    pstSysTickTimer->us200msTickNum = 2000 / uiSysTickTimer;
    pstSysTickTimer->us500msTickNum = 5000 / uiSysTickTimer;
    pstSysTickTimer->us1000msTickNum = 10000 / uiSysTickTimer;
   
    //失能SysTick定时器
    SysTick_CounterCmd(SysTick_Counter_Disable);
 
    //失能SysTick中断
    SysTick_ITConfig(DISABLE);
 
    //设置SysTick时钟源
    SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
 
    //设置SysTick重载值
    SysTick_SetReload(900 * pstSysTickTimer->uiSysTickTimer);
 
    //SysTick中断
    SysTick_ITConfig(ENABLE);
   
    //SysTick定时器
    SysTick_CounterCmd(SysTick_Counter_Enable);       
                                                                           
}
我在基于库V3.5.0的工程模板中把APP里面的应用程序复制,并修改stm32f10x_conf.h头文件,编译后提示错误:
..\Output\Template.axf: Error: L6218E: Undefined symbol SysTick_CounterCmd (referred from st_cor_hw_conf.o).
..\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.
Target not created
 
 
后来查官方资料后发现:
 
SysTick
在标准外设库中移除了SysTick的驱动,因此用户必须调用CMSIS定义的函数。
CMSIS只提供了一个SysTick设置的函数,替代了STM32原有SysTick驱动的全部函数。
SysTick_Config(uint32_t ticks);
该函数设置了自动重载入计数器(LOAD)的值,SysTick IRQ的优先级,复位了计数器(VAL)的值,开始计数并打开SysTick IRQ中断。SysTick时钟默认使用系统时钟。
下面的例程为使用固件库V2.0.3进行SysTick设置:
/* 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
72MHz (HCLK) */
SysTick_SetReload(72000);
/* Enable SysTick interrupt */
SysTick_ITConfig(ENABLE);
下面的例程为使用标准外设库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 */
              {
/* Capture error */
while (1);
}

STM32固件库2.03与3.0版本的比较中文版.pdf

下载

1.17 MB, 下载次数: 110

收藏 评论4 发布时间:2013-8-9 11:45

举报

4个回答
废鱼 回答时间:2013-8-9 15:20:32

RE:关于STM32F10x库版本升级(2.0.3升级到3.5.0)

应该是你用的库没有调用包含SysTick_ITConfig的头文件,你引用上就好了。
gehaiyangtai 回答时间:2013-8-10 09:41:35

RE:关于STM32F10x库版本升级(2.0.3升级到3.5.0)

新库3.5.0 已将stm32f10x_systick.h头文件移除,精简在core_cm3.h文件中,并已经移除SysTick_ITConfig等定义,只提供了一个SysTick设置的函数:SysTick_Config(uint32_t ticks);
请问还怎么办?
zykzyk-93033 回答时间:2013-8-10 10:32:54

RE:关于STM32F10x库版本升级(2.0.3升级到3.5.0)

设置好就可以了吧,可以先看一个历程。
gehaiyangtai 回答时间:2013-8-13 14:56:28

回复:关于STM32F10x库版本升级(2.0.3升级到3.5.0)

多谢了!我现在已经解决这个问题,用SysTick_Config(900 * pstSysTickTimer->uiSysTickTimer); 替代了 SysTick_Configuration()全部的使能设置部分之后就可以了,原因是标准外设库V3.5.0用SysTick_config()替换了诸如SysTick_CounterCmd 、SysTick_ITConfig 、SysTick_SetReload 等库函数。
现在已完成了库升级,多谢楼上那位!

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版