基于51单片机i2c多字节的读写.doc
《基于51单片机i2c多字节的读写.doc》由会员分享,可在线阅读,更多相关《基于51单片机i2c多字节的读写.doc(2页珍藏版)》请在三一文库上搜索。
1、基于51单片机i2c多字节的读写使用Keil的编译环境下载,确实能够下载,但是入口的地址是如下黄色的那行显示所示,如果单步执行(F11)或全速运行(F5),程序始终在原位置不动(0x1FFF4252),如果强制的将PC指针的值和SP的值修改为0x8000000与0x2000000,然后在点击运行,则能够跑到main()函数,再全速运行,能够看到客户板子上的LED灯的闪烁。但是如果不强制修改PC和SP指针的值,则程序不执行。所以问题就变成为什么程序下载进去后的地址是0x1FFF4252?0x1FFF4252又是什么地址呢?查阅相应的手册,发现0x1FFF4252是处在了Systemmemory区
2、域。用万用表测量了客户板上的Boot0引脚的电平,发现电平不对,达到1.6V,这么高的电平可以被视为高电平了。对照客户的原理图,原来Boot有上拉和下拉的电阻,焊接的时候将这两个电阻都焊接上去了,去掉上拉电阻,使的BOOT0的引脚接地为低电平,再编译下载进入Keil的环境,程序能够被正常执行了。问题找到了。对于最初的测试,硬件相同,软件相同,然而IAR可以正常运行,KEIL却不能执行,不解,可以IAR编译环境的设置比较智能。问题2:调试进入HardFault_Handler函数网上说了比如堆栈溢出,内存溢出的原因,对照上述方法未解决。查阅发现有可能是stm32L系列使用内部时钟HSI的原因。s
3、tm32L低功耗的芯片在配置系统时钟之前,需要配置flash的访问方式以ACC64以及LATENCY,还有内核可调电压的范围VOS1:0。否则的话,连最高频率32MHz都无法作为系统时钟。转自:http:/bbs.eeworld/thread-490070-1-1l将下面几行代码添加到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);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 i2c 多字 读写
链接地址:https://www.31doc.com/p-3408971.html