zoukankan      html  css  js  c++  java
  • 在stm32平台上测试dfu的功能

    概述

    基于stm32的硬件平台,在rtthread、HAL库、DFU库(st官方)的软件支撑下,使用RT-Thread Studio 和Cubemx软件, 测试DFU功能。

    环境:

    1. 主控芯片:stm32f407VE

    2. 操作系统: rt-thread:nano、rt 4.0.3

    3. 软件库版本:1.26.xx

    创建demo工程

    rtthread主线版本

    1、根据芯片型号,创建一个基础工程;

    2、双击RT-Thread Studio 工程中的cubemx settings图标,进入软件驱动配置界面

    配置usb驱动,选择配置usb为设备模式,使能中断

    在middleware中选择usb_device,选中DFU功能

    至于时钟,串口等其他配置,根据自己的板子配置后,生成代码。

    3、配置环境

    因为RT-Thread Studio自动添加、排除代码,我们上一步选中的dfu库会被排除编译,所以每次重配置工程后,都需要手动操作下面步骤

    移除排除编译的DFU库文件

    添加头文件路径信息(这一步做过一次,重配置后不需要做了)

    到这一步,代码应该可以编译通过了,但是因为初始化代码和中断函数没有实现,所以插入usb还是没有响应。

    在usb_device.c中添加初始化函数,并添加自动初始化宏修饰,路径:cubemx/src/

    int dfu_init(void)
    {
       MX_USB_DEVICE_Init();
       return 0;
    }
    INIT_BOARD_EXPORT(dfu_init);

    添加中断函数:

    新建一个源代码文件,实现usb中断函数

    /*
    * Copyright (c) 2006-2021, RT-Thread Development Team
    *
    * SPDX-License-Identifier: Apache-2.0
    *
    * Change Logs:
    * Date           Author       Notes
    * 2021-05-30     yd       the first version
    */
    #include <rtthread.h>
    #include "board.h"
    extern PCD_HandleTypeDef hpcd_USB_OTG_FS;


    /**
     * @brief This function handles USB On The Go FS global interrupt.
     */
    void OTG_FS_IRQHandler(void)
    {
     /* USER CODE BEGIN OTG_FS_IRQn 0 */
     rt_interrupt_enter();
     /* USER CODE END OTG_FS_IRQn 0 */
     HAL_PCD_IRQHandler(&hpcd_USB_OTG_FS);
     /* USER CODE BEGIN OTG_FS_IRQn 1 */
     rt_interrupt_leave();
     /* USER CODE END OTG_FS_IRQn 1 */
    }

    至此,重新编译后,烧写到板子,连接硬件后,PC就会识别到DFU的usb设备:

    如果有感叹号,没有安装驱动,需要下载ST提供的DFU上位机软件,DfuSe v3.0.6,更新驱动就Ok,

    nano版本

    nano版本和主版本一样的操作,也是可以实现功能。

     

  • 相关阅读:
    hdu 3265 Posters(线段树+扫描线+面积并)
    hdu 3974 Assign the task(线段树)
    hdu 1540 Tunnel Warfare(线段树)
    poj 2777 Count Color(线段树(有点意思))
    用Flask+Redis维护Cookies池
    用代理抓取微信文章
    Idea-常用快捷键列表
    用Flask+Redis维护代理池
    Selsnium-Chrome-PhantomJS-爬取淘宝美食
    分析Ajax请求抓取今日头条街拍图片
  • 原文地址:https://www.cnblogs.com/yddeboke/p/14855069.html
Copyright © 2011-2022 走看看