初级会员

- 积分
- 174
- 金钱
- 174
- 注册时间
- 2018-2-24
- 在线时间
- 44 小时
|
写这篇帖子是总结一下自己学习移植程序的体会,没有太多的技术。我是将F407的程序移植到F103中,基本步骤如下:
1,在HARDWARE文件夹下添加目标程序文件夹,并在Manage Project Items 中的HARDWARE一栏中添加对应.c文件;
2,点击魔术棒,在C/C++中"Include Paths"中添加对应的.h文件路径,注意全面;
3,仔细检查和修改移植的c文件和h文件,以F103的程序为框架,以F407的程序为内容;
移植程序最大的问题是库的兼容性和程序的功能要求的矛盾。例如串口程序,F1和F4有一定的区别,直接复制过去,因为头文件定义不同,某些宏定义不同,编译就会有一大堆报错,提示”Undefined symbol XXX"或.c文件找不到路径。其实并非找不到路径,而是头文件的内容未完全替换过来,编译时系统找不到对应的库函数。所以正确的办法是,从第一个错误入手,找到未定义的变量所在位置,把.h的内容完全替换掉。
在替换程序的时候,需要留意有关功能的全部代码。如果忽略了程序中的特殊语句,可能导致移植后的程序没有语法错误,但是实现不了功能。
说一下感想:库函数容易入门,买模块用库函数移植也比较方便。但是在程序兼容性方面会存在很多莫名其妙的问题,在这上面花的时间可能多达几个月。要真正学会单片机,还是应该自己写寄存器,并弄懂模块的工作原理。只有自己用寄存器把功能实现了,才能体会得更深,该学的都懂了。只是拿现成的库移植一下,费力还没学到东西。希望接下来自己朝这个方向努力吧。
|
|