久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
多個DS18B20同時工作的STM32源程序 GPIO輸入輸出
[打印本頁]
作者:
44556677
時間:
2017-11-10 15:21
標題:
多個DS18B20同時工作的STM32源程序 GPIO輸入輸出
一個單片機帶4個18b20工作,數據通過串口輸出
注意:需要先把DS18B20接到 U16 這個接口,板子并沒有板載DS18B20
實驗現象:1、串口打印出序列號和溫度
2、在打印的同時,D3閃爍
GPIO寄存器描述
1、端口配置低寄存器(GPIOx_CRL)(x = A...E)
2、端口配置高寄存器(GPIOx_CRH)(x = A...E)
3、端口輸入數據寄存器(GPIOx_IDR)(x = A...E)
這些位為只讀并只能以字(16位)的形式讀出。讀出的值為對應I/O口的狀態。
4、端口輸出數據寄存器(GPIOx_ODR)(x = A...E)
只能以字(16bit)的形式操作,復位值全是0。寫0即輸出0,寫1即輸出1。
5、端口位設置/清除寄存器(GPIOx_BSRR)(x = A...E)
高16bit寫1用于清0,低16bit寫1用于置位,同時寫1的話低16bi有效。
6、端口位清除寄存器(GPIOx_BRR)(x = A...E)
低16位寫1用于置位。
7、端口配置鎖定寄存器(GPIOx_LCKR)(x = A...E)
單片機源程序如下:
/**
******************************************************************************
* @file main.c
* @author fire
* @version V1.0
* @brief systick系統定時器
******************************************************************************
*
******************************************************************************
*/
#include "stm32f10x.h"
#include "bsp_SysTick.h"
#include "bsp_led.h"
#include "bsp_usart1.h"
#include "bsp_ds18b20.h"
/**
* @brief 主函數
* @param 無
* @retval 無
*/
int main(void)
{
uint8_t uc1, ucDs18b20Id1 [ 8 ];
uint8_t uc2, ucDs18b20Id2 [ 8 ];
uint8_t uc3, ucDs18b20Id3 [ 8 ];
uint8_t uc4, ucDs18b20Id4 [ 8 ];
/* 配置SysTick 為1us中斷一次 */
SysTick_Init();
USARTx_Config(); //初始化串口1
printf("\r\n this is a ds18b20 test demo \r\n");
while( 1 )
{
while( DS18B20_Init() )
printf("\r\n no ds18b20 exit \r\n");
printf("\r\n ds18b20 exit \r\n");
DS18B20_ReadId ( ucDs18b20Id1 ); // 讀取 DS18B20 的序列號
//printf("\r\nDS18B20的序列號是: 0x");
//for ( uc1 = 0; uc1 < 8; uc1 ++ ) // 打印 DS18B20 的序列號 1
//printf ( "%.2x", ucDs18b20Id1 [ uc1 ] );
printf ( "\r\n獲取傳感器一的溫度: %.1f\r\n", DS18B20_GetTemp_SkipRom ( ) ); // 打印通過 DS18B20 序列號獲取的溫度值
Delay_ms(1000); /* 1s 讀取一次溫度值 */
while( DS18B20_Init2() )
DS18B20_ReadId2 ( ucDs18b20Id2 ); // 讀取 DS18B20 的序列號
//printf("\r\nDS18B20的序列號是: 0x");
//for ( uc2 = 0; uc2 < 8; uc2 ++ ) // 打印 DS18B20 的序列號 2
//printf ( "%.2x", ucDs18b20Id2 [ uc2 ] );
printf ( "\r\n獲取傳感器二的的溫度: %.1f\r\n", DS18B20_GetTemp_SkipRom2 ( ) ); // 打印通過 DS18B20 序列號獲取的溫度值
Delay_ms(1000); /* 1s 讀取一次溫度值 */
while( DS18B20_Init3() )
DS18B20_ReadId3 ( ucDs18b20Id3 ); // 讀取 DS18B20 的序列號
//rintf("\r\nDS18B20的序列號是: 0x");
//for ( uc3 = 0; uc3 < 8; uc3 ++ ) // 打印 DS18B20 的序列號 3
//printf ( "%.2x", ucDs18b20Id3 [ uc3 ] );
printf ( "\r\n獲取傳感器三的溫度: %.1f\r\n", DS18B20_GetTemp_SkipRom3 ( ) ); // 打印通過 DS18B20 序列號獲取的溫度值
Delay_ms(1000); /* 1s 讀取一次溫度值 */
while( DS18B20_Init4() )
DS18B20_ReadId4 ( ucDs18b20Id4 ); // 讀取 DS18B20 的序列號
//printf("\r\nDS18B20的序列號是: 0x");
//for ( uc4 = 0; uc4 < 8; uc4 ++ ) // 打印 DS18B20 的序列號 4
//printf ( "%.2x", ucDs18b20Id4 [ uc4 ] );
printf ( "\r\n獲取傳感器四的溫度: %.1f\r\n", DS18B20_GetTemp_SkipRom4 ( ) ); // 打印通過 DS18B20 序列號獲取的溫度值
Delay_ms(1000); /* 1s 讀取一次溫度值 */
}
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
GPIO輸入輸出—DS18B20_多_好.rar
(332.78 KB, 下載次數: 88)
2017-11-10 21:24 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
wcy1223
時間:
2017-12-2 21:11
4個ds18b20要怎么接,我找不到U16
作者:
三觀殘存
時間:
2018-5-14 12:04
好像對寄存器不太熟悉
作者:
poisonbee
時間:
2021-9-24 09:59
現在的你看你當初寫的代碼是不是想笑
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
一级毛片视频免费观看
|
欧美成人精品一区二区三区
|
亚洲精品一
|
91精品国产高清一区二区三区
|
日韩av一区二区在线观看
|
久久久久一区二区三区四区
|
香蕉大人久久国产成人av
|
人人草天天草
|
日韩视频在线一区
|
一二三在线视频
|
99久久婷婷国产综合精品电影
|
国产一区欧美
|
久久久久久美女
|
性高朝久久久久久久3小时 av一区二区三区四区
|
亚洲成人精品久久
|
欧洲尺码日本国产精品
|
日韩中文字幕2019
|
东京久久
|
免费美女网站
|
久草热播
|
久久国产精品精品国产色婷婷
|
久久久久亚洲精品中文字幕
|
国产成人一区在线
|
午夜视频免费在线观看
|
欧美中文一区
|
久草网址
|
亚洲精品欧美一区二区三区
|
中文字幕一区二区三区四区五区
|
欧美一区二区成人
|
亚洲精品一区二区三区蜜桃久
|
久久69精品久久久久久国产越南
|
国产伦精品一区二区三区照片91
|
男人天堂网av
|
亚洲精品视频一区二区三区
|
另类在线
|
中文字幕一区在线观看视频
|
日日干天天干
|
亚洲国产精品成人久久久
|
av特级毛片
|
亚洲男女视频在线观看
|
天天狠狠
|