新手上路
- 积分
- 26
- 金钱
- 26
- 注册时间
- 2021-2-28
- 在线时间
- 3 小时
|
1金钱
使用stm32cubemx + stm32f103ZET6+sht30+0.96OLED(四针)
可以正常采集数据,但OLED不显示,单独测试OLED能正常工作,函数如下,请大佬指导一下,存在什么问题。
#include "main.h"
#include "i2c.h"
#include "usart.h"
#include "gpio.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "stdio.h"
#include "sht30_i2c_drv.h"
#include "oled.h"
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
/* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
uint8_t str_buff[64];
uint8_t str1[]="sht303õê¼»ˉ3é1|\r\n";
uint8_t str2[]="sht303õê¼»ˉê§°ü\r\n";
uint8_t str3[]="CRCD£Ñéê§°ü\r\n";
uint8_t str4[]="¶áè¡êy¾Yê§°ü\r\n";
char str5[]="Hollo tmpersonser";
/* USER CODE END 0 */
/**
* @brief The application entry point.
* @retval int
*/
int main(void)
{
/* USER CODE BEGIN 1 */
uint8_t recv_dat[6] = {0};
float temperature = 0.0;
float humidity = 0.0;
// uint8_t tem_buff[16];
// uint8_t hum_buff[16];
/* 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();
MX_I2C1_Init();
MX_USART1_UART_Init();
MX_I2C2_Init();
/* USER CODE BEGIN 2 */
HAL_GPIO_WritePin(GPIOB ,GPIO_PIN_5,GPIO_PIN_RESET);
SHT30_Reset();
if(SHT30_Init() == HAL_OK)
HAL_UART_Transmit(&huart1 ,str1 ,sizeof(str1),10000);
//printf("sht30 init ok.\n");
else
HAL_UART_Transmit(&huart1 ,str2 ,sizeof(str2),10000);
// printf("sht30 init fail.\n");
OLED_Init();
OLED_Clear();
OLED_ShowString(0,0,(uint8_t *)str5,sizeof(str5));
HAL_Delay (500);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
HAL_GPIO_TogglePin (GPIOB,GPIO_PIN_5);
OLED_Clear();
HAL_Delay(1000);
if(SHT30_Read_Dat(recv_dat) == HAL_OK)
{
if(SHT30_Dat_To_Float(recv_dat, &temperature, &humidity)==0)
{
sprintf((char *)str_buff ,"temperature = %f, humidity = %f\r\n",temperature, humidity);
HAL_UART_Transmit (&huart1 ,str_buff ,sizeof(str_buff),10000);
OLED_ShowString(0,2,str_buff ,sizeof(str_buff ));
//printf("temperature = %f, humidity = %f\r\n", temperature, humidity);
}
else
{
HAL_UART_Transmit(&huart1 ,str3 ,sizeof(str3),10000);
// printf("crc check fail.\n");
}
}
else
{
HAL_UART_Transmit(&huart1 ,str4 ,sizeof(str4),10000);
// printf("read data from sht30 fail.\n");
}
}
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
/* USER CODE END 3 */
}
|
|