您的位置 首页 制造

根据51单片机i2c多字节的读写

基于51单片机i2c多字节的读写-使用Keil的编译环境下载,确实能够下载,但是入口的地址是如下黄色的那行显示所示,如果单步执行(F11)或全速运行(F5),程序始终在原位置不动(0x1FFF4252),如果强制的将PC指针的值和SP的值修改为0x8000000与0x2000000,然后在点击运行,则能够跑到main()函数,再全速运行,能够看到客户板子上的LED灯的闪烁。

运用Keil的编译环境下载,的确能够下载,可是进口的地址是如下黄色的那行显现所示,假如单步履行(F11)或全速运转(F5),程序一直在原方位不动(0x1FFF4252),假如强制的将PC指针的值和SP的值修正为0x8000000与0x2000000,然后在点击运转,则能够跑到main()函数,再全速运转,能够看到客户板子上的LED灯的闪耀。

可是假如不强制修正PC和SP指针的值,则程序不履行。

所以问题就变成为什么程序下载进去后的地址是0x1FFF4252?0x1FFF4252又是什么地址呢?查阅相应的手册,发现0x1FFF4252是处在了Systemmemory区域。

万用表丈量了客户板上的Boot0引脚的电平,发现电平不对,到达1.6V,这么高的电平能够被视为高电平了。

对照客户的原理图,本来Boot有上拉和下拉的电阻焊接的时分将这两个电阻都焊接上去了,去掉上拉电阻,使的BOOT0的引脚接地为低电平,再编译下载进入Keil的环境,程序能够被正常履行了。问题找到了。

关于开始的测验,硬件相同,软件相同,但是IAR能够正常运转,KEIL却不能履行,不解,能够IAR编译环境的设置比较智能。

问题2:调试进入HardFault_Handler函数

网上说了比方仓库溢出,内存溢出的原因,

对照上述办法未处理。查阅发现有可能是stm32L系列运用内部时钟HSI的原因。

stm32L低功耗的芯片在装备体系时钟之前,需求装备flash的拜访方法以ACC64以及LATENCY,还有内核可调电压的规模VOS[1:0]。不然的话,连最高频率32MHz都无法作为体系时钟。

转自:http://bbs.eeworld.com.cn/thread-490070-1-1.html

将下面几行代码添加到systeminit函数的最初。

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);

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/zhizao/347280.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部