ST MCU Finder
安装免费手机应用,
寻找理想的ST MCU

关于STM32F072启动的问题

[复制链接]
836|5
 楼主 | 2019-6-6 19:33 | 显示全部楼层 |阅读模式
本帖最后由 aa911 于 2019-6-6 19:41 编辑

由于所用的DEMO版需要,我把第7行改为第8行 ,程序一直在第10行到第14行的地方循环执行,MCU无法正常工作,请问各位问题出在哪?
  1. static void SetSysClock(void)
  2. {
  3.   __IO uint32_t StartUpCounter = 0, HSEStatus = 0;
  4.   
  5.   /* SYSCLK, HCLK, PCLK configuration ----------------------------------------*/
  6.   /* Enable HSE */   
  7. //RCC->CR |= ((uint32_t)RCC_CR_HSEON);
  8.          RCC->CR &= ~((uint32_t)RCC_CR_HSEON);
  9.   /* Wait till HSE is ready and if Time out is reached exit */
  10. do
  11.   {
  12.     HSEStatus = RCC->CR & RCC_CR_HSERDY;
  13.     StartUpCounter++;  
  14.   } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));

  15.   if ((RCC->CR & RCC_CR_HSERDY) != RESET)
  16.   {
  17.     HSEStatus = (uint32_t)0x01;
  18.   }
  19.   else
  20.   {
  21.     HSEStatus = (uint32_t)0x00;
  22.   }  

  23.   if (HSEStatus == (uint32_t)0x01)
  24.   {
  25.     /* Enable Prefetch Buffer and set Flash Latency */
  26.     FLASH->ACR = FLASH_ACR_PRFTBE | FLASH_ACR_LATENCY;

  27.     /* HCLK = SYSCLK */
  28.     RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
  29.       
  30.     /* PCLK = HCLK */
  31.     RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE_DIV1;

  32.     /* PLL configuration = HSI * 6 = 48 MHz */
  33.     RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
  34.     RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL6);
  35.             
  36.     /* Enable PLL */
  37.     RCC->CR |= RCC_CR_PLLON;

  38.     /* Wait till PLL is ready */
  39.     while((RCC->CR & RCC_CR_PLLRDY) == 0)
  40.     {
  41.     }

  42.     /* Select PLL as system clock source */
  43.     RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
  44.     RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;   

  45.     /* Wait till PLL is used as system clock source */
  46.     while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)RCC_CFGR_SWS_PLL)
  47.     {
  48.     }
  49.   }
  50.   else
  51.   { /* If HSE fails to start-up, the application will have wrong clock
  52.          configuration. User can add here some code to deal with this error */
  53.   }  
  54. }
复制代码


使用特权

评论回复
| 2019-6-7 22:27 | 显示全部楼层
这是在等待时钟就绪, 说明时钟电路有问题

使用特权

评论回复
 楼主 | 2019-6-8 09:45 | 显示全部楼层
airwill 发表于 2019-6-7 22:27
这是在等待时钟就绪, 说明时钟电路有问题

使用的是内部时钟,没有外部时钟。

使用特权

评论回复
| 2019-6-8 16:00 | 显示全部楼层
aa911 发表于 2019-6-8 09:45
使用的是内部时钟,没有外部时钟。

那就把这段代码注释掉,没有放晶振,HSE初始化肯定失败啊

使用特权

评论回复
 楼主 | 2019-6-8 16:43 | 显示全部楼层
xufujun 发表于 2019-6-8 16:00
那就把这段代码注释掉,没有放晶振,HSE初始化肯定失败啊

已经解决,谢谢哈

使用特权

评论回复
| 2019-6-9 14:17 | 显示全部楼层
aa911 发表于 2019-6-8 16:43
已经解决,谢谢哈

小事情,不客气

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /2 下一条

在线客服 快速回复 返回顶部 返回列表