OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4209|回复: 4

关于库函数程序移植的小总结

[复制链接]

11

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2018-2-24
在线时间
44 小时
发表于 2021-5-29 14:14:20 | 显示全部楼层 |阅读模式
    写这篇帖子是总结一下自己学习移植程序的体会,没有太多的技术。我是将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的内容完全替换掉。
     在替换程序的时候,需要留意有关功能的全部代码。如果忽略了程序中的特殊语句,可能导致移植后的程序没有语法错误,但是实现不了功能。
     说一下感想:库函数容易入门,买模块用库函数移植也比较方便。但是在程序兼容性方面会存在很多莫名其妙的问题,在这上面花的时间可能多达几个月。要真正学会单片机,还是应该自己写寄存器,并弄懂模块的工作原理。只有自己用寄存器把功能实现了,才能体会得更深,该学的都懂了。只是拿现成的库移植一下,费力还没学到东西。希望接下来自己朝这个方向努力吧。


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

480

帖子

0

精华

高级会员

Rank: 4

积分
780
金钱
780
注册时间
2021-4-15
在线时间
305 小时
发表于 2021-5-29 14:37:52 | 显示全部楼层
移植驱动?F4到F1还是很好移植的 在IO口配置等方面有一些区别 其他大体移植 多数代码通用
日常敲键--头秃一片
回复 支持 反对

使用道具 举报

11

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2018-2-24
在线时间
44 小时
 楼主| 发表于 2021-5-29 15:33:10 | 显示全部楼层
对的,之前移植遇到困难,是因为我把HAL库往固件库里放,一直有问题。同样的库,移植不太难。然后感谢原子的技术售后,一下就点出了我纠结很久的问题。
回复 支持 反对

使用道具 举报

2

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
234
金钱
234
注册时间
2021-5-21
在线时间
28 小时
发表于 2021-5-29 21:56:33 | 显示全部楼层
谢谢大佬的分享
回复 支持 反对

使用道具 举报

11

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2018-2-24
在线时间
44 小时
 楼主| 发表于 2021-5-31 17:17:22 | 显示全部楼层

我也是初学者,别叫我大佬。成为大佬是我的目标,哈哈。发帖子是代替笔记本,也希望对其它初学的小伙伴有帮助。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-23 00:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表