完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,我想了解STM32 mcu的启动过程。所以我对 STM32 和 HAL 有很好的了解,但我想更深入地了解寄存器。
所以我创建了一个空白项目,只包含外设头文件 (stm32wb55xx.h)、(system_stm32wbxx.c)、启动脚本 (startup_stm32wb55xx_cm4.s) 和 main.c,我在其中实现了一个闪烁,它正在运行。我在哪里设置 RCC->AHB2ENR(启用时钟)寄存器,但我不确定它的频率和来自 SYSCLK、HCLK、AHB、APB1 的频率... 据我了解,启动脚本是从 system_stm32wbxx.c 调用 SystemInit() 函数,其中时钟设置为默认值,然后调用主函数,可以更改时钟配置? 如果我错了请纠正我!如果有人有一些正确设置时钟的链接或文档。 谢谢 |
|
相关推荐
1个回答
|
|
需要三个文件来告诉你(几乎)关于你的 stm32 的一切。它们是数据表、参考手册和编程手册。
数据表包含大量电气、时序和引脚分配信息。 参考手册中的信息量很大,密密麻麻,乍一看会让人毛骨悚然。它描述了ST设计的stm32的所有位。 那么stm32的哪些部分不是ST设计的呢?arm 核心和核心外围设备,例如矢量中断控制器。这些在编程手册中有描述。 您会在哪里找到问题的答案?我在两个地方看到了答案: 在数据表中,第 3.10 节“时钟和启动” 启动时钟:复位后,微控制器默认使用内部 4 MHz 时钟 (MSI) 重新启动。一旦代码执行开始,应用程序就可以更改预分频比和时钟源。 在参考手册中,第 8.4 节 RCC 寄存器。时钟源的关键寄存器是RCC_CR和RCC_CFGR。 参考手册说在上电复位时 RCC_CR 是 0x00000061 所以 MSI 是 4 MHz 并且启用;RCC_CFGR 为 0x00070000,因此系统时钟开关选择 MSI,因此选择 4 MHz。 参考手册还说,在从待机复位唤醒时,RCC_CR 为 0x00000160,因此 HSI 已启用(16 MHz);RCC_CFGR 是 0x00070001,因此系统时钟开关选择 HSI,因此选择 16 MHz。 现在这些手册中有大量的细节,可能令人生畏和反感。因此 ST 编写了 HAL 的东西,给你一个“简单的”C 接口。但我发现 HAL 的文档不足;除了使用示例和 HAL 函数的源代码,我看不到更多内容。所以我更喜欢使用参考手册指导的寄存器访问。 |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2310 浏览 1 评论
3070 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1642 浏览 1 评论
3458 浏览 6 评论
5810 浏览 21 评论
803浏览 4评论
1179浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
447浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1160浏览 3评论
1212浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-27 11:18 , Processed in 1.070533 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191