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

关于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 等库函数。
现在已完成了库升级,多谢楼上那位!

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

官网相关资源

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