亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
STM32單片機+SHT30溫濕度計程序PCB文件 UART輸出
[打印本頁]
作者:
liqichuan6
時間:
2019-6-20 16:43
標(biāo)題:
STM32單片機+SHT30溫濕度計程序PCB文件 UART輸出
挺不錯的資料,已經(jīng)量產(chǎn),對制作溫濕度計的很有幫助
如果您需要再次燒錄,請按此HEX文件進行燒錄即可,芯片的Option選型按默認(rèn)配置即可。
演示,燒錄文件STM32F0XX_MD.HEX,HEX格式)放置在這個目錄下面:
...\Project\SHT30\EWARM\STM32F0XX_MD(STM32F0x1xx)\Exe\
燒錄工具一般用 ST-LINK/V2, 或者J-LINK都可以!
Altium Designer畫的PCB圖如下:(51hei附件中可下載工程文件)
0.png
(18.08 KB, 下載次數(shù): 66)
下載附件
2019-6-21 02:58 上傳
單片機源程序如下:
//==============================================================================
// S E N S I R I O N AG, Laubisruetistr. 44, CH-8712 Staefa, Switzerland
//==============================================================================
// Project : SHT3x Sample Code (V1.0)
// File : sht3x.c (V1.0)
// Author : RFU
// Date : 16-Jun-2014
// Controller: STM32F100RB
// IDE : 礦ision V4.71.2.0
// Compiler : Armcc
// Brief : Sensor Layer: Implementation of functions for sensor access.
//==============================================================================
//-- Includes ------------------------------------------------------------------
#include "sht3x.h"
#include "i2c_hal.h"
//-- Defines -------------------------------------------------------------------
// CRC
#define POLYNOMIAL 0x131 // P(x) = x^8 + x^5 + x^4 + 1 = 100110001
//------------------------------------------------------------------------------
// IO-Pins /* -- adapt the defines for your uC -- */
//------------------------------------------------------------------------------
// Reset on port B, bit 12
#define RESET_LOW() (GPIOB->BSRR = 0x10000000) // set Reset to low
#define RESET_HIGH() (GPIOB->BSRR = 0x00001000) // set Reset to high
// Alert on port B, bit 10
#define ALERT_READ (GPIOB->IDR & 0x0400) // read Alert
//------------------------------------------------------------------------------
//-- Global variables ----------------------------------------------------------
u8t _i2cWriteHeader;
u8t _i2cReadHeader;
//==============================================================================
void SHT3X_Init(u8t i2cAdr){ /* -- adapt the init for your uC -- */
//==============================================================================
// init I/O-pins
RCC->APB2ENR |= 0x00000008; // I/O port B clock enabled
// Alert on port B, bit 10
GPIOB->CRH &= 0xFFFFF0FF; // set floating input for Alert-Pin
GPIOB->CRH |= 0x00000400; //
// Reset on port B, bit 12
GPIOB->CRH &= 0xFFF0FFFF; // set push-pull output for Reset pin
GPIOB->CRH |= 0x00010000; //
RESET_LOW();
I2c_Init(); // init I2C
SHT3X_SetI2cAdr(i2cAdr);
// release reset
RESET_HIGH();
}
//==============================================================================
void SHT3X_SetI2cAdr(u8t i2cAdr){
//==============================================================================
_i2cWriteHeader = i2cAdr << 1;
_i2cReadHeader = _i2cWriteHeader | 0x01;
}
//==============================================================================
etError SHT3x_ReadSerialNumber(u32t *serialNbr){
//==============================================================================
etError error; // error code
u16t serialNumWords[2];
error = SHT3X_StartWriteAccess();
// write "read serial number" command
error |= SHT3X_WriteCommand(CMD_READ_SERIALNBR);
// if no error, start read access
if(error == NO_ERROR) error = SHT3X_StartReadAccess();
// if no error, read first serial number word
if(error == NO_ERROR) error = SHT3X_Read2BytesAndCrc(&serialNumWords[0], ACK, 100);
// if no error, read second serial number word
if(error == NO_ERROR) error = SHT3X_Read2BytesAndCrc(&serialNumWords[1], NACK, 0);
SHT3X_StopAccess();
// if no error, calc serial number as 32-bit integer
if(error == NO_ERROR)
{
*serialNbr = (serialNumWords[0] << 16) | serialNumWords[1];
}
return error;
}
//==============================================================================
etError SHT3X_ReadStatus(u16t *status){
//==============================================================================
etError error; // error code
error = SHT3X_StartWriteAccess();
// if no error, write "read status" command
if(error == NO_ERROR) error = SHT3X_WriteCommand(CMD_READ_STATUS);
// if no error, start read access
if(error == NO_ERROR) error = SHT3X_StartReadAccess();
// if no error, read status
if(error == NO_ERROR) error = SHT3X_Read2BytesAndCrc(status, NACK, 0);
SHT3X_StopAccess();
return error;
}
//==============================================================================
etError SHT3X_ClearAllAlertFlags(void){
//==============================================================================
etError error; // error code
error = SHT3X_StartWriteAccess();
// if no error, write clear status register command
if(error == NO_ERROR) error = SHT3X_WriteCommand(CMD_CLEAR_STATUS);
SHT3X_StopAccess();
return error;
}
//==============================================================================
etError SHT3X_GetTempAndHumi(ft *temp,
ft *humi,
etRepeatab repeatab,
etMode mode,
u8t timeout){
//==============================================================================
etError error;
switch(mode)
{
case MODE_CLKSTRETCH: // get temperature with clock stretching mode
error = SHT3X_GetTempAndHumiClkStretch(temp, humi, repeatab, timeout); break;
case MODE_POLLING: // get temperature with polling mode
error = SHT3X_GetTempAndHumiPolling(temp, humi, repeatab, timeout); break;
default:
error = PARM_ERROR; break;
}
return error;
}
//==============================================================================
etError SHT3X_GetTempAndHumiClkStretch(ft *temp,
ft *humi,
etRepeatab repeatab,
u8t timeout){
//==============================================================================
etError error; // error code
u16t rawValueTemp; // temperature raw value from sensor
u16t rawValueHumi; // humidity raw value from sensor
error = SHT3X_StartWriteAccess();
// if no error ...
if(error == NO_ERROR)
{
// start measurement in clock stretching mode
// use depending on the required repeatability, the corresponding command
switch(repeatab)
{
case REPEATAB_LOW: error = SHT3X_WriteCommand(CMD_MEAS_CLOCKSTR_L); break;
case REPEATAB_MEDIUM: error = SHT3X_WriteCommand(CMD_MEAS_CLOCKSTR_M); break;
case REPEATAB_HIGH: error = SHT3X_WriteCommand(CMD_MEAS_CLOCKSTR_H); break;
default: error = PARM_ERROR; break;
}
}
// if no error, start read access
if(error == NO_ERROR) error = SHT3X_StartReadAccess();
// if no error, read temperature raw values
if(error == NO_ERROR) error = SHT3X_Read2BytesAndCrc(&rawValueTemp, ACK, timeout);
// if no error, read humidity raw values
if(error == NO_ERROR) error = SHT3X_Read2BytesAndCrc(&rawValueHumi, NACK, 0);
SHT3X_StopAccess();
// if no error, calculate temperature in 癈 and humidity in %RH
if(error == NO_ERROR)
{
*temp = SHT3X_CalcTemperature(rawValueTemp);
*humi = SHT3X_CalcHumidity(rawValueHumi);
}
return error;
}
//==============================================================================
etError SHT3X_GetTempAndHumiPolling(ft *temp,
ft *humi,
etRepeatab repeatab,
u8t timeout){
//==============================================================================
etError error; // error code
u16t rawValueTemp; // temperature raw value from sensor
u16t rawValueHumi; // humidity raw value from sensor
error = SHT3X_StartWriteAccess();
// if no error ...
if(error == NO_ERROR)
{
// start measurement in polling mode
// use depending on the required repeatability, the corresponding command
switch(repeatab)
{
case REPEATAB_LOW: error = SHT3X_WriteCommand(CMD_MEAS_POLLING_L); break;
case REPEATAB_MEDIUM: error = SHT3X_WriteCommand(CMD_MEAS_POLLING_M); break;
case REPEATAB_HIGH: error = SHT3X_WriteCommand(CMD_MEAS_POLLING_H); break;
default: error = PARM_ERROR; break;
}
}
// if no error, wait until measurement ready
if(error == NO_ERROR)
{
// poll every 1ms for measurement ready until timeout
while(timeout--)
{
// check if the measurement has finished
error = SHT3X_StartReadAccess();
// if measurement has finished -> exit loop
if(error == NO_ERROR) break;
// delay 1ms
DelayMicroSeconds(1000);
}
// check for timeout error
if(timeout == 0) error = TIMEOUT_ERROR;
}
// if no error, read temperature and humidity raw values
if(error == NO_ERROR)
{
error |= SHT3X_Read2BytesAndCrc(&rawValueTemp, ACK, 0);
error |= SHT3X_Read2BytesAndCrc(&rawValueHumi, NACK, 0);
}
SHT3X_StopAccess();
// if no error, calculate temperature in 癈 and humidity in %RH
if(error == NO_ERROR)
{
*temp = SHT3X_CalcTemperature(rawValueTemp);
*humi = SHT3X_CalcHumidity(rawValueHumi);
}
return error;
}
//==============================================================================
etError SHT3X_StartPeriodicMeasurment(etRepeatab repeatab,
etFrequency freq){
//==============================================================================
etError error; // error code
error = SHT3X_StartWriteAccess();
// if no error, start periodic measurement
if(error == NO_ERROR)
{
// use depending on the required repeatability and frequency,
// the corresponding command
switch(repeatab)
{
case REPEATAB_LOW: // low repeatability
switch(freq)
{
case FREQUENCY_HZ5: // low repeatability, 0.5 Hz
error |= SHT3X_WriteCommand(CMD_MEAS_PERI_05_L); break;
case FREQUENCY_1HZ: // low repeatability, 1.0 Hz
error |= SHT3X_WriteCommand(CMD_MEAS_PERI_1_L); break;
case FREQUENCY_2HZ: // low repeatability, 2.0 Hz
error |= SHT3X_WriteCommand(CMD_MEAS_PERI_2_L); break;
case FREQUENCY_4HZ: // low repeatability, 4.0 Hz
error |= SHT3X_WriteCommand(CMD_MEAS_PERI_4_L); break;
case FREQUENCY_10HZ: // low repeatability, 10.0 Hz
error |= SHT3X_WriteCommand(CMD_MEAS_PERI_10_L); break;
default:
error |= PARM_ERROR; break;
}
break;
case REPEATAB_MEDIUM: // medium repeatability
switch(freq)
{
case FREQUENCY_HZ5: // medium repeatability, 0.5 Hz
error |= SHT3X_WriteCommand(CMD_MEAS_PERI_05_M); break;
case FREQUENCY_1HZ: // medium repeatability, 1.0 Hz
error |= SHT3X_WriteCommand(CMD_MEAS_PERI_1_M); break;
case FREQUENCY_2HZ: // medium repeatability, 2.0 Hz
error |= SHT3X_WriteCommand(CMD_MEAS_PERI_2_M); break;
case FREQUENCY_4HZ: // medium repeatability, 4.0 Hz
error |= SHT3X_WriteCommand(CMD_MEAS_PERI_4_M); break;
case FREQUENCY_10HZ: // medium repeatability, 10.0 Hz
error |= SHT3X_WriteCommand(CMD_MEAS_PERI_10_M); break;
default:
error |= PARM_ERROR; break;
}
break;
case REPEATAB_HIGH: // high repeatability
switch(freq)
{
case FREQUENCY_HZ5: // high repeatability, 0.5 Hz
error |= SHT3X_WriteCommand(CMD_MEAS_PERI_05_H); break;
case FREQUENCY_1HZ: // high repeatability, 1.0 Hz
error |= SHT3X_WriteCommand(CMD_MEAS_PERI_1_H); break;
case FREQUENCY_2HZ: // high repeatability, 2.0 Hz
error |= SHT3X_WriteCommand(CMD_MEAS_PERI_2_H); break;
case FREQUENCY_4HZ: // high repeatability, 4.0 Hz
error |= SHT3X_WriteCommand(CMD_MEAS_PERI_4_H); break;
case FREQUENCY_10HZ: // high repeatability, 10.0 Hz
error |= SHT3X_WriteCommand(CMD_MEAS_PERI_10_H); break;
default:
error |= PARM_ERROR; break;
}
break;
default:
error |= PARM_ERROR; break;
}
}
SHT3X_StopAccess();
return error;
}
//==============================================================================
etError SHT3X_ReadMeasurementBuffer(ft *temp, ft *humi){
//==============================================================================
etError error; // error code
u16t rawValueTemp; // temperature raw value from sensor
u16t rawValueHumi; // humidity raw value from sensor
error = SHT3X_StartWriteAccess();
// if no error, read measurements
if(error == NO_ERROR) error = SHT3X_WriteCommand(CMD_FETCH_DATA);
if(error == NO_ERROR) error = SHT3X_StartReadAccess();
if(error == NO_ERROR) error = SHT3X_Read2BytesAndCrc(&rawValueTemp, ACK, 0);
if(error == NO_ERROR) error = SHT3X_Read2BytesAndCrc(&rawValueHumi, NACK, 0);
// if no error, calculate temperature in 癈 and humidity in %RH
if(error == NO_ERROR)
{
*temp = SHT3X_CalcTemperature(rawValueTemp);
*humi = SHT3X_CalcHumidity(rawValueHumi);
}
SHT3X_StopAccess();
return error;
}
//==============================================================================
etError SHT3X_EnableHeater(void){
//==============================================================================
etError error; // error code
error = SHT3X_StartWriteAccess();
// if no error, write heater enable command
if(error == NO_ERROR) error = SHT3X_WriteCommand(CMD_HEATER_ENABLE);
SHT3X_StopAccess();
return error;
}
//==============================================================================
etError SHT3X_DisbaleHeater(void){
//==============================================================================
etError error; // error code
error = SHT3X_StartWriteAccess();
// if no error, write heater disable command
if(error == NO_ERROR) error = SHT3X_WriteCommand(CMD_HEATER_DISABLE);
SHT3X_StopAccess();
return error;
}
//==============================================================================
etError SHT3X_SoftReset(void){
//==============================================================================
etError error; // error code
error = SHT3X_StartWriteAccess();
// write reset command
error |= SHT3X_WriteCommand(CMD_SOFT_RESET);
SHT3X_StopAccess();
// if no error, wait 50 ms after reset
if(error == NO_ERROR) DelayMicroSeconds(50000);
return error;
}
//==============================================================================
void SHT3X_HardReset(void){
//==============================================================================
// set reset low
RESET_LOW();
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
SHT30評估板模塊_PDF_C85041_.7z
(1.97 MB, 下載次數(shù): 139)
2019-6-21 03:01 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
endec
時間:
2019-8-20 12:32
看起來不錯
作者:
zhangshanqiao
時間:
2019-12-27 22:56
謝謝樓主分享,受用非淺。
作者:
Chaohaohao
時間:
2020-6-30 02:03
壓縮包里有原理圖嗎
作者:
ScreaA_
時間:
2021-9-9 11:50
請問這個開發(fā)軟件是哪個,是keil5嗎
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1