简单写一下失败经历。
用的CubeMX版本是4.20.0如下图,用的Keil5编译代码,编译结果0 Error(s),0 Warning(s)。
在CubeMX中配置了时钟,如下图。
CubeMX生成的main.c中Clock代码是这样的:
/** System Clock Configuration*/void SystemClock_Config(void){ RCC_OscInitTypeDef RCC_OscInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct; /**Initializes the CPU, AHB and APB busses clocks *//*其中,OscillatorType这里自动生成的代码有问题*/RCC_OscInitStruct.OscillatorType=RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { Error_Handler(); } /**Initializes the CPU, AHB and APB busses clocks */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) { Error_Handler(); } /**Configure the Systick interrupt time */ HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000); /**Configure the Systick */ HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); /* SysTick_IRQn interrupt configuration */ HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);}
问题在哪儿呢?LED挂在PC0上,时钟路线图如下。
第14行代码写成下面这样验证OK。
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
实际上在实验中没有用到HSI,但是在自动生成的代码中把它加上了,导致单片机无法正常工作。看来排查Bug时,时钟这一块需要重点关注一下。
责任编辑人:CC
-
编译
+关注
关注
0文章
663浏览量
33100 -
stm32cubemx
+关注
关注
5文章
284浏览量
15149
原文标题:STM32CubeMX+Hal库教程-点亮Led
文章出处:【微信号:c-stm32,微信公众号:STM32嵌入式开发】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
MotorControl Workbench 5.4.8和哪个版本的STM32CubeMX可以配合使用?
使用1.9.0版本时,stm32cubemx生成ETH+LWIP代码,直接编译出错的原因?
使用CubeMX自动生成工程编译出错
STM32CubeMx生成的代码编译出错
编译使用CubeMX生成的代码时报错怎么办
为什么无法使用CubeMx成功生成代码?
CubeMx如何从命令行或使用脚本触发代码生成?
无法从CubeMX生成的项目中编译代码咋办
CubeMX如何为代码生成选择特定的MCU包版本?
如何指示STM32CubeMX生成可使用ARM/Keil Compiler Version 6编译的代码?
STM32CubeMX——搭建环境、编译烧写
![STM32<b class='flag-5'>CubeMX</b>——搭建环境、<b class='flag-5'>编译</b>烧写](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
stm32cubeMX+vscode开发编译调试stm32程序
![stm32<b class='flag-5'>cubeMX</b>+vscode开发<b class='flag-5'>编译</b>调试stm32程序](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Tengine从入门到放弃 第1篇-Tengine Android版本编译
![Tengine从入门到放弃 第1篇-Tengine Android<b class='flag-5'>版本</b><b class='flag-5'>编译</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
评论