stm32L4xx 通过USB DFU功能升级固件

本文介绍了如何利用STM32L4xx的USB DFU功能进行固件升级。在没有SWD下载模式的情况下,通过检测USB连接决定运行用户程序还是进入Bootloader。详细步骤包括Bootloader的USB DFU代码修改、用户程序起始地址配置以及固件升级过程。最后,通过DfuSe工具验证升级成功。
摘要由CSDN通过智能技术生成

stm32L4xx 通过USB DFU功能升级固件

背景

因为项目需求,用户不方便用SWD模式下载程序,而且本设备也留有USB,因此考虑用USB DFU模式进行固件升级。
设备上使用的单片机是stm32l476,ST官方在单片机内部bootloader已经支持通过USB方式升级固件,但是需要通过修改MODE来切换是升级固件还是运行用户程序,设备本身也没有留修改mode的按键等,因此考虑修改使用USB DFU实现的IAP功能。

设计思路

设备上电后,5秒内没有检测到USB,那么进入用户程序区,如果检测到USB插入,进入Bootloader,等待下载固件。

实现步骤
  1. USB DFU Bootloader代码
    基本上完全使用了STM32Cube库中的例子,只是在它的基础上稍微做了修好,加入了usb是否插入的状态读取。
/**
  * @brief  SetupStage callback.
  * @param  hpcd: PCD handle
  * @retval None
  */
void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd)
{
    /*监测到USB插入后,亮绿灯,并且把标志位置1*/
    BSP_LED_On(LED_GREEN);
    usb_dfu_is_activated = 1;
    USBD_LL_SetupStage(hpcd->pData, (uint8_t *)hpcd->Setup);
}

/*main 函数*/
int main(void)
{


  /* Initialize the HAL Library */
  HAL_Init();

  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值