GD32F10x_Firmware_Library_V1.0.0测试不好使???

[复制链接]
 楼主| 1021256354 发表于 2015-7-26 08:34 | 显示全部楼层 |阅读模式
GD32F10x_Firmware_Library_V1.0.0测试不好使???jlink测试一直在时钟部分死循环,怎么回事????
若相依 发表于 2015-7-26 09:34 | 显示全部楼层
上代码,都是测试过的,不可能不好使吧。估计是jlink的支持不够
 楼主| 1021256354 发表于 2015-7-26 10:00 | 显示全部楼层
#ifdef GD32F10X_CL
    /* Configure PLLs ------------------------------------------------------*/

    /* PLL configuration: PLLCLK = PREDIV1 * 9 = 108 MHz */
    RCC->GCFGR &= (uint32_t)~(RCC_GCFGR_PLLPREDV | RCC_GCFGR_PLLSEL | RCC_GCFGR_PLLMF);
    RCC->GCFGR |= (uint32_t)(RCC_GCFGR_PLLPREDV_PREDIV1 | RCC_GCFGR_PLLSEL_PREDIV1 | RCC_GCFGR_PLLMF9);

    /* PLL2 configuration: PLL2CLK = (HSE / 5) * 12 = 60 MHz */
    /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 12 MHz */
        
    RCC->GCFGR2 &= (uint32_t)~(RCC_GCFGR2_PREDV2 | RCC_GCFGR2_PLL2MF |
                              RCC_GCFGR2_PREDV1 | RCC_GCFGR2_PREDV1SEL);
    RCC->GCFGR2 |= (uint32_t)( RCC_GCFGR2_PREDV2_DIV5 | RCC_GCFGR2_PLL2MF12 |
                             RCC_GCFGR2_PREDV1SEL_PLL2 | RCC_GCFGR2_PREDV1_DIV5);
  
    /* Enable PLL2 */
    RCC->GCCR |= RCC_GCCR_PLL2EN;
    /* Wait till PLL2 is ready */
    while((RCC->GCCR & RCC_GCCR_PLL2STB) == 0)   //死在这了
    {
    }
 楼主| 1021256354 发表于 2015-7-26 10:00 | 显示全部楼层
外部晶振12M
sunmeat 发表于 2015-7-26 11:55 | 显示全部楼层

jlink测试一直在时钟部分死循环,是什么意思,是指程序执行死循环么
 楼主| 1021256354 发表于 2015-7-26 12:00 | 显示全部楼层
while((RCC->GCCR & RCC_GCCR_PLL2STB) == 0)   //死在这了
    {
    }
一直都在这
kekeke 发表于 2015-7-26 15:33 | 显示全部楼层
1021256354 发表于 2015-7-26 12:00
while((RCC->GCCR & RCC_GCCR_PLL2STB) == 0)   //死在这了
    {
    }

https://bbs.21ic.com/icview-1004440-1-1.html
这里有个例子,你下载看看
 楼主| 1021256354 发表于 2015-7-26 15:49 | 显示全部楼层
我试试
Desire1 发表于 2015-7-28 15:42 | 显示全部楼层

楼主测试好了没?是库的问题么?
mumu3013 发表于 2015-7-28 16:57 | 显示全部楼层
库肯定没有问题,你用的12M,晶振,导致PLL2无**确启动,库里用的是25M外部晶振,你要自己修改一下,不能按照25M的方式配置了
mumu3013 发表于 2015-7-28 17:08 | 显示全部楼层
    /* Configure PLLs ------------------------------------------------------*/

    /* PLL configuration: PLLCLK = PREDIV1 * 9 = 108 MHz */
    RCC->GCFGR &= (uint32_t)~(RCC_GCFGR_PLLPREDV | RCC_GCFGR_PLLSEL | RCC_GCFGR_PLLMF);
    RCC->GCFGR |= (uint32_t)(RCC_GCFGR_PLLPREDV_PREDIV1 | RCC_GCFGR_PLLSEL_PREDIV1 | RCC_GCFGR_PLLMF9);

//    /* PLL2 configuration: PLL2CLK = (HSE / 5) * 12 = 60 MHz */
//    /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 12 MHz */
//        
//    RCC->GCFGR2 &= (uint32_t)~(RCC_GCFGR2_PREDV2 | RCC_GCFGR2_PLL2MF |
//                              RCC_GCFGR2_PREDV1 | RCC_GCFGR2_PREDV1SEL);
//    RCC->GCFGR2 |= (uint32_t)( RCC_GCFGR2_PREDV2_DIV5 | RCC_GCFGR2_PLL2MF12 |
//                             RCC_GCFGR2_PREDV1SEL_PLL2 | RCC_GCFGR2_PREDV1_DIV5);
//  
//    /* Enable PLL2 */
//    RCC->GCCR |= RCC_GCCR_PLL2EN;
//    /* Wait till PLL2 is ready */
//    while((RCC->GCCR & RCC_GCCR_PLL2STB) == 0)
//    {
//    }


直接注释掉后面的就行,12M*9=108M
 楼主| 1021256354 发表于 2015-7-28 17:44 | 显示全部楼层
我试试,谢谢
elecintop 发表于 2015-7-29 10:02 | 显示全部楼层
直接在宏定义中选择108M的定义即可。
 楼主| 1021256354 发表于 2015-7-30 09:22 | 显示全部楼层
elecintop 发表于 2015-7-29 10:02
直接在宏定义中选择108M的定义即可。

直接选择宏108不行,跑不起来
mumu3013 发表于 2015-7-30 11:37 | 显示全部楼层
elecintop 发表于 2015-7-29 10:02
直接在宏定义中选择108M的定义即可。

注意使用的外部晶振大小是否和库一致,不一致要修改的
elecintop 发表于 2015-8-13 11:03 | 显示全部楼层
1021256354 发表于 2015-7-30 09:22
直接选择宏108不行,跑不起来

外部晶振也要匹配的。
comeon201208 发表于 2015-8-15 14:06 | 显示全部楼层
这个的检查下你的始终部分的硬件设计的。
Akatosh 发表于 2015-8-17 17:11 | 显示全部楼层
即使用的12M的晶振,最多也是配出108/25*12=51.84MHz的时钟,不太可能死在等待PLL2完成的地方,我怀疑你可能用的是103的芯片,103是没有PLL2的。
注意这段代码前面有#ifdef GD32F10X_CL,所以这段代码只能在105/107上用的。查下工程的options信息的c/c++页,看看是不是配错了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

151

主题

648

帖子

3

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