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

[复制链接]
3670|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开头。。。。。。工程设置错误
Zacking 发表于 2015-3-11 10:47 | 显示全部楼层
请问楼主usb vcp是不是就是CDC啊,有没有vcp例程共享一下,谢谢!
lin34337151 发表于 2015-3-13 15:45 | 显示全部楼层
1)APP里面的时钟另外设置一下72M,那个库函数再重新调用一次,
2)在IAP跳转前把所有的中断是否关闭了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部