8054|9

20

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

stm32L把系统时钟配置为HSI,开机启动后容易进入HardFault_Handler函数,为什么? [复制链接]

感谢大神指点:
感觉这几行代码没有问题,   
    RCC_HSICmd(ENABLE);
    while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET) __nop();
    RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
    while (RCC_GetSYSCLKSource() != 0x04) __nop();

但是在STM32L低功耗芯片中,上电启动后,有时候会直接死机进入HardFault_Handler函数。


此帖出自stm32/stm8论坛

最新回复

FLASH 访问速度24MHz,外部时钟超过这个频率,取指时都要等大几个周期。  详情 回复 发表于 2016-11-24 14:47
点赞 关注
 

回复
举报

20

帖子

0

TA的资源

一粒金砂(中级)

来自 6楼
 
问题已经解决,总结如下:
stm32L低功耗的芯片在配置系统时钟之前,需要配置flash的访问方式以ACC64以及LATENCY,还有内核可调电压的范围VOS[1:0]。否则的话,连最高频率32MHz都无法作为系统时钟。
参考代码:
        FLASH_ReadAccess64Cmd( DISABLE);//系统默认是32位访问,根据情况,可以配置为64位
        
        FLASH_SetLatency(FLASH_Latency_0);        //FLASH zero Latency cycle
        
        //使能PWR时钟
        SET_BIT(RCC->APB1ENR, RCC_APB1ENR_PWREN);
        while(!READ_BIT(RCC->APB1ENR, RCC_APB1ENR_PWREN))__nop();
        
       //配置内核电压,CPU为高性能。本例中系统时钟最高16MHz
        __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_VoltageScaling_Range1);
        
此帖出自stm32/stm8论坛

赞赏

1

查看全部赞赏

 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

沙发
 
L的片子好像只有Cube的库吧。有标准外设库么?我印象中怎么没有的哦。我看了下Nucleo-L0031K6的example,么有找到您说的这个函数啊。。。。
还有时钟的设置,其实您除了看库函数之外,还需要看看时钟树的哦。
此帖出自stm32/stm8论坛
 
 

回复

20

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
huaiqiao 发表于 2016-5-16 23:14
L的片子好像只有Cube的库吧。有标准外设库么?我印象中怎么没有的哦。我看了下Nucleo-L0031K6的example,么 ...

STM32L低功耗芯片当然有标准外设库,配置时钟也是按照时钟树。Nucleo-L0031K6是STM32L??

无标题.png (1.69 KB, 下载次数: 6)

无标题.png
此帖出自stm32/stm8论坛

点评

有标准外设库?你从哪里找到的?给我地址,让我瞅瞅呢。  详情 回复 发表于 2016-5-18 18:00
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

4
 
王zhao 发表于 2016-5-18 17:51
STM32L低功耗芯片当然有标准外设库,配置时钟也是按照时钟树。Nucleo-L0031K6是STM32L??

有标准外设库?你从哪里找到的?给我地址,让我瞅瞅呢。
此帖出自stm32/stm8论坛
 
 
 

回复

20

帖子

0

TA的资源

一粒金砂(中级)

5
 
huaiqiao 发表于 2016-5-18 18:00
有标准外设库?你从哪里找到的?给我地址,让我瞅瞅呢。

https://yunpan.cn/cSmDNaFp78Qzu  访问密码 3d7a
这个是我下载的,可以直接提取的。
此帖出自stm32/stm8论坛
 
 
 

回复

767

帖子

2

TA的资源

纯净的硅(初级)

7
 
给楼主赞一个,问题发出来,解决掉还会讲出来!
此帖出自stm32/stm8论坛
 
个人签名物致DIY 欢迎你的加入~
QQ群:646461928 公众号:智物知心致成
小店
 
 

回复

2

帖子

1

TA的资源

一粒金砂(初级)

8
 
谢谢楼主!!!果然解决了!下面是标准库中的nop函数和电压范围函数。
FLASH_ReadAccess64Cmd( DISABLE);//系统默认是32位访问,根据情况,可以配置为64位
        
   FLASH_SetLatency(FLASH_Latency_0);        //FLASH zero Latency cycle
        
   //使能PWR时钟
   SET_BIT(RCC->APB1ENR, RCC_APB1ENR_PWREN);
   while(!READ_BIT(RCC->APB1ENR, RCC_APB1ENR_PWREN))
   __NOP();
      
   //配置内核电压,CPU为高性能。本例中系统时钟最高16MHz
   PWR_VoltageScalingConfig(PWR_VoltageScaling_Range1);
此帖出自stm32/stm8论坛
 
 
 

回复

2

帖子

1

TA的资源

一粒金砂(初级)

9
 
我把它放在systeminit()函数中的开头了
此帖出自stm32/stm8论坛
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

10
 
FLASH 访问速度24MHz,外部时钟超过这个频率,取指时都要等大几个周期。
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表