一、准备工作
1、找到官方IAP参考例程,是基于STM32F030的例程;
2、准备两块电路板,一块用于CAN-UART透传,另一块作为测试目标板。
 
二、CAN-UART透传
1、CAN波特率设为125K,UART波特率设为115200
2、CAN节点ID设为0x000
三、测试目标板BootLoader程序
1、基于官方例程进行修改
2、官方例程采用的是USART通信,通过STM32CubeMX配置好CAN后,修改几个函数,可实现CAN通信;
3、关于FLASH_PAGE_SIZE宏定义,由于采用是stm32f072xb.h,因此在stm32fxx_hal_flash_ex.h中定义的是0x800U,需要修改为0x400U
4、根据个人需求将逻辑进行了修改,通电后运行Bootloader程序,5s内没有收到升级指令,跳转到用户程序;
5、测试工具使用SecureCRT,发送*.bin文件的时候采用Ymodem协议;
    6、对工程不优化,会占用16K的空间,因此Bootloader的空间预留20K,即用户程序起始地址改为0x08005000。
四、测试目标板用户程序
    1、在程序最开始的地方需要对中断向量表重定义,由于F0xx没有SCB->VTOR这个寄存器,需要把中断向量表从Flash复制到SRAM中;
    2、官方例程采用的是*((uint32_t*)(0x20000000 + (i << 2)))=*(__IO uint32_t*)(0x08005000 + (i<<2));改为VectorTable[i] = *(__IO uint32_t*)(0x08005000 + (i<<2));此处不作修改的话,会将全局已初始化的变量值给改掉(这个问题花了我一天来查),这两句话的作用是一样的,应该都可以用,但要注意第3条;
    3、将IRAM1的Start改为0x200000C0,Size改为0x3F40,通过.s文件可以看到共有48个中断向量,占用192字节,因此对全局变量初始化值进行偏移,通过对比修改前后的map文件看到变化;
    4、IROM1的Start改为0x8005000,Size改为0xB000。

STM32F072C8T6调试IAP(CAN)记录相关推荐

  1. Android RIL 调试分析全记录 No APN found for carrier

    Android RIL 调试分析全记录 以前没有调试过RIL的东西, 从零开始, 花了两周时间,终于拨号成功,这里发表出来与大家共享经验,少走弯路. 上一篇文章是一个成功拨号的Android RIL ...

  2. php调试和日志记录函数

    网站程序开发过程经常需要调试,发布阶段也需要记录运行日志,方便发现问题和还原事件.这就要求有调试和日志记录功能. 下面分别写了用于调试的函数和用于记录错误的函数. 使用方法很简单,且自动根据日期生成日 ...

  3. STM32F103 IAP编程调试记录

    程序结构:IAP+APP 现象:在调试APP部分的程序时,发现不受控制,跑的不是当前的代码. 原因:进入APP代码之前,首先是执行IAP代码,在IAP中,通过读外部SPI FLASH更新了APP程序区 ...

  4. F7飞控项目调试过程的记录 系列文章第一部分

    主控STM32F777NIHx BL电调(J-H-20A) SBUS接收机.福特8遥控器 STM32HAL库 设计/调试记录文档 捕捉下APM飞控输出的PWM波形,可以看出PWM方波的频率为489.2 ...

  5. Android RIL 调试分析全记录

    以前没有调试过RIL的东西, 从零开始, 花了两周时间,终于拨号成功,这里发表出来与大家共享经验,少走弯路. 上一篇文章是一个成功拨号的Android RIL log, 这里主要结合上一篇log进行分 ...

  6. 高通相机调试命令和记录

    开启相机log adb root adb shell setprop persist.vendor.camera.logInfoMask 0x1C080 adb shell setprop persi ...

  7. STM32F030C8T6 IAP 开发记录

    昨天发出了单片机IAP的上位机程序,由于没有实际测试IAP APP的运行情况,所以便没有发出来IAP程序. 上位机相关的帖子: http://blog.csdn.net/sunhaobo1996/ar ...

  8. mmdetection3d项目代码(调试及问答记录)

    记录交流群内见到的问题及解决办法,有些并未亲自验证,暂时保存下来,为以后解决类似问题提供参考. Q1: 更改可视化标签字体的大小 A1: 下边的是mmdetection对应的修改方法,mmdetect ...

  9. Cognex VisionPro调试异常信息记录

    1.(Cognex VisionPro)TargetInvocationException:调用目标发生异常. 发生场景:使用C#编写界面程序,调用vpp文件的方式使用,vpp文件的输入图像使用图像数 ...

  10. 0.96寸ST7735的LCD 4线SPI调试小坑记录

    今天把0.96寸的ST7735的LCD从新唐的M030TD2AE移到STM32F103C8T6上用,驱动文件直接复制过来,屏幕死活显示不了. 搞了好久,最后能显示了,但还是不明白为什么,想不通,记录一 ...

最新文章

  1. ubuntu下连接mysql出现Access denied for user ‘rose‘@‘localhost‘ (using password: NO)的解决方法
  2. 机械硬盘提示操作无法完成,因为磁盘管理控制台视图不是最新状态要如何办啊...
  3. p字间距 html段落内文字设置字间距间隔
  4. 第八十一期:Java性能优化:35个小细节,提升你的Java代码运行效率
  5. python3中的zip_Python3实现将文件归档到zip文件及从zip文件中读取数据的方法
  6. OpenSolaris系统管理
  7. LVS详解(六)——LVS DR模式实战
  8. yacc语法学习-part1
  9. 基于自动编码器特征抽取的分类实战
  10. 王道训练营Day1作业
  11. 制图折断线_CAD制图规范及技巧总结大全
  12. 如何高效学习,斯科特·扬(全文)
  13. blender动画制作
  14. 财管U04 资本成本 教材解读
  15. 青软新获「2022年度山东省软件和信息技术服务业综合竞争力百强企业」等三项荣誉!
  16. PhoneGap移动开发框架2
  17. 配置类不加@Configuration竟然也可以注册bean
  18. NiFi Registry元数据详细介绍
  19. Python-爬取淘宝搜索结果
  20. 回归分析预测技术介绍

热门文章

  1. 计算机科学与技术实训内容,计算机科学与技术专业实训大纲.doc
  2. 信息学奥赛一本通1001-1005
  3. LeCun列传:曾因AI理论遭人唾弃,如今终成一代大神
  4. Web渗透测试实战——(2.1)Metasploit 6.0初步
  5. win7电脑误删鼠标键盘驱动_快速恢复win7系统因驱动冲突导致鼠标键盘用不了的详细步骤...
  6. SnowNLP——SnowNLP是什么及SnowNLP的使用示例
  7. 基于MATLAB的数字水印技术实现
  8. yuv444转yuv422 matlab,最简单解释 YUV444,YUV422,YUV420中的4,2,0
  9. hg6201m怎么设置虚拟服务器,移动光猫HG6201M定期重启设置
  10. 3.FXBLUE跟单原理