完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
自己搞了4天时间,在网上找了又找,发现都没有帖子能完美实现这个功能,真是典型的熟手懒得理,新手们又不会的悲剧。最后还是让我弄出点成果来了。这里为新手们做个详细的讲解。(我也刚入门哈~)
1、时钟的配置是在system_STM32f10x.c文件里面进行的,这里无法解释每条语句的意思,只把有做修改的部分贴出来。 此文件从上到下看下去,首先起到作用的是这一段:
把最后一行注释掉: //#define SYSCLK_FREQ_72MHz 72000000 2、接下来起作用的就是void SystemInit (void)函数了,把这整段函数替换成如下代码:
这段代码就是把系统时钟配置成内部时钟HSI的,并倍频到48M。实不相瞒,这段代码大部分也是参考网上的帖子的,但是我通过验证发现参考过来的结果并不能完全实现48M主频,所以自己又小做修改,最后验证成功。 到此,代码修改就完成了,那我是怎么验证是内部晶振48M呢? 首先,选择了内部晶振是通过理解system_stm32f10x.c文件的代码来判断,因为我也是新手一枚,故无法用其他手段进行佐证。 其次,对于48M频率,可以通过定时器定时1秒钟来证明,把重装载值设为10000,预分频值设为4799,这样定时一个LED灯的亮灭无限转换。通过秒表计时,灯亮和灯灭时间都为1S,则证明系统时间频率确是48MHz。下面是我的主函数部分:
新手一枚,有更好的建议望大伙能大方的提出来! 评分 |
|
相关推荐
|
|
SystemInit();这个函数配置完成后不需要在main里再调用了,其实按照ST官方的库文件3.5开始在启动代码中已经调用了。你试着注释掉这个函数,看看配置的参数是否生效
评分
|
||
|
||
|
||
HARRY007 发表于 2016-5-20 12:54 确实如此啊,以后就不加这句了,大神莅临指导,不胜荣幸! |
|
|
|
|
|
用ST的工具生成代码比较省事。
|
|
|
|
|
|
很好,楼主谢谢了
|
|
|
|
|
|
1187 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1122 浏览 2 评论
2223 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1311 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1735 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 03:42 , Processed in 0.757337 second(s), Total 84, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号