由于产品比较老,使用的stm32的库函数已经很老,有一些新的函数没有,打算升级到3.5.0。
经过导入个人的.h,.c文件,官方的FWLIB库文件,以及CMSIS文件。经过编译,果然有很多错误和警告,一一排除后,最后遇到了
一大堆的"Warning[Pe223]: function "__DSB" declared implicitly E:........\CMSIS\coresupport\core_cm3.h 1723 "
在网上查询说是工程配置里面没有选择正确 型号类型。可是看了下,自己明明配置好了。
经过摸索发现, 不用自己导入"core_cm3.h "文件,而在iar的工程配置里面选择好
Use CMSIS,使用IAR自己的CMSIS。这样这些警告就消失了。
还遇到了一个修改,滴答计时器的问题。
if (SysTick_Config(SystemCoreClock / 1000)) // ST3.5.0库版本
{ /* Capture error */
while (1); }
使用上面的函数替换之前的直接写寄存器的语句后,运行程序就会死机,卡死在:
HardFault_Handler
B HardFault_Handler
最后找到是因为,滴答定时器的中断服务函数,在3.5.0的库中修改为
void SysTick_Handler(void),带一个下划线,之前的函数不带。