我使用的是您的教学程序。我的18B20 DQ引脚是PE1所以我在定义中修改如下:
#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)
在 DS18B20_Init中也做了相应修改
在主函数中,我没有使用中断,是直接发送
我的是STM322F103连接SP3485转接232到串口调试助手
主程序如下:
#include "led.h"
#include "delay.h"
#include "lcd.h" //RS485
#include "sys.h"
#include "ds18b20.h"
int main(void)
{
delay_init() ;
LED_Init();
RS485_Init();
while(DS18B20_Init())
while(1)
{
short temperature;
temperature=DS18B20_Get_Temp();
RS485=1; //485发送使能
delay_ms(2);
USART_SendData(USART2,temperature);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
delay_ms(2);
}
delay_ms(10);
}
但是我接收到的数据是00
没有温度显示是为什么呢?
谢谢您了,我昨天开始就做了 就是不行。谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
帮帮忙吧!!谢谢!!!
谢谢您了!
不对,我现在发现,检测DS18B20结果是不存在,,,
while(DS18B20_Init())
{
GPIO_SetBits(GPIOD,GPIO_Pin_4);
delay_ms(100);
GPIO_ResetBits(GPIOD,GPIO_Pin_4);
delay_ms(100);
}
PD4连接LED。 我发现LED一直在闪烁。。。。。
一周热门 更多>