打印
[STM32F1]

STM32F103 usb(VCP)加上IAP之后USB无法枚举

[复制链接]
3390|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
franque|  楼主 | 2014-7-17 17:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,试验步骤如下:
1、直接烧录APP (USB能够正常枚举)
2、增加IAP(IAP程序只简化成跳转到APP),按复位键,USB能够枚举出来,如果拔掉USB在插入,无法枚举(显示无法识别的设备)
IAP程序如下:
int main(void)
{
    int i, j;
        protocol.ack_rep_cnt = 0;
        protocol.tx_len = 0;

        protocol.rec_2k_len = 0;

//        if(!NeedUpdate() && (((*(__IO uint32_t*)APPCODE_ADDR) & 0x2FFF0000  ) == 0x20000000) )
        if(1)
        {
//                if (((*(__IO uint32_t*)APPCODE_ADDR) & 0x2FFF0000  ) == 0x20000000)
                { /* Jump to user application */
                        JumpAddress = *(__IO uint32_t*) (APPCODE_ADDR+4);
                        Jump_To_Application = (pFunction) JumpAddress;
                        /* Initialize user application's Stack Pointer */
                        __set_MSP(*(__IO uint32_t*) APPCODE_ADDR);
                        Jump_To_Application();
                }
        }

APP主程序如下:
int main(void)
{
    int i, j;

        Set_USBClock();
        module_voltage_init();
        Set_System();
        delay_x_ms(500);

    USB_Init();

        if (debug_printf)
        {
                uart_init(115200);
        }

    SPI_DMA_Init();

           NVIC_Config();

中断地址设置都OK,请大伙帮我分析,是什么原因,我怀疑是不是APP部分环境没有初始化,谢谢各位!
沙发
franque|  楼主 | 2014-7-19 11:25 | 只看该作者
哪位能帮我看看啊,这几天毫无进展

使用特权

评论回复
板凳
STARM| | 2014-7-19 16:40 | 只看该作者
直接烧录APP USB能够枚举出来,如果拔掉USB在插入,也能再次枚举吗 ?

使用特权

评论回复
地板
huangqi412| | 2014-7-19 17:01 | 只看该作者
一般情况下,ARM的BOOT占用FLASH开头地址,APP在FLASH 后段。  必须先运行BOOT才能运行APP.
居然直接烧APP能行,说明你的APP 地址设置在了FLASH开头。。。。。。工程设置错误

使用特权

评论回复
5
Zacking| | 2015-3-11 10:47 | 只看该作者
请问楼主usb vcp是不是就是CDC啊,有没有vcp例程共享一下,谢谢!

使用特权

评论回复
6
lin34337151| | 2015-3-13 15:45 | 只看该作者
1)APP里面的时钟另外设置一下72M,那个库函数再重新调用一次,
2)在IAP跳转前把所有的中断是否关闭了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝