6回答

0收藏

[原创] 【GD32】关于小红板时钟配置的故事

GD32 GD32 4925 人阅读 | 6 人回复 | 2015-07-02

GD32资料共享链接:http://pan.baidu.com/s/1ntDtD4P
密码:iybb
1GD32】开箱晒照
2GD32】上电&软件环境
3GD32】硬件原理&软件开发&Demo
4GD32】做开发(全文字)
/*------------------------------正文分割线-----------------------------------------------*/
里面提到被GD32的官方固件库坑~~~
我在9楼做了回复哈

因为我是按照给的小红板例程进行测试的,测试正常,LED闪烁正常,因此对时钟不以为意,直到今天群里还在说关于GD32小红板时钟配置有问题的事情,我才知道大神是直接利用官方提供的固件库自己建立工程的哈

~~~

对应GD32大赛活动资料提供界面的位置
https://www.cirmall.com/gd32/ziliao/#activity

我们来对比一下,两者在时钟配置的差异!
左边是正常例程中的代码,右边是官方的固件库
程序启动,启动文件bootloader节选startup_gd32f1x0.s
,建立程序运行环境,这也说明启动文件的重要性
设置时钟是在system_gd32f1x0.c中的System_Init  ->  Set_SysClock ->  (SYSCLK_FREQ_72MHz)  Set_SysClockTo72  
——就是这么一个流程
时钟是数字电路的灵魂,如果始终都设置错了,怎么得了!
现在剖析一下怎么个利用HSI设置系统时钟到72MHz!!!
system_gd32f1x0.c的第603~718
1.等待HSE稳定,小红板没有HSE自然不会稳定
注意:据官方资料,GD32HSE支持4~32MHz,STM324~16M有不同
2.等待HSE稳定超时,
设置一个标志位:tmp_HSEStatus = (uint32_t)0x00;
3.接下来直接从第661行执行开始!
关闭HSE,开启HIS,等待HSI稳定
HIS肯定有啊,所以设置一个标志位:tmp_HSIStatus= (uint32_t)0x01;(667)
4设置系统时钟为72MHz

设置AHB,APB时钟
设置PLL倍频参数
使能PLL
等待PLL稳定
选择PLL为时钟源
等待设置完成

ok,纠结的时钟问题终于解决了~~~








分享到:
回复

使用道具 举报

回答|共 6 个

倒序浏览

沙发

奋斗哥

发表于 2015-7-3 08:38:54 | 只看该作者

非常好的技术贴
板凳

ts2000

发表于 2015-7-3 08:46:09 | 只看该作者

我懒得一个一个的去看文档。随便下载了个固件库自己建个工程。还以为是兼容小红板开发板的。谁知时钟竟然是不对的。哎~~~~~~~~~~~  如果能像ST的能兼容就好了,何必还要分开来搞?
地板

荣丰宇

发表于 2015-7-3 08:58:27 来自手机 | 只看该作者

ts2000 发表于 2015-7-3 08:46
我懒得一个一个的去看文档。随便下载了个固件库自己建个工程。还以为是兼容小红板开发板的。谁知时钟竟然是 ...

主要是这块板子没有hse
5#

trochili

发表于 2015-7-3 10:01:57 | 只看该作者

ts2000 发表于 2015-7-3 08:46
我懒得一个一个的去看文档。随便下载了个固件库自己建个工程。还以为是兼容小红板开发板的。谁知时钟竟然是 ...

时钟树是mcu启动时需要关心的第一个重点。板子上没有HSE,那必然是用了HSI。即使是自己新建的工程,采用了官方的库,那也要关心时钟和PLL的问题。时钟配置的检查是必须的。顺便说一下,中断注册表也是需要关注的地方。
eeboard大力支持的开源RTOS -- Trochili RTOS
6#

liunian__92

发表于 2015-7-3 13:33:12 | 只看该作者

不错呦。。楼主。。
7#

荣丰宇

发表于 2015-7-3 16:15:42 | 只看该作者

trochili 发表于 2015-7-3 10:01
时钟树是mcu启动时需要关心的第一个重点。板子上没有HSE,那必然是用了HSI。即使是自己新建的工程,采用 ...

鸟哥说得对,关于启动流程bootloader的部分,可以专门发帖讲讲,虽然st已经讲烂了……但是不是所有开发者都熟悉这个流程
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

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