从站代码迁移,基于stm32f103与LAN9252

最近刚刚完成了从站代码的迁移,新的控制芯片使用了stm32f103,通信芯片使用了LAN9252,过程当中碰到了很多问题,当然在知乎寻求帮助得到了回应,所以来做个总结吧。

1.迁移到另一块单片机的代码keil报了如下错误:

Error:#268:declaration may not appear after executable statement in block.

Error:#29 execpected an expression.

这个代码我本身并未修改,但是还是报错了,百度第一个结果如下,定义的变量没有定义在最前面,编译器在执行的时候先使用了未初始化的变量。然后我又查看了百度的第二个结果,博客告诉我这是因为KEIL软件默认执行的是C89的标准,在编译选项中选中C99便不会报错了,但个人认为原因在根本上是一致的,代码本身并不够规范,变量初始化应该放在函数的起始部分,这样不管标准如何,程序都可以正常编译。

2.程序迁移编译环节通过了,没有报错,但是在调试过程中卡在了FSMC.C函数中,里面FSMC_NORSRAM_TimingTypeDef结构体的初始化需要对六个变量赋值,其中有数据建立时间、数据保存时间、地址保存时间、总线恢复时间、时钟分频因子和数据延迟时间,需要对LAN9252的数据手册查找关键数据。

3.在调试过程中,程序卡死在系统时钟初始化函数中,一开始怀疑为外部晶振问题,后来测量到板上外部晶振为25MHZ,但是芯片不支持这个频率的外部晶振,,f103芯片支持的外部晶振频率为4-16M,在sys.c中的时钟配置中,经过倍频后直接到了225Mhz,单片机直接超频卡死了,然后改用内部晶振8M,倍频最大到了64M,时钟初始化完成。

4. 在下载hex文件到flash中时,有警告信息“invalid rom table”,下载失败,后面通过烧写软件擦除清空flash后完成烧写。个人猜测flash可能经过多次烧写空间不足或是其他问题我暂时无法解释。

5. 程序在烧写以后,LAN9252的IRQ系统中断引脚被拉低后无法恢复,一直为低电平状态,无法触发下降沿,中断服务函数无法进入,从站初始化状态切换失败。经过一天的排查,我发现居然是自己的中断设置有问题,因为程序是移植过来的,中断引脚被接到了PB12上,我一直检查中断配置,中断线使能都没有发现问题,最后在调试过程中,发现自己的中断引脚和中断处理函数名居然没有对应,使用的一直是EXTI0_Handler,这样只是在中断线0的中断触发时会进入中断服务函数,而我使用的中断却映射在EXTI15_10_Handler上,由于这个中断服务函数是由硬件直接跳转的,所以我忽略了这个问题,很低级也很致命,毕竟问题没有出现在函数体内,所以排查确实靠的是灵光一现。

6.在FSMC初始化碰到的问题挺多的,这个部分主要是看stm32f103vct6的数据手册和LAN9252的数据手册,关于看手册的话确实经验不多,在这个移植过程中算是得到了锻炼,每个需要对应的引脚,不同模式下所需引脚和时序,起码看手册可以让你读懂代码。在767和103由于封装不同,所带资源的差异,当前的板子上面我只能使用一个FSMC内存片选引脚,即只能选用BANK1中的前64M内存,这里我要提到库函数中关于FSMC的bank内存定义名称有误,造成我很长时间不理解究竟选了哪块内存,最后我还是选择相信数据手册。由于没有FPGA,所以这片64M内存空间我就全部给LAN9252处理协议数据了,后面板子接上fpga的话个人觉得可以将64M空间分成两半给LAN9252和FPGA使用(FPGA用来处理IO数据),不过如何定义内存地址对应芯片仍然是一个问题。下周要是解决了回来做个补充。

可以发现,我的问题其实都是硬件问题,大部分问题通过芯片手册是可以解决的,关于ETHERCAT协议部分我并没有做修改,不过我最近也在深入了解,希望能够有所收获。这篇文章只是简单的总结,要是有疑问或者错漏欢迎交流。

~~~~~~~~~~~~~~~~分割线

后续的移植也完成了,一个FSMC接口分别连接了LAN9252芯片和FPGA,这时需要两个片选引脚来区分,但是103芯片100PIN封装只有一个FSMC片选信号,我的解决办法是重新使用了一个普通GPIO口来连接FPGA片选线,在与FPGA通信时拉低引脚电平,通信完成后置高,这样同样可以实现FSMC的通信,因为FSMC与两块芯片都是在不同时间通信的,我们只需要对FSMC所属的内存空间直接操作数据即可。

从站代码迁移,基于stm32f103与LAN9252相关推荐

  1. 基于STM32F103的步进电机S型曲线加减速算法与实现

    步进电机是将电脉冲信号转变为角位移或线位移的开环控制电机,是现代数字程序控制系统中的主要执行元件,应用极为广泛.在非超载的情况下,电机的转速.停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的 ...

  2. 机智云代码移植_IoT开发者 | 基于STM32F103的机智云宠物屋外加4路继电器开源教程...

    [ 写在前面 ] 自智云社区开辟IoT开源项目专区以来,一直有IoT开发者在贡献案例.玛莉甄选了一些具有代表性的案例分享给IoT爱好者们,本文亦如此. 若你有好的案例,想和IoT爱好者们分享,欢迎投稿 ...

  3. 基于STM32F103的步进电机(ULN2003/28BYJ-48)角度和转速控制详细资料和驱动代码

    基于STM32F103的步进电机(ULN2003/28BYJ-48)角度和转速控制详细资料和驱动代码 详细资料 1.技术参数 参数 值 参数 值 电压VDC 12 空载牵入频率 Hz ≥500 直流电 ...

  4. 软件工具将GPU代码迁移到fpga以用于AI应用

    软件工具将GPU代码迁移到fpga以用于AI应用 Software tools migrate GPU code to FPGAs for AI applications 人工智能软件初创公司Mips ...

  5. 不是报错就是崩盘,这些代码迁移问题你遇到过几个?

    当下,应用服务转向ARM云平台成为一个趋势. 但是当前绝大部分云平台应用都跑在于x86架构上,开发者需要对代码进行跨处理器平台的移植.如果纯粹依靠人工进行代码迁移,不仅分析过程投入工作量大.周期长.需 ...

  6. 用typescript完成倒计时_「干货」将数十万行CoffeeScript代码迁移到TypeScript

    作者 | David Goldstein 译者 | 王强 策划 | 小智 转发链接:https://mp.weixin.qq.com/s/TK7kWXX4hR3e-jtpVMuBnw 序言 2017 ...

  7. 为什么你需要将代码迁移到ASP.NET Core 2.0?

    随着 .NET Core 2.0 的发布,.NET 开源跨平台迎来了新的时代.开发者们可以选择使用命令行.个人喜好的文本编辑器.Visual Studio 2017 15.3 和 Visual Stu ...

  8. 自从有了这个工具,一键代码迁移不在话下

    摘要:鲲鹏开发套件Kunpeng DevKit可实现两人天快速完成代码迁移,提供全栈开发工具,集代码迁移.编译调试.性能调优.异常诊断等工具和功能于一体. 本文分享自华为云社区<[云驻共创]鲲鹏 ...

  9. 基于Stm32f103硬件iic驱动LM75A温度传感器

    这是LM75A温度传感器的概述,本文主要介绍基于Stm32f103的硬件iic驱动LM75A温度传感器. 这是我所使用的硬件电路,很简单. 对于该传感器的使用,主要是读取温度值,查看数据手册我们知道需 ...

最新文章

  1. 旷视:深度学习框架开源
  2. STM32 Option Bytes位 重置为出厂设置
  3. 程序员怎么样保证自己的程序没有BUG
  4. xUtils网络超时设置configCurrentHttpCacheExpiry和SoTimeout和connectionTimeout的区别
  5. BitmapEffect位图效果是简单的像素处理操作。它可以呈现下面几种特殊效果。
  6. jpa jql 时间范围查询_SpringBoot整合JPA案例
  7. python文本文档_Python3 File
  8. php file_get_contents 效率,php 浅析file_get_contents、curl 的效率和稳定性
  9. Web网站压力测试工具
  10. 如何使用融云地图,文件等插件--融云 Android SDK 2.8.0+ Extension 开发文档
  11. web大前端开发中一些常见的安全性问题
  12. halcon例程讲解_halcon例程学习笔记(6)
  13. 磁盘剩余空间策略_Linux性能监控常用的命令:监控磁盘使用情况-df命令
  14. 【蓝桥杯历年题】2020蓝桥杯A组省赛第二场(10.17)【含蓝桥杯官网提交地址】
  15. arduino 点灯科技 用esp8266 01s 实现wifi控制继电器开关 支持天猫精灵
  16. 使用MQTTX 建立连接报Error: Connection refused: Not authorized 未授权
  17. Java Web应用开发
  18. Android Studio连接mysql8.0.25经验贴(三天血与泪的教训)
  19. 数字信号处理:视频-15-FFT计算线性卷积
  20. excel与云mysql连接数据库_小程序读取excel表格数据,并存储到云数据库

热门文章

  1. Java基础读书笔记
  2. 稳定性大幅度提升:SOFARegistry v6 新特性介绍
  3. ODBC Excel驱动程序登陆失败
  4. 【AI视野·今日NLP 自然语言处理论文速览 第二十三期】Tue, 28 Sep 2021
  5. WEB前端学习课程推荐
  6. 人的计算与机器的计算
  7. 指数增长问题--python
  8. google vr 入门之制作简易的VR播放器(三),真牛皮
  9. Visual Studio 2010
  10. john破解系统密码(windows和kali)