找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2818|回复: 9
收起左侧

关于STM32F401时钟初始化卡住的问题

[复制链接]
ID:1045600 发表于 2023-5-24 13:56 | 显示全部楼层 |阅读模式
我用STM32CubeMX生成了一个程序,下到单片机跑仿真时,会在HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2)这里面的pllvco = (uint32_t) ((((uint64_t) HSE_VALUE * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);中卡住不动了。
程序.png
卡住.png
回复

使用道具 举报

ID:123289 发表于 2023-5-24 15:31 | 显示全部楼层
调用别人的函数,先了解一下函数的使用说明。
回复

使用道具 举报

ID:744809 发表于 2023-5-24 15:59 | 显示全部楼层
检查你的板子有没有晶振吧,可能板子上没晶振,cubemx里面设置了晶振就会出问题。建议先用内部HSI做时钟源再试试
回复

使用道具 举报

ID:1045600 发表于 2023-5-24 16:23 | 显示全部楼层
我绕过PLL直接把外部8M的晶振信号给系统时钟就可以运行。然后我又在cubemx设置了用HSI,结果是跟HSE一样,在相同的地方卡住
回复

使用道具 举报

ID:1045600 发表于 2023-5-24 16:24 | 显示全部楼层
这是电路图
F401.png
回复

使用道具 举报

ID:384109 发表于 2023-5-24 16:51 | 显示全部楼层
应该还是参数配置的问题,用cubemx最简单的是选晶振源,然后选主频,之后让cubemx自己配置
回复

使用道具 举报

ID:1077536 发表于 2023-5-24 17:02 | 显示全部楼层
调用别人的函数,先了解一下函数的使用说明。
回复

使用道具 举报

ID:388584 发表于 2024-4-7 23:01 | 显示全部楼层
UINT64 溢出了,
pllvco = (uint32_t) ((((uint64_t) HSE_VALUE / (uint64_t)pllm) * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos))));
这样就ok
回复

使用道具 举报

ID:388584 发表于 2024-4-7 23:03 | 显示全部楼层
pllvco = (uint32_t) ((((uint64_t) HSE_VALUE / (uint64_t)pllm) * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos))));
回复

使用道具 举报

ID:883242 发表于 2024-4-7 23:39 | 显示全部楼层
这是硬件故障,HSE没起振,用示波器看下6脚oscout波形。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表