CubeMx配置
清一色的output
文件依赖
sts30.c中的Get_Temperature
方法 需要使用i2c_2
因此需要导入 i2c.c/i2c.h
(供OLED使用)和i2c_2.c/i2c_2.h
(温度模块使用)
sts30.c:
/**
* @brief 获取温度
* @param None
* @retval 浮点数温度值
*/
float Get_Temperature(void)
{
uint8_t H_VALUE, L_VALUE, CRC_VALUE;
uint16_t T_VALUE; //转换完成的数字值
float temperature;//转换完成的温度值
I2CStart2();
I2CSendByte2(0x4A << 1);
I2CWaitAck2();
I2CSendByte2(0x24);//不使能时钟伸缩
I2CWaitAck2();
I2CSendByte2(0x0b);//中重复性测量精度
I2CWaitAck2();
I2CStop2();
HAL_Delay(2);//scl free,最小为1ms
I2CStart2();
I2CSendByte2(0x4A << 1 | 1);
I2CWaitAck2();
I2CStop2();
HAL_Delay(2);//scl free,最小为1ms
I2CStart2();
I2CSendByte2(0x4A << 1 | 1);
I2CWaitAck2();
H_VALUE = I2CReceiveByte2();
I2CSendAck2();
L_VALUE = I2CReceiveByte2();
I2CSendAck2();
CRC_VALUE = I2CReceiveByte2();
I2CSendNotAck2();
I2CStop2();
if (CRC_VALUE)
{
;
}
T_VALUE = H_VALUE << 8 | L_VALUE;
temperature = -45 + 175.0 * T_VALUE / 65535;
return (temperature);
}
代码
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
/* USER CODE BEGIN 2 */
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_15, GPIO_PIN_SET);
OLED_PowerControl(ENABLE);
HAL_Delay(200);
OLED_Init();
OLED_Clear();
OLED_ShowString(0, 0, (unsigned char *)" ", 16);
OLED_ShowString(0, 2, (unsigned char *)" ", 16);
OLED_ShowString(0, 0, (unsigned char *)"Temperature ", 16);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
float Temperature_Val;
char lcdLine_2st_line[16];
Temperature_Val = Get_Temperature();
sprintf(lcdLine_2st_line, "%.2f ", Temperature_Val);
OLED_ShowString(0, 2, (unsigned char *)lcdLine_2st_line, 16);
HAL_Delay(500);
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}