完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
MSI在配置成65.536K的频率后直接无法仿真,程序跑飞。
(MSI_RANGER_0或1)都不行,RANGER_2或以上就可以。 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_MSI; RCC_OscInitStruct.MSIState = RCC_MSI_ON; RCC_OscInitStruct.MSICalibrationValue = 0; RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_0; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); }//这配置不行 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_MSI; RCC_OscInitStruct.MSIState = RCC_MSI_ON; RCC_OscInitStruct.MSICalibrationValue = 0; RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_2; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); }//这就可以 |
|
相关推荐
6个回答
|
|
是真跑飞了,还是 SWD 断了?写一个闪灯程序,把 SWD 速度降下去(~5kHz)试试看。
|
|
|
|
LED FLASH程序加了,没有反应,我后面调试直接用例程里面的PWR_LPR, 其中这一段 void SystemClock_Decrease(void) { RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; RCC_OscInitTypeDef RCC_OscInitStruct = {0}; /* Enable Power Control clock */ __HAL_RCC_PWR_CLK_ENABLE(); /* The voltage scaling allows optimizing the power consumption when the device is clocked below the maximum system frequency, to update the voltage scaling value regarding system frequency refer to product datasheet. Low power sleep mode can only be entered when VCORE is in range 2. */ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2); /* Enable MSI Oscillator */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_MSI; RCC_OscInitStruct.MSIState = RCC_MSI_ON; RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_5; RCC_OscInitStruct.MSICalibrationValue = 0x00; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; if (HAL_RCC_OscConfig(&RCC_OscInitStruct)!= HAL_OK) { /* Initialization Error */ while(1); } /* Select MSI as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers */ RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2); RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_MSI; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0)!= HAL_OK) { /* Initialization Error */ while(1); } /* Set MSI range to 0 */ __HAL_RCC_MSI_RANGE_CONFIG(RCC_MSIRANGE_5); __HAL_RCC_MSI_RANGE_CONFIG(RCC_MSIRANGE_4); __HAL_RCC_MSI_RANGE_CONFIG(RCC_MSIRANGE_3); __HAL_RCC_MSI_RANGE_CONFIG(RCC_MSIRANGE_2); __HAL_RCC_MSI_RANGE_CONFIG(RCC_MSIRANGE_1); __HAL_RCC_MSI_RANGE_CONFIG(RCC_MSIRANGE_0); } 在RANG1的时候就直接没有反应了,仿真器也退出了, 还有一个奇怪的现象就是 我用开发板STM32L011K4这个型号运行这个例程是没有问题的。 但是把这个程序放到STM32L011F4这个型号上面就不行了,硬件上也没什么差别。 |
|
|
|
yunhai21 发表于 2018-12-29 19:02 先试试看不接仿真能不能闪灯。如果不可以那就要去挖掘 HAL 的源代码了。如果不接仿真可以闪灯那就是仿真断了,你需要把 SWD 速度进一步降下去。 |
|
|
|
我也遇到了这个问题,请问下楼主怎么解决的
|
|
|
|
将SWD的max clock改一下,试过没?
|
|
|
|
很简单的东西啊
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
自定义系统时钟频率后,用库函数和微带两种方式点亮LED灯,为什么灯的闪烁频率不一致?
779 浏览 2 评论
955 浏览 2 评论
1902 浏览 0 评论
【嵌入式SD NAND】基于FATFS/Littlefs文件系统的日志框架实现
695 浏览 0 评论
求助!STM32F4单片机编程与设计sEMG信号采集电路问题
877 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-3-29 20:20 , Processed in 0.683706 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号