嵌入式系统设计与项目实施 课件 第1、2章 流水灯设计与制作、红外测温仪设计与制作_第1页
嵌入式系统设计与项目实施 课件 第1、2章 流水灯设计与制作、红外测温仪设计与制作_第2页
嵌入式系统设计与项目实施 课件 第1、2章 流水灯设计与制作、红外测温仪设计与制作_第3页
嵌入式系统设计与项目实施 课件 第1、2章 流水灯设计与制作、红外测温仪设计与制作_第4页
嵌入式系统设计与项目实施 课件 第1、2章 流水灯设计与制作、红外测温仪设计与制作_第5页
已阅读5页,还剩192页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

流水灯设计与制作适用平台:STM32F1xx任课老师:xxx1掌握STM32GPIO端口的内部结构掌握STM32GPIO端口工作模式掌握MDK5编程环境和使用方法掌握模块化编程和工程模板添加的方法掌握MDK5软件功能仿真0102030405本章要点2掌握程序下载方法06Part.01STM32通用GPIO简介31.1GPIO端口基本结构STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题4STM32F103ZET6实物图STM32F103ZET6引脚图1.1GPIO端口基本结构STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题5图1-13.3VGPIO端口引脚的基本结构图1-25VGPIO端口引脚的基本结构1.1GPIO端口基本结构STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题6部分GPIO引脚图:表1-1部分GPIO端口引脚描述1.2GPIO端口工作模式STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题71.2GPIO端口工作模式STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题8浮空输入:1.2GPIO端口工作模式STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题9上拉输入:1.2GPIO端口工作模式STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题10下拉输入:1.2GPIO端口工作模式STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题11模拟输入:1.2GPIO端口工作模式STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题12漏极开路输出:1.2GPIO端口工作模式STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题13漏极开路复用输出:1.2GPIO端口工作模式STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题14推挽式输出:1.2GPIO端口工作模式STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题15推挽复用输出:1.2GPIO端口工作模式(1)输出缓冲器被禁止(2)施密特触发输入被激活(3)根据输入配置(上拉、下拉或浮动)的不同,上拉和下拉电阻被连接(4)出现在I/O引脚上的数据在每个APB2时钟被采样到输入数据寄存器STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题16(5)对输入数据寄存器的读操作可得到GPIO引脚的电平状态当GPIO端口配置为输入:图1-3I/O端口引脚输入配置原理图1.2GPIO端口工作模式(1)输出缓冲器被激活,包括两种激活方式:Ⅰ.漏极开路模式Ⅱ.推挽模式(2)施密特触发输入被激活(3)上拉和下拉电阻被禁止(4)出现在I/O引脚上的数据在每个APB2时钟被采样到输入数据寄存器STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题17(5)在漏极开路模式时,对输入数据寄存器的读操作可得到I/O状态当GPIO端口配置为输出:图1-4I/O端口引脚输出配置原理图(6)在推挽模式时,对输出数据寄存器的读操作可得到最后一次写的值1.2GPIO端口工作模式STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题18表1-2端口位配置表表1-3输出模式位1.3配置寄存器STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题19每个GPIO端口包含:

GPIOX_CRLGPIOX_CRHGPIOX_IDRGPIOX_ODRGPIOX_BSRRGPIOX_BRRGPIOX_LCKR数据寄存器端口配置寄存器1.3配置寄存器STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题201.端口配置寄存器CRL表1-4端口低配置寄存器CRL各位描述1.3配置寄存器STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题21GPIO初始化函数:voidGPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct);实例:GPIO_InitDefGPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOD,&GPIO_InitStructure);typedefenum{GPIO_Mode_AIN=0x0;GPIO_Mode_IN_FLOATING=0x04;GPIO_Mode_IPD=0x28;GPIO_Mode_IPU=0x48;GPIO_Mode_Out_OD=0x14;GPIO_Mode_Out_PP=0x10;GPIO_Mode_AF_OD=0x1C;GPIO_Mode_AF_PP=0x18;}GPIOMode_TypeDef;1.3配置寄存器STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题222.输入寄存器IDR表1-5端口输入数据寄存器IDR各位描述1.3配置寄存器STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题23IDR寄存器相关函数:unit8_tGPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,unit16_tGPIO_Pin);实例:GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5);作用:固件库中操作IDR寄存器读取GPIO端口引脚数据,以获得GPIO端口引脚的电平状态,返回值是1(Bit_SET)或者是0(Bit_RESET)1.3配置寄存器STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题243.输出寄存器ODR表1-6端口输出数据寄存器ODR各位描述相关函数:

voidGPIO_Write(GPIO_TypeDef*GPIOx,unit16_tPortVal);1.3配置寄存器STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题254.置位/复位寄存器BSRR表1-7引脚置位/复位寄存器BSRR各位描述1.3配置寄存器STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题26BSRR寄存器用法:(1)如果要设置GPIO第1个端口引脚值为1,只需要给寄存器BSRR低16位的对应位写1:GPIOA->BSRR=1<<1;(2)如果要设置GPIO第1个端口引脚值为0,只需要给寄存器BSRR高16位的对应位写1:GPIOA->BSRR=1<<(16+1);1.3配置寄存器STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题275.复位寄存器BRRBRR的作用与BSRR的高16位相同,在STM32固件库中,通过BSRR和BRR寄存器设置GPIO端口引脚输出是通过GPIO_SetBits()函数和GPIO_ResetBits()函数实现的:

voidGPIO_SetBits(GPIO_TypeDef*GPIOx,unit16_tGPIO_Pin);

voidGPIO_ResetBits(GPIO_TypeDef*GPIOx,unit16_tGPIO_Pin);实例:GPIO_SetBits(GPIOB,GPIO_Pin_5);GPIO_ResetBits(GPIOB,GPIO_Pin_5);1.3配置寄存器STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题28GPIO端口操作步骤总结:(1)使能GPIO端口时钟,调用函数为RCC_APB2PeriphClockCmd;(2)初始化GPIO端口参数,调用函数为GPIO_Init();(3)操作GPIO端口。1.4GPIO端口特性GPIO端口特性通用输入/输出特性最大额定值输入电压STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题29输出驱动电流输出电压1.4GPIO端口特性STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题301.绝对最大额定值表1-8电压特性1.4GPIO端口特性STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题31表1-9电流特性1.绝对最大额定值表1-10温度特性1.4GPIO端口特性STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题322.通用输入/输出特性表1-11GPIO端口静态特性1.4GPIO端口特性STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题333.输出驱动电流

GPIO(通用输入/输出端口)可以吸收或输出多达+/-8mA电流,并且吸收+20mA电流(不严格的VOL)。在用户应用中,GPIO端口引脚须保证驱动电流不能超过表1-9给出的绝对最大额定值:

(1)所有GPIO端口引脚从VDD上获取的电流总和,加上MCU在VDD上获取的最大运行电流,不能超过绝对最大额定值IVDD(表1-9)。

(2)所有GPIO端口引脚吸收并从VSS上流出的电流总和,加上MCU在VSS上流出的最大运行电流,不能超过绝对最大额定值IvSS(表1-9)。1.4GPIO端口特性STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题344.输出电压表1-12输出电压特性1.4GPIO端口特性STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题355.输入/输出电压特性1.4GPIO端口特性STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题365.输入/输出电压特性图1-5输入/输出交流特性定义tf(IO)out—输出电平由高到低下降时间

tr(IO)out—输出电平由低到高上升时间

T—周期

Part.02流水灯硬件设计37知识目标:

1.STM32I/O端口作为输出的使用方法2.LED灯和电阻的参数性能3.LED灯硬件连接方法2.1硬件电路设计STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题38能力目标:

1.会使用STM32I/O端口作为输出控制流水灯2.会根据选定的LED灯计算限流电阻3.会用EDA软件设计硬件电路图2.1硬件电路设计STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题39任务要求:(1)设计I/O输出灌电流时的流水灯驱动软件设计电路,要求电源电压为3.3V,每个发光二极管工作电流为10mA;(2)发光二极管选用直径为5mm的红色发光二极管;(3)制作硬件电路测试板。图1-6流水灯驱动软件设计硬件电路2.2器件选型STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题401.发光二极管选型表1-13红色发光二极管的极限参数(Ta=25℃)表1-14红色发光二极管的光电参数(Ta=25℃)2.2器件选型STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题41图1-7红色发光二极管的外形尺寸2.限流电阻选型

选用金属膜电阻即可图1-8金属膜电阻实物图2.3参数计算STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题42以D1为例,计算其限流电阻的阻值。设计要求IF=10mA,VCC=3.3V。由表1-15,取VF的中间值VF=2.3。限流电阻R1的阻值为:R1消耗的功率为:P=R1×I1×I1=100Ω×0.01A×0.01A=0.01W为了留有一定的余裕,选取0.25W电阻即可。2.3参数计算STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题43验证:IF=10mA<25mAIF和=8×10mA=80mA<150mA表1-92.4硬件电路制作STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题44图1-9流水灯驱动软件设计电路板实物图Part.03流水灯驱动软件设计453.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题46资料准备1)、V3.5固件包STM32F10x_StdPeriph_Lib_V3.5.0固件包是ST官网下载的完整版。

获取方法:1)下发资料包中查找;

2)到ST官网下载;(要注册,才可下载)

3)opendev论坛下载。http:///posts/list/6054.htm2)、MDK5开发环境

如未安装,请参考MDK5安装步骤章节进行安装。安装包在下发资料中。如已经安装,本步骤可忽略。3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题471)在电脑的某个目录下,新建一个名称为MyTemplate的文件夹。然后再在这个文件夹下新建四个文件夹,名称分别为:OBJ,UESER,CORE,STM32F10x_FWLib。如图所示:3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题482)、Project->newuvisionproject然后将目录定位到刚才新建的目录MyTemplate下的USER目录下,工程取名Template,点击保存。3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题49点击保存之后,弹出器件选择对画框,如下图所示。选中STM32F103ZE后点击OK。3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题503)、点击OK之后,MDK会弹出ManageRun-TimeEnveronment对话框,这是MDK5的一个新功能,点CANCLE即可。3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题51点击CANCLE之后,即可得到下图所示的界面。到此为止,我们还只是建立一个工程框架,还学要添加启动代码和.c文件等。3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题524)下面我们看看USER目录下包含2个文件夹和2个文件。

Template.uvprojx是工程文件,不能轻易删除。

Listings和Objects文件夹是MDK5自动生成的文件夹,用于存放编译过程生成的中间文件。为保持项目兼容性,可以删除。3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题535)在MyTemplate文件夹下再新建三个文件夹,这一步我们在第一步时已经做了,下面说明一下OBJ,CORE,STM32F10x_FWLib三个文件夹的作用。STM32F10x_FWLib用于存放ST官方提供的库文件;CORE用于存放核心文件和启动文件;OBJ用于存放编译过程生成的中间文件和HEX文件;USER除了存放工程文件,还存放main.c及其它文件。3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题546)下面我们将官方库包里的源文件复制到我们的工程目录文件夹下面。打开官方固件包,定为到..\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver下面,把inc和src两个文件夹拷贝到工程目录下TM32F10x_FWLib文件夹中;OBJ,CORE,S固件库文件夹工程文件夹3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题557)下面我们将官方库包里的核心文件和启动文件复制到CORE文件夹下。首先定位到..\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport文件夹下把core_cm3.c和core_cm3.h两个文件拷贝到工程文件夹CORE文件夹中;再定位到..\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm把startup_stm32f103x_hd.s复制的工程文件夹CORE文件夹中。工程文件夹3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题568)定位目录首先定位到..\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x把stm32f10x.h、system_stm32f10x.c和system_stm32f10x.h拷贝到工程文件夹USER目录;再定位到..\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template把main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h四个文件拷贝到工程文件夹USER目录;工程文件夹3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题57操作完成后,USER目录如下图所示:3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题589)、前面8个步骤,我们将库文件复制到了工程目录下面。后面我们将库文件添加到工程中去。右键点击Target1,选择ManageProjectItems.3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题5910)、前面8个步骤,我们将库文件复制到了工程目录下面。后面我们将库文件添加到工程中去。右键点击Target1,选择ManageProjectItems.修改成Template删除SourceGroup1并新建3个Group。分别是USER、CORE、FWLIB3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题60更改后如图所示。然后点OK键。3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题61点OK键后,得到如下界面。3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题6211)下面我们Group里添加需要的文件。按照步骤10)的方法,右键点击Template,选择ManageProjectItems,然后选择需要添加文件的Group。我们首先选择FWLIB,然后点击右边的AddFiles,定位到我们刚才建立的文件夹STM32F10x_FWLib/src下,按“CTRL+A”,然后点击Add。可以看到Files列表下面包含我们添加的文件。3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题6312)用同样的方法,将Group定位到CORE和USER,添加需要的文件。CORE下面需要添加的文件为:core_cm3.c和startup_stm32f103x_hd.s;USER下面添加的文件为:main.c、stm32f10x_it.c和system_stm32f10x.c三个文件。至此,我们就把需要的文件添加到工程中去了。最后点OK回到主工程界面。3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题64点OK回到主工程界面。可以看到,需要的文件已经都添加到了工程中。3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题65

13)接下来我们要编译工程,编译之前,我们要选择编译生产的中间文件和HEX文件的保存路径。方法是点魔术棒,在

“Output”选项下面的“Selectfolderforproject…….”1、点击魔法棒2、点击Output3、点击Selectfolderforproject4、指定保存路径3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题66

14)接下来我们要编译工程,可以看到有很多报错。这是因为MDK5编译器找不到头文件造成的。编译按钮#5报错,找不到相应头文件3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题67

15)下面我们要告诉编译器,在哪些目录下搜索头文件。这里要注意,工程中所有引用的头文件路径都要包含进来。最后按OK按钮。1、点击魔法棒2、选择C/C++选项卡3、选择添加路径按钮4、添加并指定头文件路径3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题6816)接下来继续编译工程,看看还有什么错误。编译后还是有很多错误和警告。这是因为3.5版本的库在配置和选择外设的时候是通过宏定义来选择的。所以,我们要配置一个宏定义变量。按15)方法。最后点OK.1、点击魔法棒2、选择C/C++选项卡3、输入STM32F103X,USE_STDPERIPH_DRIVER3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题6917)接下来继续编译工程,在编译之前,记得用下面的代码覆盖工程main.c中的代码。#include"stm32f10x.h”voidmain(void){while(1);}再编译发现已经没有错误和警告了。3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题7018)到此,一个工程模板建立完毕。下面还需要配置,让编译之后能力够生成HEX文件。设置方法参考下图。1、点击魔法棒2、选择Output3、全部勾选输出编译信息输出HEX文件查看变量和函数定义3.1MDK5新建固件库工程模板步骤STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题7119)重新编译,HEX文件已经生成并保存在OBJ文件夹下了。到此,一个基于V3.5固件库的工程模板就建立完成了。20)实际上,一个基于V3.5固件库的工程模板已经建立完成了。但是,为了以后编程的方便,我们将一个SYSTEM的文件夹和对应源文件加入工程,方便以后使用。完成后的工程如图所示。具体步骤请参考文件添加部分讲解。至此,工程模板建立完成。新增SYSTEM共用文件3.2驱动软件设计STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题72能力目标一会使用STM32I/O端口作为输出控制流水灯能力目标二会使用模块化编程方法编写控制程序能力目标三能将流水灯驱动软件设计程序模块

添加到MDK5工程中STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题73具体要求:(1)在基于库文件的MDK工程模板文件夹中新建流水灯程序模块文件夹;(2)新建流水灯驱动软件设计程序头文件和源程序文件;(3)按项目要求编写流水灯驱动软件设计程序。任务:

在已有工程模板的基础上添加流水灯驱动软件设计模块,编写控制8个LED灯从左到右依次点亮并循环往复的流水灯驱动软件设计程序。3.2驱动软件设计STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题743.2驱动软件设计图1-10流水灯驱动软件设计程序架构STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题753.2驱动软件设计#include"led.h"//LEDI/O初始化voidLED_Init(void){ GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOD,&GPIO_InitStructure);

//PD端口初始化 GPIO_Write(GPIOD,0XFF);

//PD0~PD7输出高电平}led.c文件程序STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题763.2驱动软件设计#ifndef_LED_H#define_LED_H#include"sys.h"//LED端口定义voidLED_Init(void);#endifled.h文件程序STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题773.2驱动软件设计图1-11为工程新增HARDWARE组图1-12LED新增HARDWARE组后的效果图1-13将led.h头文件的路径加入工程STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题783.2驱动软件设计main函数#include"led.h"#include"delay.h"#include"sys.h"intmain(void){ u8Disdate=0,i; delay_init();//设置系统的时钟和延迟函数 LED_Init();//初始化与LED连接的硬件接口 while(1) { Disdate=1; for(i=0;i<8;i++)//在循环里面实现从D1~D8的顺序点亮,间隔为500ms { GPIO_Write(GPIOD,~(Disdate<<i));//对端口操作 delay_ms(500); } }}STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题793.2驱动软件设计编译输出图1-14编译结果

1.Code:表示程序所占用FLASH的大小(FLASH)。

2.RO-data:即ReadOnly-data,表示程序定义的常量,如const类型(FLASH)。

3.RW-Data:即ReadWrite-data,表示已被初始化的全局变量(SRAM)。4.ZI-data:即Zeronit-data,表示未被初始化的全局变量(SRAM).3.3程序下载与调试STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题80能力目标:

1.会连接STM32硬件调试下载器;2.会设置MDK5软件仿真参数;3.能使用MDK5软件仿真流水灯功能;4.会设置MDK5硬件下载器参数。具体要求:

1.正确连接硬件仿真器;2.使用MDK5软件仿真功能;3.使用J-LINK下载程序到目标板。3.3程序下载与调试STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题81仿真步骤:1.将OptionsforTarget—>Debug中设置为UseSimulator;2.在FileToolbar工具条上单击

开始仿真;3.在DebugToolbar上单击“逻辑分析仪”(或单击view—>AnalysisWindows—>LogicAnalyzer);4.单击Setup按钮,新建两个信号PORTD.5和PORTD.6,如右图1-15;5.在DisplayType中选择Bit,点击close关闭窗口;6.在

DebugToolbar上单击

开始运行,运行一段时间后,单击

按钮可以暂停仿真。图1-15逻辑分析仪设置3.4程序下载与调试STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题82图1-16逻辑分析后的逻辑分析窗口图1-17仿真波形Part.04本章小结834.1本章小结STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计软件设计本章小结本章习题841.学习GPIO端口的基本结构和工作模式,以及如何用GPIO端口引脚控制发光二极管。2.设计并实现了小功率发光二极管的硬件驱动电路。3.学习了基于MDK5固件库工程模板的创建,编写了流水灯的模块化编程和主程序,并学习了软件仿真和软件逻辑分析仪的使用。4.程序下载与调试,完成了系统程序的设计。4.1本章小结STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题85图1-18嵌入式系统开发流程Part.05本章习题865.1本章习题习题一:简述STM32GPIO工作模式。习题二:编写将PA.4,PA.5设置为推挽输出,电平翻转速度为50MHz的初始化程序。习题三:编写PB.3,PB.4设置为带下拉电阻的输入工作模式,电平翻转速度为10MHz的初始化程序。STM32通用GPIO简介流水灯硬件设计流水灯驱动软件设计本章小结本章习题87习题四:试着自己设定1个流水灯的工作过程,写出控制程序,并下载验证。红外测温仪设计与制作任课老师:xxx88适用平台:STM32F1xx掌握STM32GPIO端口引脚的相关使用方法掌握LCM1602接口定义和配置寄存器掌握红外温度传感器MLX90614接口定义掌握MLX90614SMBus的相关用法掌握摄氏度和华氏度的转换方法0102030405本章要点89掌握温度测量数据误差处理和按键功能分配05熟练掌握程序下载方法05Part.01红外温度传感器901.1MLX90614简介红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理91图2-1MLX90614的3种常用型号

MLX90614是由Melexis研发并生产的测温器,是红外非接触式温度计。它包括:

(1)红外热电堆感应器MLX81101;

(2)专为适用于这款感应器输出而设计的信号处理芯片MLX90302。实现了高精度温度测量MLX90614在室温范围内提供的标准精度为

±5℃1.1MLX90614简介红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理92

红外温度计的主要功能:利用红外温度传感器感知被测人员的体温,红外温度传感器输出的温度数据经STM32F103高性能32位ARM处理器处理后显示在液晶屏幕上,可以通过按键启动一次温度检测、摄氏度和华氏度两种温度单位的转换、测量温度信息的清除等功能。MLX90614四个核心模块:1)红外温度传感器模块:该模块主要通过温度传感器获取被测人员或物体的表面温度;2)STM32最小系统主要负责读取红外温度传感器的温度数据,加以处理后,发送到液晶显示模块上显示;3)液晶显示模块主要用于显示温度信息;4)按键模块主要用于启动温度转换,清除显示数据,摄氏度和华氏度单位切换以适应不同的使用场合。图2-2红外温度传感器的结构框图1.2MLX90614引脚功能红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理93图2-3MLX90614引脚排列顶视图表2-1MLX90614引脚描述1.3MLX90614电气特性红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理94表2-2MLX90614ESF-BCC主要电器特性参数1.4MLX90614驱动电路设计红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理95图2-4MLX90614驱动电路原理图MLX90614的SCL和SDA与STM32I/O口连接,可以实现:1)从MLX90614的内部RAM/EEPROM读取数据;2)向MLX90614的内部RAM/EEPROM写入数据。图2-5MLX90614改进型驱动电路原理图1.4MLX90614驱动电路设计红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理96图2-6MLX90614设计板图和实物图

项目使用的是STM32F103最小系统板,设计产品时选用图2-4或2-5均可,本项目采用图2-4所示MLX90614驱动电路原理图进行PCB设计。

MLX90614设计板图和实物如图2-6所示。1.4MLX90614驱动电路设计红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理97I/O端口引脚分配图2-7MLX90614模块与STM32F103最小系统的连接Part.02LCM1602液晶显示982.1LCM1602简介红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理99LCM1602包含:1)字符型液晶显示屏(LED)2)控制驱动主电路HD441003)少量电阻、电容原件和结构件LED主要显示指标:1)呈示像素:16(W)字符×2(H)字符;2)尺寸:3.0(W)mm×5.23(H)mm;3)点间距:0.61(W)mm

×

0.66(H)mm;4)可视区域:64.5(W)mm×16.4(H)mm;5)模块尺寸:80(W)mm×36(H)mm×13(T)mm;6)LCD类型:黄绿STN;7)显示模式:透反射式、正显示;8)视角:6:00点钟;9)背光形式:黄绿色LED背光;10)温度范围:宽温,工作

-20~70℃;存储时为

-25~75℃。2.1LCM1602简介红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理100图2-8黄绿模式正显LCM1602图2-9蓝模式负显LCM16022.2LCM1602引脚功能红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理101LCM1602有16个引脚。表2-3LCM1602引脚功能2.3LCM1602电气特性红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理102表2-4LCM1602工作时的极限参数(VSS=0V,Ta=+25℃)表2-5LCM1602直流特性(VCC=5.0V,VSS=0V,Ta=+25℃)2.4LCM1602驱动电路设计红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理103图2-10LCM1602驱动电路J1:LCM1602与STM32F103连接的接口J2:LCM1602的16引脚接口RW1:阻值为10KΩ的可调电位器,固定端接3.3V电源,另一端接GND,中间滑动端接LCM1602的对比度调节引脚V0,通过调节滑动端,可以为V0端提供0~+3.3V的电压,用于调节LCM1602的显示对比度。Q1和R1一起构成了一个开关电路,用于控制LCM1602背光的打开或关闭。2.4LCM1602驱动电路设计红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理104图2-11LCM1602模块与STM32F103最小系统连接2.4LCM1602驱动电路设计红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理105表2-6LCM1602控制引脚分配Part.03按键驱动及红外温度计电路设计1063.1按键驱动电路设计红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理107图2-12按键驱动电路J1:按键驱动电路与STM32F103最小系统电路之

间的接口;R1、R2:按键的上拉电阻,阻值为5KΩ;作用:在按键无操作时,提供一个稳定的高电平,

提高按键操作的抗干扰能力。S1:启动一次温度测量;S2:清除测量结果;S3:摄氏度和华氏度两种温度单位的切换,开机

默认状态温度单位是摄氏度。3.1按键驱动电路设计红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理108图2-13按键与STM32F103最小系统连接3.2红外温度计电路设计红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理109红外温度计电路4个模块:1)STM32F103最小系统电路2)LCM1602驱动电路3)MLX90614红外测温电路4)按键驱动电路图2-14红外温度计电路图3.2红外温度计电路设计红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理110表2-7红外温度计控制I/O端口分配表Part.04MLX90614SMBus总线1114.1SMBus总线功能红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理112

SMBus基本概念:

SMBus(SystemManagementBus,系统管理总线)是1995年由Intel提出的,应用于移动PC和桌面PC系统中的低速率通讯。希望通过一条廉价并且功能强大的总线(由两条线组成),来控制主板上的设备并收集相应的信息。

SMBus为系统和电源管理这样的任务提供了一条控制总线,使用SMBus的系统,设备之间发送和接收消息都是通过SMBus,而不是使用单独的控制线,这样可以节省设备的管脚数。4.1SMBus总线功能红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理113MLX1602芯片支持两线串行协议,对应引脚为SCL和PWM/SDA。

1)SCL:数字输入,用做SMBus通信时钟信号。该引脚有辅助建立外部电压调节器的功能。当使用外部电压稳压器时,两线协议只有在电压稳压器过驱时才有效。2)PWM/SDA:数字输入/输出,用于测量物体温度,有PWM输出和SMBus输出模式。可在EEPROM里编程来改变引脚模式为推挽式或是开漏NMOS式(出厂默认为开漏NMOS式)。在SMBus模式里,SDA为开漏式NMOSIO端口,PWM/热动继电器工作模式时该引脚为推挽式。EEPROM(ElectricallyErasableProgrammablereadonlymemory)是指带电可擦可编程只读存储器。是一种掉电后数据不丢失的存储芯片。EEPROM可以在电脑上或专用设备上擦除已有信息,重新编程。一般用在即插即用。4.1SMBus总线功能红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理114

SMBus接口为两线串行协议,允许主控器件(MD)和1个或1个以上的从动器件(SD)通信。系统在给定的时刻只有1个主控器件。MLX90614只作为从动器件使用。一般来讲,MD是通过从动地址(SA)选择从动器件并开始数据传输。MD可以对RAM和EEPROM的数据进行读取,并可对EEPROM其中9个单元进行写入操作(地址为0x20h,0x21h,0x22h,0x23h,0x24h,0x25h,0x2Eh,0x2Fh,0x39h)。当对MLX90614进行读取操作,如果器件本身EEPROM里存储的从动地址和主控器件发送的从动地址一致的情况下,器件会回馈以16位的数据和8位PEC。SA的特性允许在两线上连接多达127个器件。在器件接在总线之前,为了访问器件或是给SD分配1个地址,通信必须以0从动地址(SA)加低R/W位开始,当MD发送此命令,MLX90614总是会反馈并忽视内部芯片编码信息。

注意:不要将同一从动地址的MLX90614器件接在同一总线上,因为MLX90614不支持ARP。MD可以使MLX90614工作在低功耗的“睡眠模式”。4.2SMBus总线协议红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理115MLX90614的PWM/SDA引脚是否作为PWM模式,取决于EEPROM的设置。

如果设为PWM使能,在上电复位(POR)之后,PWM/SDA引脚被直接配置为PWM输出。可以通过一个特殊的命令来使引脚回避PWM模式而恢复到数据传送(SDA)功能。1)SMBus所含元素SMBus包含的元素如图2-15所示。在SD接收到每个8位数据后,会回复ACK/NACK信息。当MD初始化通信,将首先发送受控地址,只有能识别该地址的SD会确认,其它的会保持沉默。如果SD未确认其中的任意字节,MD应停止通信并重新发送信息。图2-15SMBus包含要素4.2SMBus总线协议红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理1162)SMBus读取数据格式SMBus读取数据的格式取决于命令RAM或EEPROM。读取数据格式如图2-16所示。图2-16SMBus读取数据格式4.2SMBus总线协议红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理1173)SMBus写入数据格式SMBus只能对EEPROM写入数据。写入数据格式如图2-17所示。图2-17SMBus写入数据格式4.3SMBus的AC特性红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理118

MLX90614满足所有SMBus时序规范。MLX90614SMBus时钟的最大频率为100KHz,最小为10KHz。

MLX90614SMBus的特定时序为:

●SMBusRequest(tREQ)定义了一段时间(至少1.44ms),在这段时间里SCL应该置为低电平以使MLX90614从PWM模式转换为SMBus模式;

●TimeoutL是将SCL置为低电平允许的最长时间(不多于45us)。这段时间后ML.X90614会置通信模块并准备重新通信;

●TimeoutH是将SCL置为高电平允许的最长时间(不多于27ms)。这段时间后会假定总线是空闲的(根据SMBus规范)并重置通信模块;

●Tsuac(SD)定义了一段时间(不超过2us),此时间在SCL的第8个下降沿后,MLX90614会将SDA置为低电平以确认接受的字节,:1)SMBus时序4.3SMBus的AC特性红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理119

●Thdac(SD)定义了一段时间(不超过1.5us),此时间在SCL的第9个下降沿后,MLX90614释放PWM/SDA(MD可以继续通信);●Tsuac(MD)定义了一段时间(不超过0.5us),此时间在SCL的第八个下降沿后,MLX90614会释放PwM/SDA(MD可以确认接收的字节);●Thdac(MD)定义了一段时间(不超过1.5us),此时间在SCL的第九个下降沿后,MLX90614会控制PWMSDA(它可维续传送下个字节);

在最新时序用到MD和SD索引,其中MD当主控器件在确认,SD当从动器件。1)SMBus时序4.3SMBus的AC特性红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理1202)SMBus位传送图2-18SMBus时序图2-19SMBus位传送

PWM/SDA的数据必须在SCL为低电平时改变。数据在SCL上升沿被MD和SD读取,建议在SCL为低电平的中间时刻改变数据。4.4MLX90614驱动程序设计红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理121能力目标:1)会编写SMBus控制I/O端口的初始化程序2)会编写MLX90614发送起始位子程序3)会编写MLX90614发送结束位子程序4)会编写MLX90614发送字节子程序5)会编写MLX90614发送位子程序6)会编写MLX90614接收字节子程序7)会编写MLX90614接收位子程序4.4MLX90614驱动程序设计红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理122表2-8MLX90614操作命令表说明:1)xxxxx代表要读取/写入的内存地址的5LSB位;2)读取标识符类似读命令。MLX90614在传送16位数据后会反馈PEC,其中只有4位是MD需要的,它会在传送完第1个子节后停止通信,读取(除读取标识符之外的其他读操作)和读取标示符的区别在于后者没有重复起始位。MLX90614内部RAM大小为32x17,EEPROM大小为32x16。读取RAM时,由于RAM种含有符号位,数据被分为两部分。4.4MLX90614驱动程序设计红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理123程序设计1)建立红外温度计测量项目工程

把已经建好的工程模板复制1份,再把工程文件夹的名称改为STM32F103_irTe,如图2-20所示。图2-20复制工程模板4.4MLX90614驱动程序设计红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理124程序设计2)新建MLX90614程序模块文件夹

打开D:\STM32F103_irTem项目文件夹,找到该文件夹下面的HARDWARE子文件夹,然后双击该文件夹,进入HARDWARE文件夹后,单击鼠标右键,新建一个文件夹并更名为MLX90614,至此,新建MLX90614程序文件夹的工作就完成了。4.4MLX90614驱动程序设计红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理125程序设计3)新建MLX90614驱动程序文件

打开工程,单击

左上角File菜单,在弹出的下拉快捷菜单中,单击new,会新建一个名称为Text1的文本文件。用同样的方法,新建File2文本文件。图2-21新建驱动程序文件夹4.4MLX90614驱动程序设计红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理126程序设计3)新建MLX90614驱动程序文件

选中Text1文本文件,文件被选中为当前可编辑状态时,在文件名下面有条下划线,Text1文件就为当前可操作的文件。,如图2-21中②所示,Textl文件就为当前可操作的文件。然后点击File菜单,在弹出的下拉菜单中单击SaveAs...,把路径定位到:D:\STM32F103_irTem\HARDWARE\MLX90614,文件名改为mlx90614.c。同样的方法,把Text2文件名改为mlx90614.h,也保存到MLX90614文件夹下面。至此,MLX90614驱动程序文件就新建完成了。4.4MLX90614驱动程序设计红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理127程序设计4)把MLX90614驱动程序文件添加到工程中

经过第3步的操作,虽然我们完成了MLX90614驱动程序文件的创建,但是它们并没有被加入到工程中,不参与工程编译,也就是说,这两个文件对工程而言,暂时是没有用处的。我们必须先将MLX90614驱动程序文件添加到工程管理窗口HARDWARE程序分组中,并为其指定好头文件路径,该程序模块才会被编译、链接、生成可执行代码。图2-22mlx90614添加到工程4.4MLX90614驱动程序设计红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理128程序设计5)编辑MLX90614源文件

首先打开mxl90614.c,打开文件后,输入#include"mIx90614.h",#include"delay.h",包含mlx90614的头文件和延时模块的头文件。这两行程序输入完成后,编译工程,不要管编译结果是否有错误,编译完成后,mx190614.c所用到头文件都被关联进来了。4.4MLX90614驱动程序设计红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理1296)编辑mlx90614.h

#ifndef_MLX90614_H#define_MLX90614_H#include"sys.h"//mlx90614端口定义#defineSDA_IN(){GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;}#defineSDA_OUT(){GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;}#defineSMB_SCLPBout(6)//SCL#defineSMB_SDAPBout(7)//SDA#defineREAD_SDAPBin(7)//输入SDA#defineNack_counter104.4MLX90614驱动程序设计红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理1306)编辑mlx90614.h

externu8bit_out;externu8bit_in;externu8DataH,DataL,Pecreg;#defineMLX90614_I2CADDR0x00//RAM#defineMLX90614_TOBJ10X07//SMB所有操作函数voidSMB_Init(void);//初始化SMB的IO口voidstart_bit(void);

//向MLX90614发起始位子程序

voidstop_bit(void);

//向MLX90614发结束位子程序u8rx_byte(void);

//从MLX90614接收字节子程序

voidsend_bit(void);

//向MLX90614发送位子程序voidtx_byte(u8dat_byte);

//向MLX90614发送字节子程序voidreceive_bit(void);

//从MLX90614接收位子程序u16memread(void);

//读温度数据子程序floatcal_tem(u16memdata,u8f_c);//读温度数据#endif4.4MLX90614驱动程序设计红外温度传感器LCM1602液晶显示按键驱动及红外温度计电路设计MLX90614SMBus总线MLX90614温度计读取和计算原理131编辑mlx90614.c

(1)mlx90614.c头文件和变量定义源程序

#include"mlx90614.h"

#include"delay.h"

u8bit_out=0;

u8bit_in=0;

u8DataH,DataL,Pecreg;(2)SMBbusIO初始化函数voidSMB_Init(void){ GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能GPIOB时钟 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure); GPIO_SetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论