OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4965|回复: 4

stm32f103+sht30+oled不能正常显示

[复制链接]

1

主题

4

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2021-2-28
在线时间
3 小时
发表于 2021-4-6 16:00:39 | 显示全部楼层 |阅读模式
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 */
}

最佳答案

查看完整内容[请看2#楼]

IO口都独立,先点亮oled在加上温湿度传感器就可以显示了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2021-2-28
在线时间
3 小时
 楼主| 发表于 2021-4-6 16:00:40 | 显示全部楼层
a1281854907 发表于 2021-4-7 10:27
是不是IO占用了什么的

IO口都独立,先点亮oled在加上温湿度传感器就可以显示了
回复

使用道具 举报

5

主题

356

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4648
金钱
4648
注册时间
2019-4-30
在线时间
902 小时
发表于 2021-4-7 10:27:36 | 显示全部楼层
是不是IO占用了什么的
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2021-4-9 02:14:07 | 显示全部楼层
NCSA 发表于 2021-4-8 09:43
IO口都独立,先点亮oled在加上温湿度传感器就可以显示了

解决了么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2021-2-28
在线时间
3 小时
 楼主| 发表于 2021-4-19 20:48:10 | 显示全部楼层

已解决
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 05:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表