嵌入式第三次课

嵌入式软件设计第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机上。

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

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

时间: 2024-08-10 19:09:57

嵌入式第三次课的相关文章

七月算法--12月机器学习在线班-第三次课笔记—矩阵和线性代数

七月算法--12月机器学习在线班-第三次课笔记—矩阵和线性代数 七月算法(julyedu.com)12月机器学习在线班学习笔记 http://www.julyedu.com

NeHe OpenGL教程 第三十七课:卡通映射

转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第三十七课:卡通映射 卡通映射: 什么是卡通了,一个轮廓加上少量的几种颜色.使用一维纹理映射,你也可以实现这种效果. 看到人们仍然e-mail我请求在文章中使用我方才在GameDev.net上写的源代码,还看到文章的第二版(在那每一

NeHe OpenGL教程 第三十三课:TGA文件

转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第三十三课:TGA文件 加载压缩和未压缩的TGA文件: 在这一课里,你将学会如何加载压缩和为压缩的TGA文件,由于它使用RLE压缩,所以非常的简单,你能很快地熟悉它的. 我见过很多人在游戏开发论坛或其它地方询问关于TGA读取的问题.

三周第三次课(12月27日) 3.7 su命令 3.8 sudo命令 3.9 限制root远程登录

三周第三次课(12月27日)3.7 su命令3.8 sudo命令3.9 限制root远程登录 su命令: 用户和工作组管理: su命令用于切换当前用户身份到其他用户身份, 变更时须输入所要变更的用户帐号与密码. 语法: su(选项)(参数) 选项: -c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份: -f或--fast:适用于csh与tsch,使shell不用去读取启动文件: -l或--login:改变身份时,也同时变更工作目录,以及HOME,SHE

五周第三次课(1月10日) 8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向

五周第三次课(1月10日)8.1 shell介绍8.2 命令历史8.3 命令补全和别名8.4 通配符8.5 输入输出重定向 history命令: 用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件. 该命令单独使用时,仅显示历史命令,在命令行中,可以使用符号!执行指定序号的历史命令.例如,要执行第2个历史命令,则输入!2. 历史命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取.在内存中,历史命令仅能够存储1000条历史命

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

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

六周第三次课(1月17日)

六周第三次课(1月17日)9.6/9.7 awk awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理.awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本.awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernig

linux五周第三次课(3月7日)笔记

五周第三次课(3月7日)8.1 shell介绍8.2 命令历史8.3 命令补全和别名8.4 通配符8.5 输入输出重定向 搜索看一下有没有这两个shell,不安装. 8.2 命令历史 用过的命令,在/root/.bash_history存着 用cat命令查看一下/root/.bash_history 可以用命令history查看一下之前使用过的命令 history -c 修改了/etc/profile 配置文件,运行source命令,使其生效. 指定什么时候运行. 变量变了. 历史命令. 想要生

六周第三次课(3月14日)

六周第三次课(3月14日)9.6/9.7 awk扩展 9.6 awk(上)把passwd文件拷贝到目录awk,做实验. 打印文档中的某段 打印第1段的用法示例如下: 打印所有段的用法示例如下:不需要制定分隔符 不制定分隔符,会以空格和空白字符为为空隔符去打印.创建一个测试文件. 打印第1第3第4段的用法.中间要加逗号. 自定义分隔符为#,自定义的内容要加"" 打印包含某字符或字符串的行 打印含有oo的行,命令如下: 打印第1段含有oo的行,命令如下: 可以分段匹配,比sed强. awk