OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5350|回复: 4

参照18B20的试验程序,有问题请教下。

[复制链接]

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2011-11-29
在线时间
0 小时
发表于 2013-3-19 10:13:33 | 显示全部楼层 |阅读模式

1wire为PD12
这些宏控制定义,用库函数版本可以。但是有时间会读错值,不知道是否是时序不严,我想把它改成寄存器操作版本。
#define DS18B20_IO_IN     {DS18B20_IODIR(0);}
#define DS18B20_IO_OUT  {DS18B20_IODIR(1);}

#define DS18B20_DQ_IN             (GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_12))        //input
#define DS18B20_DQ_H         (GPIO_SetBits(GPIOD,GPIO_Pin_12))
#define DS18B20_DQ_L         (GPIO_ResetBits(GPIOD,GPIO_Pin_12))

下面的寄存器操作版本无效。
#define DS18B20_IO_IN     {GPIOD->CRH&=0XFFF0FFFF;GPIOD->CRH|=8<<4;}
#define DS18B20_IO_OUT  {GPIOD->CRH&=0XFFF0FFFF;GPIOD->CRH|=3<<4;}
这2个定义换下面的也试过
#define DS18B20_IO_IN     {GPIOD->CRH&=0XFFF0FFFF;GPIOD->CRH|=4<<4;}
#define DS18B20_IO_OUT  {GPIOD->CRH&=0XFFF0FFFF;GPIOD->CRH|=7<<4;}

#define DS18B20_DQ_IN             (PDin(12))        //input
#define DS18B20_DQ_H         (PDout(12)=1)
#define DS18B20_DQ_L         (PDout(12)=0)

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-19 10:15:50 | 显示全部楼层
{GPIOD->CRH&=0XFFF0FFFF;GPIOD->CRH|=8<<16;}

其他的参考着改.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2011-11-29
在线时间
0 小时
 楼主| 发表于 2013-3-19 10:21:17 | 显示全部楼层
其他的已经改了,用库函数操作的方式,已经能正常读出温度。10次可能有一次读错。应该是时序还有点问题。
但改成寄存器的宏定义,初始化都通不过。
帮忙看下这个宏定义有问题吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-19 12:39:52 | 显示全部楼层
检查延时.
宏定义有问题的话,你一次都没法成功读取的!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2011-11-29
在线时间
0 小时
 楼主| 发表于 2013-3-19 14:45:26 | 显示全部楼层
回复【2楼】正点原子:
{GPIOD->CRH&=0XFFF0FFFF;GPIOD->CRH|=8<<16;} 其他的参考着改.
---------------------------------
多谢,好了,寄存器移位操作看错了,原来要移位16bit.
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-23 12:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表