1、 登录 | 注册Stephen_yu 的专栏 目录视图 摘要视图 订阅博客专家福利 公告:CSDN 博客积分系统升级 有奖试读/这个函数就不说了,问题不大I2C_Configuration();主要说下这个函数的内容,源码:#define I2C_BMP085 I2C1void I2C_Configuration(void)I2C_InitTypeDef I2C_InitStructure;GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);RCC_APB1Periph
2、ClockCmd(RCC_APB1Periph_I2C1,ENABLE);GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_I2C1);GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_I2C1);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;GPIO_Init
3、Structure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;GPIO_Init(GPIOB, I2C_DeInit(I2C_BMP085);I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;I2C_InitStructure.I2C_OwnAddress1 = 0xEE; /BMP085 地址I2C_InitStructure.I2C_Ack =
4、I2C_Ack_Enable; /ack enableI2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;I2C_InitStructure.I2C_ClockSpeed = 100000; /100kI2C_Cmd(I2C_BMP085, ENABLE);I2C_Init(I2C_BMP085, /I2C_AcknowledgeConfig(I2C_BMP085, ENABLE);开始在这个函数里面犯了个低级的错误,误将RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2
5、C1,ENABLE)写为RCC_AHB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE),这是在复制过程中容易出现的问题。结果会导致的问题就是程序一直停在 while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT);,这句话会出现在后面的 I2C 读函数I2C_Read 中。这个比较好理解,因为时钟没开,所以 F4 的 I2C 的寄存器都没有写进去, I2C 还没有开始工作。I2C_Read()函数的源码:char value2;uint8_t I2C_Read(uint8_t addr) while(
6、I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY);I2C_AcknowledgeConfig(I2C1, ENABLE);I2C_GenerateSTART(I2C1, ENABLE);while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT);I2C_Send7bitAddress(I2C1, 0xee, I2C_Direction_Transmitter);while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED);I2C
7、_SendData(I2C1, addr);while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED);I2C_GenerateSTART(I2C1, ENABLE);while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT);I2C_Send7bitAddress(I2C1, 0xee, I2C_Direction_Receiver);while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED)
8、;while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_RECEIVED); /* EV7 */value0 = I2C_ReceiveData(I2C1); I2C_AcknowledgeConfig(I2C1, DISABLE);I2C_GenerateSTOP(I2C1, ENABLE); while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_RECEIVED); /* EV7 */ value1 = I2C_ReceiveData(I2C1);/cal_data = value0 15;x2 =
9、 (mc 4;printf(“x1:%d, x2:%d, b5:%d, temp(*0.1):%d rn“,x1,x2,b5,temp);/read uncompensated pressureI2C_WriteOneByte(Open_I2C,ADDR_24LC02,0xf4,(0x3e + oss (8 - oss);printf(“press_reg %d rn“,press_reg);/下面计算公式要注意括号的使用,模棱两可的都给它用上,一开始我觉得有些地方应该可以不用,计算出的气压结果却是错的,后来加上括号就对了b6 = b5 - 4000;printf(“b6 %ld rn“,b6
10、);x1 = (b2 * (b6 * b6 ) 12) 11;printf(“x1 %ld rn“,x1);x2 = (ac2 * b6) 11;printf(“x2 %ld rn“,x2);x3 = x1 + x2;printf(“x3 %ld rn“,x3);b3 = (long)ac1 * 4 + x3) 13;printf(“x1 %ld rn“,x1);x2 = (b1 * (b6 * b6) 12) 16;printf(“x2 %ld rn“,x2);x3 = (x1 + x2 )+ 2) 2;printf(“x3 %ld rn“,x3);b4 = (ac4 * (unsigned
11、 long)(x3 + 32768) 15;printf(“b4 %ld rn“,b4);b7 = (unsigned long)press_reg - b3) * (50000 oss);printf(“b7 %ld rn“,b7);if(b7 8) * (pressure 8);printf(“x1 %ld rn“,x1);x1 = (x1 * 3038) 16;printf(“x1 %ld rn“,x1);x2 = (-7357 * pressure) 16;printf(“x2 %ld rn“,x2);pressure = pressure + (x1 + x2 + 3791) 4);
12、printf(“pressure %ld rn“,pressure);for(i=0; i200*3; i+)I2C_delay(200000);/delay 4.5ms 终端看到的打印:Read startac1=8361,ac2=-816,ac3=-14464,ac4=33064,ac5=25477,ac6=25325,b1=5498,b2=38,mb=-32768,mc=-11075,md=2432temp_reg 33455x1:6321, x2:-2591, b5:3730, temp(*0.1):233press_reg 33455b6 -270x1 0x2 107x3 107b3
13、 8388x1 476x2 1x3 119b4 33184b7 1253350000pressure 75539x1 87025x1 4034x2 -8480pressure 75498温度 2330.1=23.3 度气压为 75498Pa 上一篇 STM32F407的 UDP发送数据 下一篇 STM32 F207的 PWM输入捕获频率和占空比主题推荐stm32bmptypedef 源码工作猜你在找STM32 学习笔记(串口、IAP)stm32f407 之 ADC(操作寄存器)STM32F103 IIC 调试硬件 I2CSTemWin 如何启用 Multiple Buffering 功能c#中
14、转出 Excel 时碰到 Excel 的 COM 组件没有注册的问题解决方法Bugzilla 在 Windows 下巧妙安裝STM32 对内部 FLASH 读写接口函数USB/HID 设备报告描述符详解Delphi 图像处理 - 灰色浮雕查看评论9 楼 茶亦爽 2014-04-08 15:35 发表 回复楼主的程序有问题。8 楼 茶亦爽 2014-04-08 14:34 发表 回复你好,我测得气压数据更小,只有 45958,似乎不对啊!请指教。7 楼 tahir 2013-09-28 14:39 发表 回复Hi, unfortunately i dont know chinese, can y
15、ou send me full project to my mail ?嗨,不幸的是我不知道中國,你能送我完整的項目到我郵箱 ?The best greetingsTakhir abdullaev.Re: stephen_kl 2013-09-29 12:23 发表 回复回复 u012278035:邮件发不出去请到 http:/ 我的资源区下载6 楼 roma1141 2013-09-21 01:51 发表 回复对不起,请给原项目 BMP085 再次在这里的私人讯息,因为我没来 太谢谢你了,对不起Re: stephen_kl 2013-09-29 12:24 发表 回复回复 u01177587
16、9:邮件发不出去请到 http:/ 我的资源区下载Re: stephen_kl 2013-09-24 15:19 发表 回复回复 u011775879:你的邮箱地址是不是有问题,邮件发不出去5 楼 roma1141 2013-09-21 01:50 发表 回复对不起,请给原项目 BMP085 再次在这里的私人讯息,因为我没来 太谢谢你了,对不起。Re: roma1141 2013-09-21 01:53 发表 回复重复,我深表歉意4 楼 roma1141 2013-09-21 01:50 发表 回复对不起,请给原项目 BMP085 再次在这里的私人讯息,因为我没来 太谢谢你了,对不起。3 楼
17、roma1141 2013-08-22 00:13 发表 回复尊敬的于康龙请我甩开你的源代码 STM32F4 BMP085。对不起,我 - 俄罗斯,中国人不知道,我这样做,我不能为自己的智能家居了解传感器(BMP085)。我是新的 STM32/我的邮箱是:非常感谢!Dear 于康龙 please throw off me your source code stm32f4 bmp085. Im sorry, I - Russian, Chinese do not know, I do for myself smart home, I can not understand this sensor
18、(bmp085). Im new to the STM32 /my email is: Big thanks!Re: stephen_kl 2013-08-28 18:54 发表 回复回复 u011775879:已发2 楼 lyhjason 2013-07-25 16:18 发表 回复hi,您好!我的 I2C 读取 MPU6050 的,一直在死循环在 while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED),请问您研究出来怎么修正了吗?多谢赐教,QQ:1067815671Re: stephen_kl 201
19、3-08-28 18:54 发表 回复回复 lyhjason:发给你了1 楼 lynnet 2013-06-03 22:49 发表 回复你好,请问你测试的地点海拔高度是多少,我测出来的气压数据只有 55443,显然不对。一般海平面附近数据大致都是一千多一点,我用其它气压表测量的结果是 1032mPa;手工计算结果和程序结果是一致的。Re: stephen_kl 2013-08-28 18:51 发表 回复回复 lynnet:我是在南京测的,没有气压计,所以准确性也不敢保证您还没有登录,请 登录或 注册* 以上用户言论只代表其个人观点,不代表 CSDN 网站的观点或立场核心技术类目全部主题 Ha
20、doop AWS 移动游戏 Java Android iOS Swift 智能硬件Docker OpenStack VPN Spark ERP IE10Eclipse CRM JavaScript 数据库Ubuntu NFC WAP jQuery BI HTML5 Spring Apache .NET API HTML SDK IISFedora XML LBS Unity Splashtop UML components Windows Mobile Rails QEMU KDE Cassandra CloudStack FTCcoremail OPhone CouchBase 云计算iOS
21、6 Rackspace Web App SpringSide Maemo Compuware 大数据aptech PerlTornado Ruby Hibernate ThinkPHP HBase Pure Solr Angular Cloud Foundry Redis Scala Django Bootstrap个人资料stephen_klo 访问:113302 次o 积分:1721o 等级: o 排名:第 8863 名o 原创:31 篇o 转载:156 篇o 译文:0 篇o 评论:86 条链接o Essential Linux Device Driver笔记o Essential Lin
22、ux Device Driver翻译o 哥德巴赫猜想的 blogo 陈莉君o 中国源码网o 网卡技术 blogo developerworks 专区o 嵌入式 Linux 之我行文章搜索文章分类 LINUX 设备驱动 (28) STM32(23) windows 驱动(17) 内核(13) 基础知识(13) 嵌入式(23) 总线(CAN、RS485.)(2) 生活(3) 编程(5) 网络设备(20) 英语学习(1) 调试仿真-ADS1.2 ,MDK(0) 调试仿真-ADS1.2 (2) MDK(3) RT_thread 操作系统 (0) rt_thread(1) Android(16) 随手记
23、(14) linux video(1)文章存档 2014 年 10 月(1) 2014 年 09 月(2) 2014 年 08 月(5) 2014 年 07 月(1) 2014 年 06 月(2)展开评论排行 STM32F4 的 I2C 读取 BMP085 模块的温度和气压(16) mini210 开发板的 SPI 驱动的应用程序(13) error 65: access violation at 0x40021000 : no read permission(12) 亲子中心幼儿关于淘宝日本明治奶粉的真假(7) 微雪的 STM32F407 开发板+友善之背的 wifi 模块 SDWIFI-Y
24、S09 测试(6) 简单的套接字发送数据包(5) arm-none-linux-gnueabi-gcc 版本下载(4) windows 与虚拟机下的 socket 通信(3) linux3.0 内核移植问题记录 (3) STM32F407 的 UDP 发送数据(2)推荐文章最新评论 arm-none-linux-gnueabi-gcc 版本下载sky12125: 没有更高的版本了吗? error 65: access violation at 0x40021000 : no read permissionthereywb: 厉害啊楼主,问题解决了 Linux 下 SPI 驱动的移植和应用程序的
25、测试liufeifeivip: 谢谢分享 Linux 下 SPI 驱动的移植和应用程序的测试liufeifeivip: 我也测试完毕,谢谢 微雪的 STM32F407 开发板+友善之背的 wifi 模块 SDWIFI-YS09 测试stephen_kl: liverpoolsun:rtthread 论坛上有移植的包可以下载,拿过来修改下就可以了 微雪的 STM32F407 开发板+友善之背的 wifi 模块 SDWIFI-YS09 测试liverpoolsun: 最近也在用微雪 407 的板子调 RT thread,能不能把你移植的过程介绍一下,或者看一下你的这个例程. error 65: a
26、ccess violation at 0x40021000 : no read permissionliuqing32590: 我的和你修改后的配置是一样的,但是还是 会出现这样的错误 error 65: access violation at 0x40021000 : no read permissionyorkWorldDream: xinkexue:记得正点原子的视频中讲了配置,但是他也没说是为什么,这个就是调用的一个.dll,. STM32 spi 与 FPGA 的通信cwt501649197: 楼主 最近在也在做这个东东 ! 除了很多问题 可不可以加 QQ 私聊啊 501649197
27、 error 65: access violation at 0x40021000 : no read permission12345678912: 能在单片机上运行吗?阅读排行 error 65: access violation at 0x40021000 : no read permission(4802) RT-Thread 内核实验 1 任务的基本管理(3279) STM32F4 的 I2C 读取 BMP085 模块的温度和气压(2897) linux wifi 的配置和使用命令(2877) 火牛(STM32 ) 多路 ADC 采样数据经过 RS485 传输到另一块 ARM 板路虎(
28、LPC1768 )(2050) Win7 无线网卡开软 ap 的方法 | 建立 WIFI 热点 图文教程(2039) Linux 下 SPI 驱动的移植和应用程序的测试(1898) Keil MDK 编译 uc/OS-II 出现的警告和错误解决(1430) linux3.0 内核移植问题记录 (1408) 微雪的 STM32F407 开发板+友善之背的 wifi 模块 SDWIFI-YS09 测试(1364)公司简介| 招贤纳士 |广告服务|银行汇款帐号|联系方式|版权声明|法律顾问 |问题报告|合作伙伴| 论坛反馈网站客服 杂志客服 微博客服 400-600-2320京 ICP 证 070598 号北京创新乐知信息技术有限公司 版权所有江苏乐知网络技术有限公司 提供商务支持Copyright 1999-2014, CSDN.NET, All Rights Reserved 更多相关资源:stm32c