发 帖  
原厂入驻New
张飞软硬开源:基于STM32的BLDC直流无刷电机驱动器,👉戳此立抢👈
[问答] 请问STM32F072能够通过USB接口更新程序吗
775 STM32 Boot USB
分享
想问下STM32F072C是否支持USB接口更新程序?我想在运行自己的程序时,有pc的软件可以让程序进入boot区更新自己的程序.不知道ST是否有这样的更新工具和demo code?
0
2019-1-11 09:09:06   评论 分享淘帖 邀请回答
16个回答
STM32F072是支持DFU方式,ST有相关工具软件,你到www.stmcu.com.cn 搜索下DFUse,下载相关工具软件和资料。
2019-1-11 09:20:47 评论

举报

肯定可以,DFU不就是可以嘛
2019-1-11 09:36:12 评论

举报

那用什么AP软件,我的程序中要加什么代码么?
USB可以通过U盘,虚拟串口等方式来进行数据获取,升级过程和IAP一样。只不过获取升级内容的方式不一样。
2019-1-11 09:59:28 评论

举报

我已经安装了dfuse 了,也运行了STM32F0x2_USB-FS-Device_Lib V1.0.0里面的DFU demo code,使用dfuse软件可以看到DFU Demo的设备,我也找了个hex文件转换为.duf后缀的文件. 但还有个地方不是很清楚,我的设备也是一个USB HID的设备,那DFU Demo code和我的USB code 如何兼容.才可以使用dfuse 更新我的那部分代码呢?
2019-1-11 10:29:54 评论

举报

我也看了DFU,但不清楚用keil c开发如何把我的程序和DFU程序结合在一起..
我下载了STM32F0x2_USB-FS-Device_Lib V1.0.0包里面的DFU程序和binary_template。然后仿真通过KEY按下 ,进入判断0x8003000的数据就一直不是0x20000000,无法进入用户程序,一直进入DFU的程序。我在keil 里面 DFU和   binary_template的程序的option targert 空间配置都配置了。为什么会这样呢?感觉binary_template的用户程序就没有下载到0x8003000的地方。有没有使用过STM32F072C 这样处理的呀。网上看的都是STM32F1XX的,还需要设置NVIC_SetVectorTable(),但STM32F072C又没有这些。是哪里的问题呀?
STM32F0根其它系列在中断矢量表这个地方不一样

在你用户程序开始的地方先做矢量拷贝:
int main(void)
{
  uint32_t i = 0;

/* Relocate by software the vector table to the internal SRAM at 0x20000000 ***/  

  /* Copy the vector table from the Flash (mapped at the base of the application
     load address 0x08003000) to the base address of the SRAM at 0x20000000. */
  for(i = 0; i < 48; i++)
  {
    VectorTable = *(__IO uint32_t*)(APPLICATION_ADDRESS + (i<<2));
  }

  /* Enable the SYSCFG peripheral clock*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
  /* Remap SRAM at 0x00000000 */
  SYSCFG_MemoryRemapConfig(SYSCFG_MemoryRemap_SRAM);
2019-1-11 11:25:18 评论

举报

再就是APP代码的FLASH和SRAM的起始地址配置
2019-1-11 11:42:12 评论

举报

矢量拷贝的都有,因为我跑的是STM32F0x2_USB-FS-Device_Lib V1.0.0里面的DFU里面的demo code,但我现在是keil 5 重新配置了keil.布知道是否配置正确,还是说有什么地方还要配置的. 我的配置是下面图


app 空间配置那里irom size写0xd000也不行.我先是使用jlink下载DFU的usbd_dfu.uvprojx工程,然后再使用jlink在线调试binary_template.uvprojx.进入debug后,程序都会跑飞. 真不清楚是我配置问题还是我操作流程不对?DFU不是这样使用的? 这个问题困扰我好几天了...
我试了下上电时通过boot0 pin进入boot区的DFU,然后下载用户程序可以.难道那个DFU的程序是应该烧录进system 的boot区域,而不是用户区域?也不对呀,那这样我用户区代码也没有加矢量也可以从system的boot DFU下载退出后也正常呀
楼主,你的问题解决了吗?请问是如何解决的。我现在用的STM32F072,本身程序已经开发了USB CDC功能,即虚拟串口。请问如何在不影响缘由USB应用的基础上开发DFU的?
2019-1-11 12:31:37 评论

举报

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

我要提问
课程
    关闭

    站长推荐 上一条 /10 下一条

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