新手入门
- 积分
- 13
- 金钱
- 13
- 注册时间
- 2016-4-11
- 在线时间
- 141 小时
|
20金钱
我写的主函数:
int main(void)
{
delay_init() ;
DS18B20_Init();
while(1)
{
DS18B20_IO_OUT(); //SET PE1 OUTPUT
DS18B20_DQ_OUT=0;//PE1=0
delay_us(750);
DS18B20_DQ_OUT=1;//PE1=1
delay_us(15);
}
}
相关定义::
#define DS18B20_IO_IN() {GPIOE->CRL&=0XFFFFFF0F;GPIOE->CRL|=8<<4;}
#define DS18B20_IO_OUT() {GPIOE->CRL&=0XFFFFFF0F;GPIOE->CRL|=3<<4;}
#define DS18B20_DQ_OUT PEout(1)
#define DS18B20_DQ_IN PEin(1)
u8 DS18B20_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); //ê1ÄüPORTG¿úê±Öó
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOE, &GPIO_InitStructure);
GPIO_SetBits(GPIOE,GPIO_Pin_1);
}
示波器得到的PE1波形::
|
最佳答案
查看完整内容[请看2#楼]
有大神能解释下:为什么出现了1V这样的不确定电压,而且延时也不准确呀。 delay_us(a) 并不是延时a us 。我用示波器测量,发现延时了大约a*10 us。
|