金牌会员
 
- 积分
- 1544
- 金钱
- 1544
- 注册时间
- 2012-4-9
- 在线时间
- 80 小时
|

楼主 |
发表于 2013-3-6 17:21:51
|
显示全部楼层
回复【2楼】正点原子:
---------------------------------
我的代码只是改了IO口而已,其他部分检查过了,完全一样,还是不行。
部分代码:
/*******DS18B20.h*******/
//IO方向设置
#define DS18B20_IO_IN() {GPIOB->CRL&=0XFFFFFF0F;GPIOB->CRL|=8<<1;}
#define DS18B20_IO_OUT() {GPIOB->CRL&=0XFFFFFF0F;GPIOB->CRL|=3<<1;}
//IO操作函数
#define DS18B20_DQ_OUT  Bout(1) //数据端口 PB1
#define DS18B20_DQ_IN   Bin(1) //数据端口 PB1
/*******DS18B20.c*******/
u8 DS18B20_Init(void)
{
RCC->APB2ENR|=1<<3; //使能PORTB口时钟
GPIOB->CRL&=0XFFFFFF0F;//PORTB.1 推挽输出
GPIOB->CRL|=0X00000030;
GPIOB->ODR|=1<<1; //输出1
DS18B20_Rst();
return DS18B20_Check();
}
main函数中就在死循环中不停地打印出temp的值,但还是得不到正确的数字,请问我还有哪些地方需要注意和检查? |
|