我就想把给的例程中显示屏和温度传感器结合一下,为什么总会死机,有个别几次不知道为什么没死机,但是温度的数据是不对。
求各位大神帮忙看看,很急。
#include "stm32f10x.h"
#include "./lcd/bsp_ili9341_lcd.h"
#include "./usart/bsp_usart.h"
#include <stdio.h>
#include &quot;./systick/bsp_SysTick.h&quot;
#include &quot;./dht11/bsp_dht11.h&quot;
static void LCD_Test(void);
static void Delay ( __IO uint32_t nCount );
void Printf_Charater(void) ;
/**
* @brief 主函数
* @param 无
* @retval 无
*/
int main ( void )
{
USART_Config();
/* 配置SysTick 为1us中断一次 */
SysTick_Init();
printf(&quot;\r\n***dht11 温湿度传感器实验***\r\n&quot;);
/*初始化DTT11的引脚*/
DHT11_Init ();
ILI9341_Init (); //LCD 初始化
printf(&quot;\r\n ********** 液晶屏英文显示程序*********** \r\n&quot;);
//其中0、3、5、6 模式适合从左至右显示文字,
//不推荐使用其它模式显示文字 其它模式显示文字会有镜像效果
//其中 6 模式为大部分液晶例程的默认显示方向
ILI9341_GramScan ( 6 );
while ( 1 )
{
LCD_Test();
}
}
void LCD_Test(void)
{
DHT11_Data_TypeDef DHT11_Data;
char aBuff[100];
LCD_SetFont(&Font8x16);
LCD_SetColors(RED,BLACK);
ILI9341_Clear(0,0,LCD_X_LENGTH,LCD_Y_LENGTH); /* 清屏,显示全黑 */
/********显示字符串示例*******/
ILI9341_DispStringLine_EN(LINE(0),&quot;BH 3.2 inch LCD para:&quot;);
ILI9341_DispStringLine_EN(LINE(1),&quot;Image resolution:240x320 px&quot;);
ILI9341_DispStringLine_EN(LINE(2),&quot;ILI9341 LCD driver&quot;);
ILI9341_DispStringLine_EN(LINE(3),&quot;XPT2046 Touch Pad driver&quot;);
LCD_SetFont(&Font8x16);
LCD_SetTextColor(WHITE);
sprintf(aBuff,&quot;Humidity:%d.%dRH,Temperature:%d.%dC&quot;,DHT11_Data.humi_int,DHT11_Data.humi_deci,DHT11_Data.temp_int,DHT11_Data.temp_deci);
printf(&quot;\r\n读取DHT11成功!\r\n\r\n湿度为%d.%d %RH ,温度为 %d.%d℃ \r\n&quot;,DHT11_Data.humi_int,DHT11_Data.humi_deci,DHT11_Data.temp_int,DHT11_Data.temp_deci);
LCD_ClearLine(LINE(4)); /* 清除单行文字 */
/*然后显示该字符串即可,其它变量也是这样处理*/
ILI9341_DispStringLine_EN(LINE(4),aBuff);
Delay(0xFFFFFF);
ILI9341_Clear(0,16*8,LCD_X_LENGTH,LCD_Y_LENGTH-16*8); /* 清屏,显示全黑 */
} |