嵌入式LAB 5:uC/OS室温计
来源:互联网 发布:nginx http2 server 编辑:程序博客网 时间:2024/04/27 16:17
前期工作准备:
Mac OS X + Windows 7虚拟机
安装STM32 ST-LINK Unity。用于烧录程序。
安装STM32 ST-LINK所需要的驱动
安装Keil UVision 5,这是IDE,可以生成Hex文件,也可以烧录到板子上。
器材准备:
STM32F103板子一个
七段数码管LG3641BH
温湿度传感器DHT11
面包板
若干导线
实验流程
uCOS-II工程创建
官方下载ucos源码,我们采用的是micrium_stm32f103-sk_ucos-ii。开发工具版本为MDK511。其实在用Keil之前还下载了STM32f103的包,这样才能新建这样的工程。
1、新建ucos工程,选择STM32F103VE,选择CMSIS下的CORE和Device下的Startup,以及Device下的StdPeriph Drivers下的Framework,RCC,和GPIO。
2、工程中和实际目录中都新建几个目录,APP,UCOS,BSP,LIB,CPU,Output。
3、工程上右键,Options,Output页签,Select Folder for Objects,进入Output目录,点击OK。
4、把Micrium\Software\uCOS-II\Source目录中的文件拷贝到UCOS目录下,并添加到工程中。
5、工程Options中,C/C++页签,Include Paths,点击后面省略号可选择include目录,添加UCOS路径。
6、复制Micrium\Software\EvalBoards\ST\STM3210B-EVAL\RVMDK\OS-Probe目录下的文件app_cfg.h,os_cfg.h和includes.h到APP目录中,并在Include Paths中添加APP。
7、复制Micrium\Software\uCOS-II\Ports\arm-cortex-m3\Generic\RealView目录下的所有文件到CPU目录,添加到工程和Include Path中。
8、工程Options中,C/C++页签,Defines中添加 USE_STDPERIPH_DRIVER。
9、把RTE和RTE\Device\STM32F103VE添加进Include Paths中。
10、修改os_cfg.h文件,#define OS_APP_HOOKS_EN 1为0。
11、BSP目录下新建BSP.c文件,添加内容如下:
#include <bsp.h>CPU_INT32U BSP_CPU_ClkFreq (void) { RCC_ClocksTypeDef rcc_clocks; RCC_GetClocksFreq(&rcc_clocks); return ((CPU_INT32U)rcc_clocks.HCLK_Frequency);}INT32U OS_CPU_SysTickClkFreq (void) { INT32U freq; freq = BSP_CPU_ClkFreq(); return (freq);}
12、复制Micrium\Software\EvalBoards\ST\STM3210B-EVAL\RVMDK\BSP目录下的bsp.h到 BSP目录中
13、复制Micrium\Software\uC-CPU\ARM-Cortex-M3\RealView目录和Micrium\Software\uC-CPU目录下的所有文件到CPU目录下,并添加到工程和Include Path中。
14、复制Micrium\Software\uC-LIB目录下的所有.h文件到LIB目录下,并添加到Include Path中。
15、注释掉bsp.h中的#include
#include <includes.h>int main(){ OSInit(); OSStart(); return 0;}
18、
注释掉includes.h文件中的#include “stm32f10x_lib.h” 和
include lcd.h” 这样可以编译通过了。
结构图
编译成功了
7段数码管时分复用
我们的LG3641BH的七段数码管是共阳极的数码管。使得七段数码管的四个数字同时亮起用到了很经典的时分复用的方式,高频率点亮每个数码管,使人眼看起来所有的数字都是同时亮起的。对于共阳数码管,负极低电平时点亮。做过逻辑/计组实验就知道,控制4位7短数码管需要12条线,其中4条线是是位选,表示哪一个位置两期,剩下8位就是7段数码管+小数点。在程序中,我们接线的方法,参考博客。
DHT11数据读取及显示
DHT11是一款有已校准数字信号输出的温湿度传感器。作为一种单总线设备,输入输出均为同一个引脚。使用DHT11的时候,需要连接三个引脚,引脚1接VCC,引脚2接是stm32的某个GPIO口,引脚4接地。而引脚3悬空。
对DHT11来说,数据的传输步骤如下:
stm32输出低电平至少18ms(只有此处为ms,其余均为μs)。
stm32输出高电平20~40μs
DHT11反馈低电平80μs
DHT11反馈高电平80μs
以上为双方握手,以下开始准备接受数据。数据总长40个bit,输入为大端输入,即高位的bit先进行传输。每个byte表示一个数值。按照接受顺序分别表示湿度整数,湿度小数,温度整数,温度小数,校验码。校验码为前方四个byte的和。
对于每个传输的bit,DHT11会首先输出50μs的低电平。而后以输出高电平的时间决定每个bit的值。高电平持续时间为20~30μs的为bit 0,高电平持续时间为70μs的表示bit 1。整个通信过程大约耗时4ms。
连接图
温度显示:22度
被电吹风吹过之后的温度显示:34度
- 嵌入式LAB 5:uC/OS室温计
- Lab 5:uC/OS室温计
- uC/OS室温计
- 嵌入式lab5——US/OS室温计
- uC/OS-II嵌入式操作系统移植
- uC/OS-II嵌入式操作系统移植
- 嵌入式实时操作系统uC/OS-II概述
- uC/OS-II嵌入式操作系统移植
- 嵌入式操作系统UC/OS和UCLinux比较
- 嵌入式系统 操作系统 uC/OS uClinux
- uC/OS-II嵌入式操作系统移植
- uC/OS-II嵌入式操作系统及其开发
- 嵌入式uC/OS-2的任务管理
- 《嵌入式实时操作系统uC/OS-II》_第5、6章时间管理&ECB
- 移植uC/OS-II到51_《嵌入式实时操作系统uC/OS-II》
- M16C62在uC/OS-II嵌入式系统中的应用
- 嵌入式上UC/OS - II使用注意点------任务调度
- 嵌入式操作系统UC/OS和uClinux比较分析
- android Fragment 简单的使用
- bootstrap-multiselect.js如何动态更新select里的数据
- swift中关于String类型的successor()
- PreparedStatementpstmt IN
- mysql 查询表死锁 和结束死锁的表步骤
- 嵌入式LAB 5:uC/OS室温计
- 14.3.5.1 An InnoDB Deadlock Example
- jquery stop filter each end
- eclipse控制台中文乱码
- 主成分分析PCA详解(一)
- redis过期处理机制
- find out the last match position
- 【java细节】Java用HttpURLConnection实现Http、restful请求
- 2.0、Android Studio编写你的应用