嵌入式第三次课

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌入式第三次课相关的知识,希望对你有一定的参考价值。

嵌入式软件设计第3次实验报告

 

学号:140201225             姓名:刘曦洋

组别:第1                实验地点:D19

 

一、实验目的:

1、掌握STM32固件库函数驱动串口的方法。

2、掌握温湿度一体化数字传感器DHT11的驱动方法。

二、实验内容:

1.编写STM32F407串口驱动程序,完成串口与电脑RS232的通信实验。

2.编写DHT11驱动程序采集温度和湿度,从串口发送给电脑。

三、实验过程描述及结果展示:

串口1硬件连接图

 

 

STM32串口配置的方法:

1.串口时钟使能, GPIO 时钟使能  。

2.设置引脚复用器映射:调GPIO_PinAFConfig函数。

3.GPIO 初始化 设置 :要设置 模式 为复用功能。

4.串口参数初始化 :设置波特率,字长奇偶校验等参数 。

5.使能串口 。

 

DHT11硬件连接图

 

 

DHT11数据格式

1.DHT11数字湿温度传感器采用单总线据格式。即,单个引脚端口完成输入输出双向传输,其数据包由 5Byte 40Bit)组成。

2.数据分小数部分和整数部分,一次完整的数据传输为

40bit,高位先出。

 

DHT11的数据格式为:

8bit 湿度整数数据 + 8bit湿度小数 +8bit 温度整数数据 + 8bit 温度小数数据 +8bit 校验和。

 

 

 

 

 

 

 

 

实验代码:

u8 temperature;

u8 humidity;

 

delay_init(168);

 

//初始化I/0串口1

{

GPIO_InitTypeDef GPIO_InitStructure;

USART_InitTypeDef USART_InitStructure;

 

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);//使能GPIOA

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//使能串口

 

//串口1对应引脚复用映射

GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);  //GPIO9复用为USART1

GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);  //GPIO10复用为USART1

 

//GPIO配置

GPIO_InitStructure.GPIO_Pin =GPIO_Pin_9 |GPIO_Pin_10;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //配置为复用功能

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;

 

GPIO_Init(GPIOA,&GPIO_InitStructure);

 

//USART1的配置

USART_InitStructure.USART_BaudRate = 115200;//配置波特率

USART_InitStructure.USART_WordLength = USART_WordLength_8b;  //长度 为8

USART_InitStructure.USART_StopBits = USART_StopBits_1; //一个停止位

USART_InitStructure.USART_Parity = USART_Parity_No; //无奇偶校验

USART_InitStructure.USART_HardwareFlowControl= USART_HardwareFlowControl_None;  

USART_InitStructure.USART_Mode= USART_Mode_Rx | USART_Mode_Tx;

 

USART_Init(USART1,&USART_InitStructure);

 

USART_Cmd(USART1,ENABLE);

}

 

/* while(1)

{

USART_SendData(USART1,0x61);

while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET)  //等待发送

delay_ms(300);

} */

{

GPIO_InitTypeDef GPIO_InitStructure1;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG,ENABLE);//使能GPIOA

GPIO_InitStructure1.GPIO_Pin =GPIO_Pin_9;

GPIO_InitStructure1.GPIO_Mode = GPIO_Mode_OUT; //配置为复用功能

GPIO_InitStructure1.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure1.GPIO_OType = GPIO_OType_PP;

GPIO_InitStructure1.GPIO_PuPd = GPIO_PuPd_UP;

 

GPIO_Init(GPIOG,&GPIO_InitStructure1);

 

DHT11_Rst();

while(DHT11_Check());   //等待复位

}

 

 

while(1)

{

DHT11_Read_Data(&temperature,&humidity);//读取温度和湿度

USART_SendData(USART1,(temperature/10)+0x30);

while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);

USART_SendData(USART1,(temperature%10)+0x30);

while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);

delay_ms(300);

}

}

 

四、总结及实验心得:

此次课是完成利用串口进行通信,将嵌入式设备上的数据传送到PC机上。

这次课分为两个内容,第一个是完成串口的通信。第二个是打开嵌入式板子上的温湿度传感器,将实时的信息传输到PC机上。

这次课是老师带着大家做,只要跟上就不困难。

配置串口首先要使能串口,再设置引脚复用映射,再配置串口,最后初始化。

以上是关于嵌入式第三次课的主要内容,如果未能解决你的问题,请参考以下文章

六周第三次课(1月17日) 9.6/9.7 awk

四周第三次课(1月4日)

一周第三次课(12月13日)

三周第三次课(12月27日)

第三次课总结

五周第三次课(1月10日)