请教STM32L152的启动时钟设置问题

2019-03-23 18:04发布

我的硬件是STM32L152ZD,现在的状态是通过跟踪,程序一直运行在启动文件中。即启动文件中调用SystemInit (void),SystemInit (void)中又调用SetSysClock(void)。现在问题是 程序一直在do---wile()中循环,应该是在等待HSE稳定吧。资料上不是说STM32L1XX系列上电默认时钟就是HSI吗?附上SetSysClock(void)函数片段。库是V1.3.1.。。先谢谢大家了
static void SetSysClock(void)
{
  __IO uint32_t StartUpCounter = 0, HSEStatus = 0;
  
  /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/
  /* Enable HSE */
  RCC->CR |= ((uint32_t)RCC_CR_HSEON);

  /* Wait till HSE is ready and if Time out is reached exit */
  do
  {
    HSEStatus = RCC->CR & RCC_CR_HSERDY;
    StartUpCounter++;
  } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));

  if ((RCC->CR & RCC_CR_HSERDY) != RESET)
  {
    HSEStatus = (uint32_t)0x01;
  }
  else
  {
    HSEStatus = (uint32_t)0x00;
  }
  
  if (HSEStatus == (uint32_t)0x01) 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
huaiqiao
1楼-- · 2019-03-23 19:52
/ 楼主,我对您的疑问回答如下:
1、对时钟的理解,不能抛开时钟树,这个是必须的。因为我个人觉得时钟树贯穿于stm32的每个程序中。(因为你初始化外设的时候,第一步总是在使能总线时钟);所以,您理解的时候,借助手册中RCC的时钟树那个章节。

时钟树.png

2、如果时钟树理解起来比较麻烦,也可以使用CubeMX来配合理解时钟。
下图,我只是拿个图片来举个例子。

c.png


3、 SetSysClock(void)这个函数一开始,就执行RCC->CR |= ((uint32_t)RCC_CR_HSEON),所以这个地方就是使能HSE,具体的理解,您可以参考RCC的CR寄存器,和RCC_CR_HSEON的宏定义来理解。
我举个例子:
RCC_CR_HSEON被宏定义为((uint32_t)0x00010000),如果执行这个语句RCC->CR |= ((uint32_t)RCC_CR_HSEON),那么CR寄存器的第16位被置位,所以根据参考手册CR寄存器的说明。HSE振荡器打开
     后面的do,while循环。那么do,while循环有个特点,先执行,后判断。所以理解起来,应该是先去看do里面的语句, HSEStatus = RCC->CR & RCC_CR_HSERDY;这个的理解和刚才第一句的理解是一样的。(就是根据RCC_CR_HSERDY的宏定义值)。想必while的判断,也是如此。
4、后面你的这个 SetSysClock(void)没复制全,所以没法再做详细的说明。其实说白了,你理解了C语言,再结合时钟树及RCC的寄存器,这个时钟设置的理解就不困难了。


ZHANGXUEJIE
2楼-- · 2019-03-23 21:09
huaiqiao 发表于 2016-7-29 22:51
楼主,我对您的疑问回答如下:
1、对时钟的理解,不能抛开时钟树,这个是必须的。因为我个人觉得时钟树贯 ...

谢谢!大概明白了
柠檬酸钠
3楼-- · 2019-03-24 00:08
 精彩回答 2  元偷偷看……
huaiqiao
4楼-- · 2019-03-24 01:41
ZHANGXUEJIE 发表于 2016-8-2 09:44
谢谢!大概明白了

恩恩,多想想,多看看。。。多比较。。。。多理解,你就清楚时钟树了。
huaiqiao
5楼-- · 2019-03-24 07:38
柠檬酸钠 发表于 2016-8-2 09:59
太有耐心了  支持下

呵呵,谢谢。每个人都是从不知道到知道过来的。或许有人这么耐心的讲解了,走的弯路可能会更少一些。
柠檬酸钠
6楼-- · 2019-03-24 11:56
 精彩回答 2  元偷偷看……

一周热门 更多>