你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32CubeMX+Hal库教程-点亮Led

[复制链接]
STMCU 发布时间:2020-10-19 12:36
简单写一下失败经历。
    用的CubeMX版本是4.20.0如下图,用的Keil5编译代码,编译结果0 Error(s),0 Warning(s)。
6.png
    Hex文件也可以正常下载到单片机,但是LED不亮。


    在CubeMX中配置了时钟,如下图。
7.png
    CubeMX生成的main.c中Clock代码是这样的:

  1. /** System Clock Configuration
  2. */
  3. void SystemClock_Config(void)
  4. {

  5.   RCC_OscInitTypeDef RCC_OscInitStruct;
  6.   RCC_ClkInitTypeDef RCC_ClkInitStruct;

  7.     /**Initializes the CPU, AHB and APB busses clocks
  8.     */
  9.   /*
  10.   其中,OscillatorType这里自动生成的代码有问题
  11. */
  12.   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSE;
  13.   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  14.   RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
  15.   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  16.   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  17.   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
  18.   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  19.   {
  20.     Error_Handler();
  21.   }

  22.     /**Initializes the CPU, AHB and APB busses clocks
  23.     */
  24.   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  25.                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  26.   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  27.   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  28.   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
  29.   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  30.   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
  31.   {
  32.     Error_Handler();
  33.   }

  34.     /**Configure the Systick interrupt time
  35.     */
  36.   HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

  37.     /**Configure the Systick
  38.     */
  39.   HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

  40.   /* SysTick_IRQn interrupt configuration */
  41.   HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
  42. }
复制代码


问题在哪儿呢?LED挂在PC0上,时钟路线图如下。
8.png
第14行代码写成下面这样验证OK。

  1. <font size="3">RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;</font>
复制代码


实际上在实验中没有用到HSI,但是在自动生成的代码中把它加上了,导致单片机无法正常工作。看来排查Bug时,时钟这一块需要重点关注一下。




收藏 1 评论0 发布时间:2020-10-19 12:36

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版