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

作者: 9robot
上传时间为: 2017-04-20 09:37 AM

收到板子好几天了,昨天开始学习。本以为之前学习过GD32F207和GD32F190,这次应该是轻车熟路,很顺利就可以上手。结果。。。这次的库函数和上次的风格不一样了,之前虽然和STM32的库有一些差异,但是总体还是很接近的。这次则变化了很多,好在换汤不换药,原理还是一样的。然后开始创建工程,我的习惯是先建立一个模板,证明没有错误后,之后的其他的模块的学习都是在模板上进行。

结果 昨天晚上折腾了好长时间也没有把等点亮。有点怀疑自己的以往经验了
1、把必要的源文件、头文件添加进工程,设置路径
2、开启时钟、比如点灯需要开启GPIO的时钟,当然系统的时钟是默认设置好的。。。这次就例外了,历程提供的采用了外部晶振作为时钟源,而小红板是没有外部晶振的,这个是必须要改的,好在GD32的代码注释还算详细,在system_gd32f4xx.c文件中可以设置。

  1. /* select a system clock by uncommenting the following line */
  2. //#define __SYSTEM_CLOCK_IRC16M (uint32_t)(__IRC16M)
  3. //#define __SYSTEM_CLOCK_HXTAL (uint32_t)(__HXTAL)
  4. //#define __SYSTEM_CLOCK_120M_PLL_IRC16M (uint32_t)(120000000)
  5. //#define __SYSTEM_CLOCK_120M_PLL_8M_HXTAL (uint32_t)(120000000)
  6. //#define __SYSTEM_CLOCK_120M_PLL_25M_HXTAL (uint32_t)(120000000)
  7. //#define __SYSTEM_CLOCK_168M_PLL_IRC16M (uint32_t)(168000000)
  8. //#define __SYSTEM_CLOCK_168M_PLL_8M_HXTAL (uint32_t)(168000000)
  9. //#define __SYSTEM_CLOCK_168M_PLL_25M_HXTAL (uint32_t)(168000000)
  10. #define __SYSTEM_CLOCK_200M_PLL_IRC16M (uint32_t)(200000000)
  11. //#define __SYSTEM_CLOCK_200M_PLL_8M_HXTAL (uint32_t)(200000000)
  12. //#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的库函数,把自己建的模板写出来,有问题的话,提提意见。

全部评论 ()

创建讨论帖子

登录 后参与评论
系统提示