TA的每日心情 | 奋斗 2024-9-22 22:20 |
---|
签到天数: 944 天 连续签到: 1 天 [LV.10]以坛为家III
|
本帖最后由 9robot 于 2017-4-20 09:20 编辑
收到板子好几天了,昨天开始学习。本以为之前学习过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的库函数,把自己建的模板写出来,有问题的话,提提意见。
实验现象为。三个LED每隔500ms闪烁一次。
|
|