打印

GD32F10x_Firmware_Library_V1.0.0测试不好使???

[复制链接]
2421|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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

使用特权

评论回复
5
sunmeat| | 2015-7-26 11:55 | 只看该作者

jlink测试一直在时钟部分死循环,是什么意思,是指程序执行死循环么

使用特权

评论回复
6
1021256354|  楼主 | 2015-7-26 12:00 | 只看该作者
while((RCC->GCCR & RCC_GCCR_PLL2STB) == 0)   //死在这了
    {
    }
一直都在这

使用特权

评论回复
7
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
这里有个例子,你下载看看

使用特权

评论回复
8
1021256354|  楼主 | 2015-7-26 15:49 | 只看该作者
我试试

使用特权

评论回复
9
Desire1| | 2015-7-28 15:42 | 只看该作者

楼主测试好了没?是库的问题么?

使用特权

评论回复
10
mumu3013| | 2015-7-28 16:57 | 只看该作者
库肯定没有问题,你用的12M,晶振,导致PLL2无**确启动,库里用的是25M外部晶振,你要自己修改一下,不能按照25M的方式配置了

使用特权

评论回复
11
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

使用特权

评论回复
12
1021256354|  楼主 | 2015-7-28 17:44 | 只看该作者
我试试,谢谢

使用特权

评论回复
13
elecintop| | 2015-7-29 10:02 | 只看该作者
直接在宏定义中选择108M的定义即可。

使用特权

评论回复
14
1021256354|  楼主 | 2015-7-30 09:22 | 只看该作者
elecintop 发表于 2015-7-29 10:02
直接在宏定义中选择108M的定义即可。

直接选择宏108不行,跑不起来

使用特权

评论回复
15
mumu3013| | 2015-7-30 11:37 | 只看该作者
elecintop 发表于 2015-7-29 10:02
直接在宏定义中选择108M的定义即可。

注意使用的外部晶振大小是否和库一致,不一致要修改的

使用特权

评论回复
16
elecintop| | 2015-8-13 11:03 | 只看该作者
1021256354 发表于 2015-7-30 09:22
直接选择宏108不行,跑不起来

外部晶振也要匹配的。

使用特权

评论回复
17
comeon201208| | 2015-8-15 14:06 | 只看该作者
这个的检查下你的始终部分的硬件设计的。

使用特权

评论回复
18
Akatosh| | 2015-8-17 17:11 | 只看该作者
即使用的12M的晶振,最多也是配出108/25*12=51.84MHz的时钟,不太可能死在等待PLL2完成的地方,我怀疑你可能用的是103的芯片,103是没有PLL2的。
注意这段代码前面有#ifdef GD32F10X_CL,所以这段代码只能在105/107上用的。查下工程的options信息的c/c++页,看看是不是配错了。

使用特权

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

本版积分规则

148

主题

642

帖子

3

粉丝