一.出错点:
-
报错:undefined symbol assert_param(referred from misc.o). 原因是在Keil的魔术棒按钮C/C++的prepeocessor symbols的Define空格中没有填入USE_STDPERIPH_DRIVER。在使用DAP烧录程序之前,要检查一下魔术棒按键下相关的数值和选项。

-
编译器出现几十个error和warning,看了一遍错误的问题主要是undefine和 declared implicitly.发现问题是文件里没有包括用到的其他文件的.h文件。
-
declaration may not appear after executable statement in block.定义的变量或函数不要放到大括号中间或者程序最后,要放到大括号附近。
二.总结反思:
-
新建工程project包括:
(1)STRATUP:startup_stm32f10x_hd.s汇编编写的启动文件,设置堆栈指针,初始化向量表等
(2)FWLIB:内核之外的外设寄存器映射.C文件
(3)CMSIS:内核里的外设寄存器映射文件(core_cm3.c),系统时钟配置文件(system_stm32f10x.c)
(4)user: bsp类文件,main.c,中断服务函数的C文件
(5)doc: 说明文档
以上文件大多是.c文件,为了让软件找到对应的.h文件,要通过魔术棒案键下的C/C++的include paths来添加路径。包括inc(fwlib),user,cmsis。
-
提高程序可读性和可移植性
将硬件相关的进行封装。在.h文件内进行define和typedefine,函数声明
为增强可读性和可移植性,可在开头进行再一次define,方便修改和阅读