STM32串列埠實現1 wire(一)

2021-07-06 00:20:09 字數 2038 閱讀 8409

只需要將stm32的串列埠的tx線和18b20的dq相連線,通過4.7k上拉電阻讓tx線拉到3.3v即可(ps:就不貼圖了)。

/*

*配置串列埠2

*/void ds18b20_init()

只配置了tx管腳,使能單線半雙工模式(usart_halfduplexcmd函式)

/*

*復位18b20,

*返回0:找到裝置,裝置響應。

*返回1:沒有找到裝置,設定無響應

*/int ds18b20_reset()//復位18b20

while (usart_getflagstatus(usart2, usart_flag_rxne) == reset) //等待傳送完成

while(usart_getflagstatus(usart2, usart_flag_rxne) != reset)//等待收到資料,tx和rx內部連線,肯定能收到資料

usart_initstructure.usart_baudrate = 115200;//將波特率改為115200

usart_initstructure.usart_wordlength = usart_wordlength_8b;

usart_initstructure.usart_stopbits = usart_stopbits_1;

usart_initstructure.usart_parity = usart_parity_no;

usart_initstructure.usart_hardwareflowcontrol = usart_hardwareflowcontrol_none;

usart_initstructure.usart_mode = usart_mode_rx | usart_mode_tx;

usart_init(usart2, &usart_initstructure);

if(status == 0xf0)

return

1; else

return

0;}

void ds18b20_writebit(unsigned char bit)

while (usart_getflagstatus(usart2, usart_flag_rxne) == reset) //等待收到資料

usart_receivedata(usart2);

usart_clearflag(usart2,usart_flag_rxne);

}void ds18b20_writebyte(unsigned char

byte)

}

char ds18b20_readbit()//讀取一位資料

while (usart_getflagstatus(usart2, usart_flag_rxne) == reset) //等待傳輸完成

status = usart_receivedata(usart2);

usart_clearflag(usart2,usart_flag_rxne);

if(status == 0xff)

status = 1;

else

status = 0;

return status;

}char ds18b20_readbyte()

return status;

}

void ds18b20_start()

float ds18b20_gettemp()

else

t=1;//溫度為正

tem=th; //獲得高八位

tem<<=8;

tem+=tl;//獲得底八位

temp = (float)tem*0.0625;

if(t)return temp; //返回溫度值

else

return -temp;

}

STM32串列埠實驗

實驗階段1,定時器計時1s觸發中斷,在中斷中往外傳送資料 定時器設定為36000分頻,週期設定為2000,並開啟中斷,配置 如下 tim timebase struct.tim countermode tim countermode up tim timebase struct.tim clockd...

STM32 串列埠DMA(一)

今天調usart,資料在晶元內部用dma傳到串列埠快取,發現dma真的很好,很快,而且不消耗系統資源。只是在傳輸完的時候中斷的標誌置位。下面解釋一下程式。void dma configuration void 再弄幾個重要的語句。這裡是開始dma傳輸前的一些準備工作,將usart1模組設定成dma方...

STM32串列埠 DMA使用1

stm32串列埠 dma使用 stm32有5個串列埠資源 usart1,usart2,usart3及uart4,uart5 其中3個usart 通用同步 非同步收 髮器universalsynchronous asynchronous receiver and transmitter 2個uart ...