-
大小: 346KB文件類型: .rar金幣: 2下載: 0 次發布日期: 2021-06-18
- 語言: 其他
- 標簽: bmp280_STM32??
資源簡介
bmp280在STM32F10X上的完整程序,已測試沒有問題。
程序功能:1)基于STM32F103通過IIC連接BMP280。
2)可以實時測試溫度、氣壓、高度。
3)可以在LCD屏上顯示各個數據。
4)內置多個stm32相關外設驅動,可按需調用。

代碼片段和文件信息
#include?“24cxx.h“?
#include?“SysTick.h“
////////////////////////////////////////////////////////////////////////////////// ?
//初始化IIC接口
void?AT24CXX_Init(void)
{
IIC_Init();
}
//在AT24CXX指定地址讀出一個數據
//ReadAddr:開始讀數的地址??
//返回值??:讀到的數據
u8?AT24CXX_ReadOneByte(u16?ReadAddr)
{ ??
u8?temp=0; ?? ???? ?
??IIC_Start();??
if(EE_TYPE>AT24C16)
{
IIC_Send_Byte(0XA0); ???//發送寫命令
IIC_Wait_Ack();
IIC_Send_Byte(ReadAddr>>8);//發送高地址
IIC_Wait_Ack(); ?
}else?IIC_Send_Byte(0XA0+((ReadAddr/256)<<1));???//發送器件地址0XA0寫數據? ?
IIC_Wait_Ack();?
??IIC_Send_Byte(ReadAddr%256);???//發送低地址
IIC_Wait_Ack(); ????
IIC_Start();?? ? ???
IIC_Send_Byte(0XA1);???????????//進入接收模式 ???
IIC_Wait_Ack(); ?
??temp=IIC_Read_Byte(0); ???
??IIC_Stop();????????????????????//產生一個停止條件 ????
return?temp;
}
//在AT24CXX指定地址寫入一個數據
//WriteAddr??:寫入數據的目的地址????
//DataToWrite:要寫入的數據
void?AT24CXX_WriteOneByte(u16?WriteAddru8?DataToWrite)
{ ??? ?? ???? ?
??IIC_Start();??
if(EE_TYPE>AT24C16)
{
IIC_Send_Byte(0XA0); ????//發送寫命令
IIC_Wait_Ack();
IIC_Send_Byte(WriteAddr>>8);//發送高地址
? }else
{
IIC_Send_Byte(0XA0+((WriteAddr/256)<<1));???//發送器件地址0XA0寫數據?
} ?
IIC_Wait_Ack(); ???
??IIC_Send_Byte(WriteAddr%256);???//發送低地址
IIC_Wait_Ack();? ? ?? ???
IIC_Send_Byte(DataToWrite);?????//發送字節 ???
IIC_Wait_Ack();?? ???? ???
??IIC_Stop();//產生一個停止條件?
delay_ms(10); ?
}
//在AT24CXX里面的指定地址開始寫入長度為Len的數據
//該函數用于寫入16bit或者32bit的數據.
//WriteAddr??:開始寫入的地址??
//DataToWrite:數據數組首地址
//Len????????:要寫入數據的長度24
void?AT24CXX_WriteLenByte(u16?WriteAddru32?DataToWriteu8?Len)
{??
u8?t;
for(t=0;t {
AT24CXX_WriteOneByte(WriteAddr+t(DataToWrite>>(8*t))&0xff);
} ????
}
//在AT24CXX里面的指定地址開始讀出長度為Len的數據
//該函數用于讀出16bit或者32bit的數據.
//ReadAddr???:開始讀出的地址?
//返回值?????:數據
//Len????????:要讀出數據的長度24
u32?AT24CXX_ReadLenByte(u16?ReadAddru8?Len)
{??
u8?t;
u32?temp=0;
for(t=0;t {
temp<<=8;
temp+=AT24CXX_ReadOneByte(ReadAddr+Len-t-1);? ? ???
}
return?temp; ????
}
//檢查AT24CXX是否正常
//這里用了24XX的最后一個地址(255)來存儲標志字.
//如果用其他24C系列這個地址要修改
//返回1:檢測失敗
//返回0:檢測成功
u8?AT24CXX_Check(void)
{
u8?temp;
temp=AT24CXX_ReadOneByte(255);//避免每次開機都寫AT24CXX ???
if(temp==0X55)return?0; ???
else//排除第一次初始化的情況
{
AT24CXX_WriteOneByte(2550X55);
??temp=AT24CXX_ReadOneByte(255); ??
if(temp==0X55)return?0;
}
return?1; ??
}
//在AT24CXX里面的指定地址開始讀出指定個數的數據
//ReadAddr?:開始讀出的地址?對24c02為0~255
//pBuffer??:數據數組首地址
//NumToRead:要讀出數據的個數
void?AT24CXX_Read(u16?ReadAddru8?*pBufferu16?NumToRead)
{
while(NumToRead)
{
*pBuffer++=AT24CXX_ReadOneByte(ReadAddr++);
NumToRead--;
}
}??
//在AT24CXX里面的指定地址開始寫入指定個數的數據
//WriteAddr?:開始寫入的地址?對24c02為0~255
//pBuffer???:數據數組首地址
//NumToWrite:要寫入數據的個數
void?AT24CXX_Write(u16?WriteAddru8?*pBufferu16?NumToWrite)
{
while(NumToWrite--)
{
AT24CXX_WriteOneByte(WriteAddr*pBuffer
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3453??2018-05-05?15:33??BMP280_IIC_ok\APP\24Cxx\24cxx.c
?????文件???????1530??2012-09-16?16:21??BMP280_IIC_ok\APP\24Cxx\24cxx.h
?????文件???????2548??2017-03-22?16:13??BMP280_IIC_ok\APP\adc\adc.c
?????文件????????128??2016-09-10?09:53??BMP280_IIC_ok\APP\adc\adc.h
?????文件???????3030??2017-03-22?15:28??BMP280_IIC_ok\APP\adc_temp\adc_temp.c
?????文件????????172??2016-09-12?11:44??BMP280_IIC_ok\APP\adc_temp\adc_temp.h
?????文件????????508??2017-03-17?17:20??BMP280_IIC_ok\APP\beep\beep.c
?????文件????????260??2017-03-17?17:19??BMP280_IIC_ok\APP\beep\beep.h
?????文件??????13594??2017-07-25?20:22??BMP280_IIC_ok\APP\bmp280\bm280.c
?????文件???????8609??2017-07-25?20:14??BMP280_IIC_ok\APP\bmp280\bm280.h
?????文件???????6709??2018-05-13?14:29??BMP280_IIC_ok\APP\bmp280\bmp280.c
?????文件???????1601??2018-05-13?14:29??BMP280_IIC_ok\APP\bmp280\bmp280.h
?????文件???????4710??2017-03-24?16:43??BMP280_IIC_ok\APP\can\can.c
?????文件????????304??2017-03-24?16:38??BMP280_IIC_ok\APP\can\can.h
?????文件???????1345??2017-03-22?15:36??BMP280_IIC_ok\APP\dac\dac.c
?????文件????????114??2016-09-12?15:48??BMP280_IIC_ok\APP\dac\dac.h
?????文件???????2230??2017-03-22?17:18??BMP280_IIC_ok\APP\dma\dma.c
?????文件????????243??2017-03-22?17:15??BMP280_IIC_ok\APP\dma\dma.h
?????文件???????6324??2017-03-24?15:49??BMP280_IIC_ok\APP\ds18b20\ds18b20.c
?????文件????????739??2017-03-24?15:46??BMP280_IIC_ok\APP\ds18b20\ds18b20.h
?????文件???????4681??2017-03-20?13:28??BMP280_IIC_ok\APP\exti\exti.c
?????文件?????????97??2016-08-26?10:59??BMP280_IIC_ok\APP\exti\exti.h
?????文件???????9461??2017-03-24?17:26??BMP280_IIC_ok\APP\flash\flash.c
?????文件???????1844??2017-03-24?17:27??BMP280_IIC_ok\APP\flash\flash.h
?????文件???????2766??2017-03-24?16:03??BMP280_IIC_ok\APP\hwjs\hwjs.c
?????文件????????176??2016-09-21?09:08??BMP280_IIC_ok\APP\hwjs\hwjs.h
?????文件???????6252??2018-05-13?08:52??BMP280_IIC_ok\APP\iic\myiic.c
?????文件???????1065??2018-05-13?09:06??BMP280_IIC_ok\APP\iic\myiic.h
?????文件???????3507??2017-03-22?14:32??BMP280_IIC_ok\APP\input\input.c
?????文件????????216??2017-03-22?14:21??BMP280_IIC_ok\APP\input\input.h
............此處省略145個文件信息
- 上一篇:樹莓派小車自動駕駛完整源代碼
- 下一篇:MDKCM525 可執行庫文件
評論
共有 條評論