查看: 2801|回复: 0

[GD32F450方案分享] GD32F450新建工程及点灯

[复制链接]
  • TA的每日心情
    奋斗
    2023-6-27 14:09
  • 签到天数: 943 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2017-4-20 09:37:31 | 显示全部楼层 |阅读模式
    分享到:
    收到板子好几天了,昨天开始学习。本以为之前学习过GD32F207和GD32F190,这次应该是轻车熟路,很顺利就可以上手。结果。。。这次的库函数和上次的风格不一样了,之前虽然和STM32的库有一些差异,但是总体还是很接近的。这次则变化了很多,好在换汤不换药,原理还是一样的。然后开始创建工程,我的习惯是先建立一个模板,证明没有错误后,之后的其他的模块的学习都是在模板上进行。
          结果 昨天晚上折腾了好长时间也没有把等点亮。有点怀疑自己的以往经验了
          1、把必要的源文件、头文件添加进工程,设置路径
          2、开启时钟、比如点灯需要开启GPIO的时钟,当然系统的时钟是默认设置好的。。。这次就例外了,历程提供的采用了外部晶振作为时钟源,而小红板是没有外部晶振的,这个是必须要改的,好在GD32的代码注释还算详细,在system_gd32f4xx.c文件中可以设置。

    • /* select a system clock by uncommenting the following line */
    • //#define __SYSTEM_CLOCK_IRC16M              (uint32_t)(__IRC16M)
    • //#define __SYSTEM_CLOCK_HXTAL             (uint32_t)(__HXTAL)
    • //#define __SYSTEM_CLOCK_120M_PLL_IRC16M        (uint32_t)(120000000)
    • //#define __SYSTEM_CLOCK_120M_PLL_8M_HXTAL        (uint32_t)(120000000)
    • //#define __SYSTEM_CLOCK_120M_PLL_25M_HXTAL      (uint32_t)(120000000)
    • //#define __SYSTEM_CLOCK_168M_PLL_IRC16M        (uint32_t)(168000000)
    • //#define __SYSTEM_CLOCK_168M_PLL_8M_HXTAL     (uint32_t)(168000000)
    • //#define __SYSTEM_CLOCK_168M_PLL_25M_HXTAL      (uint32_t)(168000000)
    • #define __SYSTEM_CLOCK_200M_PLL_IRC16M        (uint32_t)(200000000)
    • //#define __SYSTEM_CLOCK_200M_PLL_8M_HXTAL     (uint32_t)(200000000)
    • //#define __SYSTEM_CLOCK_200M_PLL_25M_HXTAL      (uint32_t)(200000000)
    复制代码
    更改后就是上面的样子,注释掉原先的,设置为内部时钟,并且倍频到200M。
          然后编译没有问题,下载到板子上,结果发现没有反应,只有一个LED发出暗暗的弱光。然后在论坛上开始找办法,发现有类似的问题。结果我以为是提供的历程存在共性问题,但是也有人成功点亮LED,那么应该还是我自己的问题。还是好好找找吧。
          void led_init(void){
             rcu_periph_clock_enable(RCU_GPIOB);      
             rcu_periph_clock_enable(RCU_GPIOD);
        /* configure led GPIO port */
        gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,GPIO_PIN_3|GPIO_PIN_4);
        gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_3|GPIO_PIN_4);
        GPIO_BC(GPIOB) = GPIO_PIN_3|GPIO_PIN_4;      
        /* configure led GPIO port */
        gpio_mode_set(GPIOD, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,GPIO_PIN_7);
        gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_7);
        GPIO_BC(GPIOD) = GPIO_PIN_7;
    }

    这部分是LED初始化的代码,本来是很简单的,一直坚信自己不会在这里出问题,但找来找去最后还是定位到这里。都是因为自己的粗心大意,把GPIOD写成了RCU_GPIOD,没有发现,编译也可以通过。。。。。有点阴沟翻船的感觉。把自己的低级错误写出了,希望大家不要犯我这样的错误。仔细检查每行代码,尽快熟悉GD32F450的库函数,把自己建的模板写出来,有问题的话,提提意见。
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-20 02:50 , Processed in 0.120116 second(s), 15 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.