文档库 最新最全的文档下载
当前位置:文档库 › 基于STM32的温度测量系统

基于STM32的温度测量系统

基于STM32的温度测量系统
基于STM32的温度测量系统

基于STM32的温度测量系统

梁栋

(德州学院物理与电子信息学院,山东德州253023)

摘要:温度是日常生活和农业生产中的一个重要参数,传统的温度计有反应缓慢,测量精度不高的和读数不方便等缺点,此外,通常需要人工去观测温度,比较繁琐,因而采用电子技术的温度测量就显得很有意义了。

面对电子信息技术的进步,生成了各种形式的温度测量系统。本文设计了一个基于以STM32为核心的温度测量与无线传送的系统,温度信息采集使用数字化温度传感器DS18B20,无线传输使用ATK-HC05蓝牙模块的智能测温系统。

关键词 STM32; DS18B20; TFTLCD;智能测温系统

1 绪论

在现代社会的生产生活中,人们对于产品的精度要求越来越高,而温度是人们在生产生活中十分关注的参数,因此,对温度的测量以及监控就显得十分重要。在某些行业中对温度的要求较高,由于工作环境温度的偏差进而引发事故。如化工业中做酶的发酵,必须时刻了解所发酵酶的温度才可以得到所需酶;文物的保护同样也离不开温度的采集,不仅在考古文物的出土时间上,还是在档案馆和纪念馆中,温度的控制也是藏品保存关键,所以温度的检测对其也是具有重要意义的;另外大型机房的温度的采集,超出此范围会影响服务器或系统的正常工作等等。传统方式监控温度往往很耗费人力,而且实时性差。本文就设计了一个基于STM32的温度测量系统,在测量温度的同时能实现无线传输与控制。

STM32RBT6具有较低的价格、较高的测量精度、便捷的操作,同时在编程方面STM32也具有和其他单片机的优势之处,如51要求从基层编程,而STM32所有的初始化和一些驱动的程序都是以模板的形式提供给开发者,在此开发者只需要了些其他的模块功能和工作方式和少量的语法知识便可以进行编程,此优势不但节约了时间,也为STM32的发展做出了强有力的铺垫,而且STM32目前是刚刚被作为主流开发的单片机,所以其前景是无可估量的,这次毕业设计也是看好了其优越的发展趋势来选择的。

无线传输采用蓝牙技术,将采集的温度传输至终端,以此实现远程监控。利用“蓝牙”技术,能够在10米的半径范围内实现单点对多点的无线数据传输,其数据传输带宽可达1Mbps。综合考虑,在设计硬件时选择的软件是Altium Designer,该软件集成了电路仿真、原理图设计、信号完整性设计、分析等诸多功能,使用起来很方便。通过原理图的绘制,

对整体的结构有了更深一步的了解。借助RealView MDK完成软件部分的设计,它包括RealView编译器、Keil μVision3开发环境,可以使用Cortex-M3核处理器,代码实现自动配置、自动启动,配有Flash烧写模块,Simulation设备模拟功能极其强大,可以针对软件实现仿真。在仿真过程中,能够对和硬件有关的寄存器进行查看,通过观察这些寄存器,就能很容易的检查代码的功能是否符合设计要求,出现错误时也方便找出原因。通过Jlink 连接处理器后,还能进行在线调试,就能实时跟踪程序在硬件上的执行状况,可以进行复位、执行到断点处、挂起、执行进去、执行过去、执行出去等丰富的操作,例如,单步执行程序,就可以看到每一行代码在硬件的所起的效果,这样更直观,更方便对程序进行改进。这个功能在软件设计的过程中给予我极大的帮助,STM32的寄存器比较繁杂,使用时很容易遗漏某些部分,而在线调试就容易找出问题所在,从而进行纠正。

最后的成品较好的完成了预定的设计要求,能准确的显示温度数据,能与移动终端实现异步双工通信,达到传输温度和远程控制的目的。

通过本次设计,更加深入的理解了stm32的相关寄存器,并掌握其工作原理。更加深入的学习和应用一些工具软件,如Altium Designer、RealView MDK,通过对这些软件的使用,也加深了对相关知识的理解。本次的毕业设计题目相关的知识包括:电路原理、数电、模电、单片机原理、c语言、通信原理等,有效的培养分析和解决实际问题的综合能力,得到更加全面的培养和锻炼,是对大学期间所学知识的一次综合性应用。

2 系统分析

本系统是基于STM32 微控制器所设计的温度测量系统,通过温度芯片传感器

DS18B20测量温度,微控制器驱动液晶模块显示当前测得的温度,然后由蓝牙将温度信息发送至手机终端,同时接收终端反馈的控制信息。

整个系统模块分为四个模块:主芯片模块、DS18B20温度模块、液晶显示、蓝牙模块。MCU 是STM32 主芯片的最小板,上面有芯片工作需要的最少资源:时钟控制电路、JTAG 接口、复位电路以及与外围电路相连的接口。DS18B20和液晶分别是温度测量、控制显示部分。而蓝牙模块负责完成与移动终端的异步双工通信。

2.1 STM32芯片

作为一种ARM Cortex-M3内核,STM32系列是以嵌入式应用为设计基础,具有功耗低、成本低、性能高的特点和优势。根据性能的不同,STM32分为STM32F103“增强型”、STM32F101“基本型”两个主要的系列。前者使用频率为72MHz的时钟,在同类产品中,

该产品具有最高的性能;后者使用频率为36MHz的时钟,其价格与16位的产品相近,而其性能要比16位产品高的多,如果用户选择16位产品,此款产品是不二之选。在两个系列中配备的闪存大小由32-128K,只是在外设结构、SRAM最大容量方面存在不同的组合。对于频率为72MHz的时钟,代码均在闪存中执行,市场上32位的产品系列中,STM32具有最低的功耗,低至36mA,即0.5mA/MHz。

在STM32中,其内核Cortex-M3的性能非常高,为1.25DMips/MHz;其外设也是非常先进的:ADC(双12位、1us)、SPI(18兆位/秒)、较快的I/O翻转速度(18MHZ)、UART(4兆位/秒);工作在72MHz的时钟之下,其电流为36mA,待机时低至2uA。

内核:Cortex-M3 CPU(32位的ARM),工作频率最高可达72MHz、1.25DMIPS/MHz,支持硬件除法、单周期乘法。

存储器:集成的Flash存储器大小由32-512KB,SRAM存储器大小由6-64KB。

电源、复位、时钟管理:电源、接口驱动电压范围由2.0-3.6V;可编程PVD(电压探测器)、PDR、POR;晶振为4-16MHz;内置校正过的RC振荡电路,频率为8MHz;其内部RC振荡电路频率为40KHz;PLL(提供CPU所用的时钟);用于RTC的晶振,频率为32kHz,带校准功能。

低功耗:主要包括待机、停止、休眠等低功耗模式,VBAT用于备用寄存器、RTC的电源需要。

调试模式:JTAG接口、串行调试(SWD)。

DMA:DMA控制器共有通道12个,支持USART、DAC、ADC、IIC、定时器等诸多外设。2个16通道的A/D转换器,均为us级,位数为12位,A/D可测量范围是0-3.6 V,具有保持、双采样的功能,同时还配置了温度传感器(1个)。

只有STM32F103xC/D/E才拥有2通道的A/D转换器,位数为12位,快速I/O端口的数量最高为112个,按照不同的型号,I/O端口主要可分为26、37、51、80、112几种,任何一个端口映射到的外部中断向量共有16个,除模拟输入外,还支持低于5V的输入。

定时器的数量最多可以配置11个,其中16位定时器共有4个,一个定时器拥有的脉冲计数器、PWM/OC/IC共有4个;6通道高级控制定时器共有2个,位数为16位,用于PWM输出的通道不能超过6个;看门狗定时器共有2个,分别是窗口、独立型;Systick 定时器是一种倒计数器,位数是24位;对DAC进行驱动的基本定时器共有2个,位数是16位。

通信接口最多不能超过13个,IIC接口共有两个,分别是PMBus、SMBus;USART 接口共有5个,分别是调试控制、IrDA兼容、ISO7816接口、LIN;SPI接口共有3个,速度为18 Mbit/s,其中与IIS复用的共有两个;2.0B的CAN、SDIO和USB 2.0全速接口。

STM32F103xx系列微控制器所使用的封装形式是ECOPACK封装。

ARM Cortex-M3内核集成了SRAM、Flash存储器。不同于8/16位设备,ARM Cortex-M3使用的RISC处理器是32位的,处理代码的效率更高。STM32F103xx微控制器配置相应的嵌入式ARM核,为此,对于一切ARM工具、软件都可以实现兼容。

内置的嵌入式Flash大小最高为512KB,可以对数据、程序进行存储,SRAM存储器大小最高至63KB,在实施读写操作时可以按照CPU的时钟速度。

STM32F103xC/D/E中都嵌入了FSMC,实现的片选共有4个,支持NAND、PSRAM、NOR、RAM、Flash模式。通过OR后,3个FSMC中断线可以和NVIC相连。它不具有FIFO的读写功能,只有PCCARD是在内部执行,其余代码的执行都是依靠外部存储器,并且不支持Boot功能,目标频率可以高达SYSCLK/2,为此,如果系统使用72MHz时钟,那么读写时的频率为36MHz。

配备矢量中断控制器(NVIC),除Cortex-M3中16根中断线外,可以对其余最多43个可屏蔽中断通道进行处理,在实施中断处理时具有更小的延迟,将中断入口向量表地址直接传送至内核,它所提供的内核结构可以实现中断提前处理,对于后到的中断,优先处理优先级更高的,可以实现尾链,对处理时的具体状态进行自动保存,在退出中断后,可以自动恢复中断入口,而无需任何指令。

它的外部中断/事件控制器主要组成部分是边沿探测器线,主要产生中断/事件请求,共计19条。对于每一条线,可以对其实施单独屏蔽,在下降沿、上升沿等触发事件的选择方面可以实现单独配置。为了使中断请求的状态得到维护,可以使用挂起的寄存器,相比内部APB2所对应的时钟周期,如果外部线上的脉冲周期更长,那么这种情况可以通过EXTI进行探测,GPIO的数量最多112个,和外部中断线(共计16个)相连。

启动时需要选择系统时钟,在执行复位操作时,CPU时钟使用内部晶振,频率为8MHz。通过监视4-16MHz的外部时钟判断成功与否,此过程中,在禁止控制器后,接着禁止软件中断管理。如果间接利用晶振未能获得成功,那么可以使用PLL时钟具有的中断管理。在对低速和高速APB,即APB1、PB2等AHB频率进行配置时可以借助多个预比较器,前者的频率最高不能超过36MHz,后者的频率最高可以达到72MHz。

启动时可以借助Boot引脚选择3种Boot选项中的任意一种,可以通过系统存储器、SRAM、用户Flash实现导入。Boot将相应的程序导入到系统的存储器内,借助USART1,重新编程Flash存储器。

所使用的VDD范围是2.0V-3.6V,借助VDD引脚为其提供相应的外部电源,主要用在内部调压器、IO接口。对应的VDDA、VSSA电压范围是2.0-3.6V,可以通过外部输入相应的模拟电压,主要用在PLL、RC、复位和ADC等模块,限制ADC的电压为2.4V,VDDA、VSSA处在VDD范围时需要和VDD、VSS相连接。VBAT具有的电压范围是1.8-3.6V,在VDD无效时变为RTC,借助电源的切换对备份寄存器、32KHz晶振供电。

在此设备上具有较为完整的上电、掉电复位电路,即POR、PDR,此电路时钟有效,保证电压2V的情况下可以正常启动,在电压降至2V时进行相应的操作。如果VDD比下限VPOR/PDR要低,那么该设备可以工作在复位模式,而无需外部复位。在设备中有可编程电压探测器(PVD),它可以对VDD进行检测,相比于VPVD,如果VDD高或者低,那么便会产生中断。中断服务程序可以把MCU处于安全状态,或者产生相应的警告信息,PVD主要使软件处于使能状态。

它配有低功耗(LPR)、主(MR)、掉电三种模式的调压器,传统调节模式使用MR,而停止模式使用LPR、待机模式使用掉电,掉电模式下,调压器高阻输出,核心电路发生掉电,在保证SRAM、寄存器内容未丢失的前提下消耗为零。

STM32F103xx支持3种模式的低功耗,非常好的平衡了唤醒源、短启动时间、低功耗的问题。CPU处于停止状态,外设正常运行,此模式即休眠模式,在发生中断/事件时CPU被唤醒;在寄存器、SRAM内容保持的过程中,使用最小功耗,即停止模式,停止1.8V区域内的时钟,同时禁用HSE RC、HSI、PLL,调压器处于低功耗或者正常状态。利用外部中断线可以将设备由停止模式成功唤醒,外部中断源可利用外部中断线产生TRC

警告,实现PVD输出。待机模式的功耗最小,会关闭内部的调压器,而切断1.8V区域的供电,同时关闭HSE RC、HSI、PLL。如果处于待机模式,寄存器、SRAM、待机电路、备份寄存器都会丢失各自的内容。如果出现IWDG、外部复位,或者WKUP引脚发生TRC 警告、出现上升沿,那么设备便由待机模式退出,当处在待机或者停止模式时,并不会停止IWDG、TRC、时钟源。

选型片的原则是:看功耗,本次设计的温度系统需要在外场长时间工作,必须保证较低的功耗;如果性能满足要求,那么必须保证较低的成本。

就此方面看,在当前32位市场上,STM32系列产品具有最低的功耗,低至36mA,相当0.5mA/MHz,具有36MHz的时钟,花费16位产品的价格,所得到的产品性能要比16位产品高的多,基于上述几点考虑,本次的mcu选定为STM32RBT6。

2.2 DS18B20

DALLAS半导体公司制作、推出了DS18B20,这是一款温度传感器,接口为“一线总线”。这不同于其他的测温元件,比如热敏电阻等,此温度传感器是数字化的,具有非常简单的微处理器接口、较宽的适用电压、较小的体积。“一线总线”经济而简洁,用户可以利用此接口对传感器网络进行组建,将全新概念引入到构建测量系统的过程中。利用“一线总线”的数字方式可以直接传输现场温度,使系统的抗干扰性得到极大的提升,能将被测温度直接读取出来,在读数时,结合现实情况,通过编程方式将数字值设定为9-12位,工作的电压范围是3-5.5V,封装方式有多种,更方便、灵活的设计系统,在EEPROM中存储用户预先设定的报警温度、分辨率,即使出现掉电,依然保存相关内容。

针对外设、单片机,在传输数据时,主要利用SCI、SPI、I2C等串行总线,在通信时,I2C总线使用的是同步串行二线模式,具有数据线、时钟线各一条;SPI总线使用的是同步串行三线模式,输出线、输入线、时钟线各一条;SCI总线使用的是异步模式,数据输入、输出线各一条。就DS18B20配有的单总线而言,它的信号线是单条的,可以对时钟、数据进行传输,可以实现双向的数据传输,同时拥有简单的线路、较少的硬件开销、廉价的成本,易于维护和扩展的总线。

出厂前已经在ROM中光记了它独有的64位序列号,即DS18B20对应的地址序列码,每个DS18B20具有完全不同的64位序列号。64位ROM按照以下方式进行排列,产品家族码用前8位表示,DS18B20的序列号用之后的48位表示,而前56位的循环冗余校验码用最后8位进行表示,即CRC=X8+X5 +X4 +1。对于DS18B20而言,ROM使其各不相同,如此便可以将多个挂接在一根总线上。

DS18B20具有较宽的电压范围,即3.0~5.5V,如果处于寄生电源模式下,供电由数据线完成,无需使用外围元件即可使用,在集成电路中集成了转换电路、传感元件。通过编程可以使其具有9-12位的分辨率,测试精度较高,温度分辨率为0.0625、0.125、0.25、0.5度。

2.3 TFTLCD

薄膜晶体管液晶显示器,即TFT-LCD,液晶成功解决了发光的问题,可以分解发光显

示器,主要是光源及其控制。液晶作为光源获得较大发展,在寿命、全彩色、发光效率方面取得了较大的进步,而且还处在不断提高的过程中。自发明LCD后,背光源进步明显,以往是单色、较厚、侧置荧光灯式的,而现在发展为彩色、较薄、平板荧光灯式的,发光光源发展较为迅速,新成果不断出现,LCD由此获得了较多的新背光源,光源科技不断发展,LCD会使用更好、更新的光源。在控制光源时,移植了半导体大规模集成电路领域的相关工艺、技术,并且成功研制出薄膜晶体管(TFT)的工艺,控制液晶光阀所对应的矩阵寻址,使液晶显示器更好的配合使用控制器、光阀,充分体现出了液晶显示的优势。

无源TN-LCD、STN-LCD、TFT-LCD具有不同的矩阵,针对液晶显示屏上的所有点,都专门设置了相应的薄膜晶体管(TFT),做到一对一,解决了在非选通状态时存在的串扰问题,使扫描线数不会影响到液晶屏所具有的静态特性,进而使图像质量得到极大提升,TFT-LCD即真彩液晶显示器。

TFT所指的是薄膜晶体管,可以控制屏幕上的所有像素,组成显示屏的像素可以发生任意颜色,为了达到目的,只需要对像素点所显示的颜色进行控制。TFT LCD使用了背光技术,在像素后需安装开关,此开关类似百叶窗,能够对像素显示的亮度、颜色进行精确的控制,在打开此开关时,光线便可以透进来,而关上开关,光线无法透过。实现过程中使用了液晶的特性,上、下层都有相应的沟槽,分别是纵向、横向排列,如果没有电压,液晶呈现自然状态,只要结构恰当,通过上层透过的光线会产生90度扭曲,而下层的光线可以顺利通过,加电压后变成产生相应的电场,液晶变成垂直排列,此时光线便无法再通过。

2.4 ATK-HC05蓝牙串口

作为蓝牙串口模块,ATK-HC05模块是主从一体的,而且性能较高,可以与PDA、手机、电脑等具有蓝牙功能的设备实现配对,该模块所支持的波特率范围非常大,为

4800~1382400,而且该模块和3.3V或5V的单片机系统相兼容,极其方便、灵活。

在建立微微网前,一切设备都是就绪状态,在此状态中,每1.28s未连接的设备便会对一次消息进行监听,唤醒设备后,在监听信息时可以预设32个调频频率,主设备初始化后实现连接进程。倘若已知设备的地址,通过页信息实现连接;倘若地址是未知的,那么通过页信息的查询信息实现连接。微微网中,如果设备未进行数据传输,那么它便进入节能状态。主设备设置从设备为保持方式,此过程中处于工作状态的只有内部定时器;从设备亦可以进入到保持方式。设备一旦转出保持方式便可以开始数据传输。在和几个微微

网相连,或者对低功耗器件进行管理时,常用保持方式。低功耗的另外两种工作方式是休眠、监听方式。鉴于蓝牙基带技术,其支持面向连接方式、无连接方式,前者传输语音,后者传输分组数据,温度数据就通过无连接方式传输。

蓝牙采用的是跳频和时分多址技术。为了使频谱扩展,需要利用伪随机码序列实现频移键控,此载波频率发生跳变,即为跳频。传统通信系统中使用定频方式,在发射机中,主振荡器具有固定的振荡频率,为了实现载波频率的跳变,得到跳频信号,按照控制指令改变主振荡器的频率。能够得到跳频信号的装置被称作跳频器,它主要包括跳频指令发生器、频率合成器。如果将跳频器等同于主振荡器,那么和传统的发信机没有任何不同。可以对模拟、数字形式的信号进行传送,之后利用调制器实现调制,进而得到固定频率的已调波信号,接着和频率合成器的主载波频率信号实现混频,此时输出载波频率符合射频通带要求的已调波信号,在经过高通滤波器反馈后,利用天线将信号发射出去,此过程即为发送定频信号的过程。时分多址是分割时间为不重叠的帧,再分割帧为不重叠的信道,和用户一一对应,主要利用信道对地质不同的信号进行区分,实现多址连接。

3 硬件设计

3.1 MCU

MCU选用的STM32RBT6,64引脚。对于PORTA、PORTB,利用排阻P1、P3引出相应的IO口,还可以利用P2引出PORTC口,按照相应的顺序排列PORTA、PORTB。

P2连接了DS18B20的数据口以及红外传感器的数据线,它们分别对应着PA0和PA1,只需要通过跳线帽将P2和P3连接起来就可以使用了。这里不直接连在一起的原因有二:1,防止红外传感器和DS18B20对这两个IO口作为其他功能使用的时候的影响;2,

DS18B20和红外传感器还可以用来给其他板子提供输入。

P4口与PL2303的串口输出相连接,和STM32的串口1相对应,使用时通过跳线帽将这两处连接起来。这样设计使得PA9和PA10用作其他用途使用的时候,不受到PL2303的影响。

P5口是另外一个IO引出排阵,将PORTC和PORTD等的剩余IO口从这里引出。

3.2 JTAG设计

作为国际标准测试协议,JTAG可以对芯片进行内部测试,标准的JTAG接口包括模式选择、时钟,以及数据的输入、输出线,即TMS、TCK、TDI、TDO。

3.3 TFTLCD电路设计

TFTLCD采用34引脚,部分对应关系为:LCD_LED对应PC10;LCD_CS对应PC9;

LCD_RS对应PC8;LCD_WR对应PC7;LCD_RD对应PC6;LCD_D[17:1];对应PB[15:0]。

4 软件设计

软件设计部分,包括两大部分:初始化和功能性设计。

4.1.1 时钟的初始化

对MCU而言,时钟是其驱动源,为了对STM32的系统时钟进行驱动,主要的时钟源有三种,即HSI和HSE振荡器时钟、PLL时钟。内部RC振荡器的频率为8MHz,产生HSI时钟信号,在其进行2分频后,可以用作PLL,HSE用户外部时钟、HSE外部陶瓷/晶体谐振器产生高速外部时钟信号,即HSE。此设计中使用的是PLL时钟,利用可配置分频器的PLL2时钟对HSE、HSI/2时钟进行倍频,之后将其输出。利用可配置的分频器,可以由HSE得到PLL2、PLL3。在完成倍频、预分频系数、时钟源的配置后对每个PLL

进行使能,只有输入时钟源达到稳定后方能使用。PLL一旦被使能便不能再更改其参数。如果将PLL的输入时钟源更改,要关闭当前的时钟源,必须先通过对寄存器(RCC_CFGR)的PLLSRC位进行配置后选择新时钟源。PLL在就绪时时钟中断寄存器(RCC_CIR)会产生中断,代码如下:

//系统时钟初始化函数

//pll:选择的倍频数,从2开始,最大值为16

void Stm32_Clock_Init(u8 PLL)

{

unsigned char temp=0;

MYRCC_DeInit(); //复位并配置向量表

RCC->CR|=0x00010000; //外部高速时钟使能HSEON

while(!(RCC->CR>>17));//等待外部时钟就绪

RCC->CFGR=0X00000400; //APB1/2=DIV2;AHB=DIV1;

PLL-=2;//抵消2个单位

RCC->CFGR|=PLL<<18; //设置PLL值2-16

RCC->CFGR|=1<<16; //PLLSRC ON

FLASH->ACR|=0x32; //FLASH 2个延时周期

RCC->CR|=0x01000000; //PLLON

while(!(RCC->CR>>25));//等待PLL锁定

RCC->CFGR|=0x00000002;//PLL作为系统时钟

while(temp!=0x02) //等待PLL作为系统时钟设置成功

{

temp=RCC->CFGR>>2;

temp&=0x03;

}

}

Stm32_Clock_Init函数中的变量只有一个,即PLL,主要用于时钟倍频数的配置,使用8MHz的晶振,将PLL值设定成9,此时STM32便以72M的速度运行。

唯一变量PLL是用来配置时钟的倍频数的,当前所用的晶振为8Mhz,PLL的值设为9,那么将运行在72M的速度下。另外,延时函数是经常使用的,为了实现延时,主要使用CM3内核处理器中的SysTick定时器,它是倒计数定时器,为24位,如果记到0,通过RELOAD寄存器对定时初值进行自动重装,只要不清除状态寄存器的使能位、SysTick控制,此过程一直持续,借助SysTick实现延时,不占用中断、系统定时器。

4.1.2 I/O初始化

每个GPI/O端口包括32位的GPIOx_ODR、GPIOx_IDR数据寄存器,GPIOx_CRH、GPIOx_CRL配置寄存器、GPIOx_LCKR锁定寄存器、GPIOx_BSRR置位/复位寄存器,16位的GPIOx_BRR复位寄存器。

通过软件可以将GPIO端口配置为开漏和推挽式复用功能、模拟输入、输入上拉/下拉、开漏输出等多个模式。能够对I/O端进行自由编程,不能利用字节、或半字节方式访问I/0端口寄存器,必须使用32位字。GPIOx_BRR、GPIOx_BSRR寄存器可以独立访问GPIO寄存器的读/更改;如此一来,在读和更改访问期间生成的IRQ不存在任何危险。下图是I/O端口位的基本结构。

#define

BITBAND(addr, bitnum)

((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))

#define MEM_ADDR(addr) *((volatile unsigned long *)(addr))

#define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum)) //IO口地址映射

#define GPIOA_ODR_Addr (GPIOA_BASE+12) //0x4001080C

#define GPIOB_ODR_Addr (GPIOB_BASE+12) //0x40010C0C

CRH的作用和CRL完全一样,只是CRL控制的是低8位输出口,而CRH控制的是高8位输出口。

RCC->APB2ENR|=1<<2; //使能PORTA时钟

RCC->APB2ENR|=1<<5; //使能PORT时钟

GPIOA->CRH&=0XFFFFFFF0;

GPIOA->CRH|=0X00000003;//PA8 推挽输出

GPIOA->ODR|=1<<8; //PA8 输出高

GPIOD->CRL&=0XFFFFF0FF;

GPIOD->CRL|=0X00000300;//PD2 推挽输出

GPIOD->ODR|=1<<2; //PD2 输出高

这里PA2与PD2分别对应LED0和LED1。此外,按键的初始化也就是对I/O进行设置,key0与key1分别对应PA13和PA15,都设置为上拉输入。

RCC->APB2ENR|=1<<2; //使能PORTA时钟

GPIOA->CRH&=0X000FFFFF;

GPIOA->CRH|=0X80800000; //PA13,15 设置为输入

GPIOA->ODR=1<<13;//PA13上拉

GPIOA->ODR=1<<15;//PA15上拉

4.1.3 串口初始化

本次设计中蓝牙的收发都是通过串口传至STM32内,最基本的设置是串口,即设置波特率。只有串口时钟开启之后才能利用STM32的串口,对IO口的模式进行设置,对奇偶校验位、数据位长度、波特率等重要信息进行配置,按如下步骤开展。

使能串口时钟。串口是STM32的外设,通过外设时钟使能寄存器控制其时钟,APB2ENR 寄存器第14位对应串口1,其余串口时钟的使能位均位于APB1ENR寄存器。

串口复位。如果外设表现异常,通过复位寄存器中相应的位可以对外设进行复位操作,之后对该外设进行重新设置,使其正常工作。所有的系统都是在对外设进行复位操作之后才对外设进行配置,APB2ENR寄存器第14位便是串口1的复位控制位。

设置串口的波特率。每个串口都有波特率寄存器USART_BRR,彼此独立,在对该寄存

器进行配置后便可以得到各种波特率。

串口控制。STM32中的串口对应USART_CR1~3控制寄存器,借助这3个寄存器对串口的很多功能进行设置。

RXNE(读数据寄存器非空),如果将该位设为1,表示接收到了数据,并且可以将其读取出来。此时需要对USART_DR进行及时读取,以此对该位进行清零,在该位写入0,实现直接清除。TC(发送完成),如果对该位实现置位,那么表示已经发送完USART_DR内的所有数据,倘若此位设置的是中断,它便会产生中断。使用两种方式实现该位的清零:1)读、写USART_SR;2)向该位直接写入0,代码见下:

void uart_init(u32 pclk2,u32 bound)

{

float temp;

u16 mantissa;

u16 fraction;

temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV

mantissa=temp; //得到整数部分

fraction=(temp-mantissa)*16; //得到小数部分

mantissa<<=4;

mantissa+=fraction;

RCC->APB2ENR|=1<<2; //使能PORTA口时钟

RCC->APB2ENR|=1<<14; //使能串口时钟

GPIOA->CRH&=0XFFFFF00F;//IO状态设置

GPIOA->CRH|=0X000008B0;

RCC->APB2RSTR|=1<<14; //复位串口1

RCC->APB2RSTR&=~(1<<14);//停止复位

//波特率设置

USART1->BRR=mantissa; //波特率设置

USART1->CR1|=0X200C; //1位停止,无校验位

#if EN_USART1_RX //使能接收中断

USART1->CR1|=1<<8; //PE中断使能

USART1->CR1|=1<<5; //接收缓冲区非空中断使能

MY_NVIC_Init(3,3,USART1_IRQChannel,2);//组2,最低优先级

#endif

}

4.1.4 DMA初始化

要使用DMA通道,需配置以下信息:

1.通过DMA_CPARx寄存器,对外设寄存器的地址进行设置,倘若请求外设数据传输,那么数据传输的目标或者源即为该地址。

2.通过DMA_CMARx寄存器,对数据存储器的地址进行设置,倘若请求外设传输数据,通过该地址读出传输的数据,或者将传输数据写入此地址。

3.使用DMA_CNDTRx寄存器,对传输的数据量进行设置,传输完数据后,该数值递减。

4.通过DMA_CCRx寄存器PL[1:0]位对通道的优先级进行设置。

5.利用DMA_CNDTRx寄存器,对数据的循环模式、传输方向、传输中断、存储器和外设的增量模式和数据宽度等进行设置。

6.对DMA_CCRx寄存器的ENABLE位进行设置,使该通道启动。

我使用的是串口2,对应着DMA的通道7,那么相应的外设寄存器的地址也就是

&USART2->DR;而将USART2_TX_BUF这个数组作为数据存储器,就向DMA_CMARx中写入

&USART2_TX_BUF;要传输的数据量通过strlen函数来测量后传输给DMA_CNDTR;由于仅需对一个通道进行开启,为此可以任意设置优先级;数据传输方向是从存储器读取;在循环模式启动后,如果数据传输的数量是0,那么自动恢复设置的初值,继续执行DMA操作,如果温度值已经被传输过,那么便不希望其重复传输,因而关闭循环模式;外设地址不变,存储器选择增量模式,它们的数据宽度都为8位,是为了适应蓝牙的数据传输。此外,传输一半和传输完成都无需产生中断,每传一次数据前都会关闭DMA通道,再重新开启通道。

4.1.5 中断初始化

传输数据到串口通过DMA方式,利用中断方式检测串口所接收的数据。

CM3内核使用的中断最多256个,内核、外部中断的数量各为16个、240个,可编程中断设置共有256级。STM32并未全部使用CM3内核的所有资源,使用的中断数量共有76个,内核、可屏蔽中断分别为16个、60个,可编程的中断优先级共有16级,而串口2是可屏蔽中断,中断向量地址为0x0000_00D8。

4.2 模块功能设计

4.2.1 DS18B20温度模块

初始化的顺序:首先把数据线置1,经过延时将其重新拉回0;再经过750us的延时,即“复位脉冲”,延时范围是480~960us;接着再将数据线拉高,继续延时等待,如果成功实现初始化,15~60ms内会产生低电平,经过DS18B20返回,按照此状态便可确定它的存在,为避免程序无线等待,需要执行超时判断;倘若CPU读到数据线上的低电平,再延时,以高电平为出发点计算延时的时间,最后拉高数据线。

4.2.2 TFTLCD模块设计

本次设计过程中,使用8080并口设计显示模块,主要包含CS、RD、WR,CS是TFTLCD 的片选信号,WR和RE分别向TFTLCD写入和读取数据;此外还有RS、RST、D[15:0],而RS 是命令/数据标志,0表示读、1表示写,RS对TFTLCD进行硬复位,D[15:0]是双向数据线,为16位。

8080并口读/写过程如下:按照将要读取/写入的数据类型对DC进行设置,高表示数据,低表示命令,之后将片选拉低,对SSD1306进行选中,之后对数据进行读或者写操作,即将RD/WR置低,之后数据在RD上升沿被锁存在数据线(D[7:0])上,最后数据在WR上升沿被写入SSD1306。

4.2.3 ATK-HC05蓝牙模块

ATK-HC05蓝牙串口模块所有功能都是通过AT指令集控制,进入AT状态有2种方法:

1.上电同时或上电之前将KEY设置为VCC;模块在上电后进入AT指令状态。

2.上电后,模块通过将KEY接VCC,使模块进入AT状态。

5 结论

给stm32上电后,温度正常显示。

参考文献

[1] STMicroelectronics Corporation.RM0008 Reference manual[S].2011.

[2] STMicroelectronics Corporation.STM32F103XX Datasheet[J].2007.

[3] 李宁.基于MDK的STM32处理器应用开发[M].北京:北京航空航天大学出版社.2008

[4] 刘军.例说STM32[M].北京:北京航空航天大学出版社.2011.

[5] 刘鹏程.基于ARM的温度测量系统[J].科技信息(学术研究).2008(18).77-78.

[6] 樊昌信,曹丽娜.通信原理[M].北京:国防工业出版社.2006.

Temperature Measurement System Based on STM32

Liang Dong

(College of Physics and Electronic Information ,Dezhou University,Dezhou,253023) Abstract Temperature is an important parameter in the daily life and agricultural production,the traditional thermometer has slow response and reading inconvenient shortcomings,the measurement accuracy is not high,in addition,usually requiring labor to observe the temperature,more cumbersome,and thus the temperature of the use of electronic technology it makes sense to measure it.

With the development of electronic technology,the emergence of various chip-based temperature measurement system.This paper presents an STM32-based temperature measurement and wireless transmission systems,the temperature acquisition using digital temperature sensor DS18B20,wireless transmission using ATK-HC05 Bluetooth module. Keywords STM32; DS18B20; take the temperature

致谢

大学本科的时光即将结束,回顾四年来的学习经历,面对现在的收获,我感到无限欣慰。

首先向指导老师张老师表示衷心的感谢并致以崇高的敬意。张老师给予我很多重要的指导,对学术研究的严谨值得我好好学习,还要感谢老师为学生营造的浓郁学术氛围,以及学习、生活上的无私帮助! 同时向热心帮助过我的所有老师和同学表示由衷的感谢!在论

文工作中,一直得到老师和学长的悉心指导,使我的论文可以又快又好的完成,值此论文完成之际,谨向各位老师和同学致以最崇高的谢意!

最后,衷心地感谢在百忙之中评阅论文和参加答辩的各位专家、教授。

(完整版)基于STM32的温湿度监测..

《物联网工程设计与实施》项目设计 项目课题:基于STM32的温湿度检测 院系:计算机科学与技术学院 专业:物联网工程 项目经理:于渊学号:123921043 副经理:谢金光学号:123921024 项目成员:李周恒学号:123921002 项目成员:袁桃学号: 123921048 项目成员:颉涛学号: 123921054 项目成员肖青学号: 123921025 项目成员冯锦荣学号: 123921011 项目成员唐敏学号: 123921023

指导教师: 2014 年 12月

目录 摘要 (5) Absract (7) 一.设计目标 (9) 二.设计方案 (9) 三.实验所需器材 (9) 四.设计内容 (9) 4.1 STM32模块 (9) 4.2 AM2302介绍 (11) 4.2.1 产品概述 (11) 4.2.2 应用范围 (12) 4.2.3 产品亮点 (12) 4.2.4 单总线接口定义 (12) 4.2.5 传感器性能 (13) 4.2.6 单总线通信 (14) 4.3 Nokia 5110 介绍 (15) 4.3.1 SPI接口时序写数据/命令 (15) 4.3.2 显示汉字 (16) 4.3.4 显示图形 (16) 4.4 原理图设计 (16) 4.5 PCB板设计 (17) 五.实验软件设计 (18) 5.1 温湿度传感器DHT22的程序 (18) 5.2 湿度显示函数 (21) 5.3主函数程序 (23) 5.3.1显屏程序 (23) 六.作品实物展示 (32) 七.设计总结 (33)

基于STM 32 的温湿度检测 摘要 随着现代社会的高速发展,越来越多的科学技术被应用于农业生产领域。在温室大棚中对温湿度、二氧化碳浓度等外部参数的实时准确的测量和调节更是保证农业高效生产的重要前提。本次课程设计中实现了一个基于STM32F103VET6的智能温湿度检测系统,目的是实现温湿度的采集和显示,温湿度的采集是作为自动化科学中一个必须掌握的检测技术,也是一项比较实用的技术。本次实验主要作了如下几个方面工作:首先通过对实时性、准确性、经济性和可扩展性等四个方向的分析比较之后,选择了STM32F103VE微控制器作为主控芯片和AM2303温湿度传感器来实现对温湿度数据进行采集;在Nokia5110显示屏上显示出温度和湿度,然后详细介绍了各个模块的工作原理和硬件电路设计思路,实现了温湿度数据实时准确的测量;之后阐述了系统各个部分的软件设计思路;最后对系统在实际应用中采集到的数据进行了处理,分析了误差产生的原因,并通过分段线性插值算法对系统非线性误差进行了校准,同未校准时采集的数据相比,校准后的数据准确度更高,稳定性更好。在保证测量效果的基础上,本系统设计中充分考虑到性价比和再次开发周期性等,具有成本低、设计开发方便、通用性强等特点,不仅适用于现代农业生产中,还能用于其它工业控制、机械制造等其它领域,具有一定的市场推广价值。 【关键词】:嵌入式技术,电路设计,STM32,AM2302温湿度采集,Nokia5110 显示屏,程序设计

stm32:系统时钟

实验4 系统时钟实验 上一章,我们介绍了STM32 内部系统滴答定时器,该滴答定时器产生的延时非常精确。在本章中,我们将自定义RCC系统时钟,通过改变其倍频与分频实现延时时间变化,实现LED灯闪烁效果。通过本章的学习,你将了解 RCC系统时钟的使用。本章分为以下学习目标: 1、了解 STM32 的系统构架。 2、了解 STM32 的时钟构架。 3、了解 RCC 时钟的操作步骤。 1.1 STM32 的系统构架 STM32 的时钟比较复杂,它可以选择多种时钟源,也可以选择不一样的时钟频率,而且在系统总线上面,每条系统的时钟选择都是有差异的。所以想要清楚的了解 STM32 的时钟分配,我们先来了解一下 STM32 的系统构架是什么样的。 从上图我们知道,RCC 时钟输出时钟出来,然后经过 AHB 系统总线,分别

分配给其他外设时钟,而不一样的外设,是先挂在不一样的桥上的。比如: ADC1、ADC2、 SPI1、GPIO 等都是挂在 APB2 上面,而有些是挂在 APB1上面,所以,虽然它们都是从 RCC 获取的时钟,但是它们的频率有时候是不一样的。 1.2 STM32 的时钟树 STM32 单片机上电之后,系统默认是用的时钟是单片机内部的高速晶振时钟,而这个晶振容易受到温度的影响,所以晶振跳动的时候不是有一定的影响,所以一般开发使用的时候都是使用外部晶振,而且单片机刚启动的时候,它的时钟频率是 8MHZ,而 STM32 时钟的最高频率是 72MHZ,所以单片机一般开机之后运行的程序是切换时钟来源,并设置时钟频率。大家可能有点疑惑,在第一章到第三章之中,我们并没有看到单片机开机之后设置时钟来源和时钟频率的。其实在使用库函数的时候,其实在库函数启动文件里面,是帮助我们把时钟频率设置到 72MHZ 了。大家可以打开一个库函数工程,在 system_stm32f10x.c 的第 106行,它定义了一个 SYSCLK_FREQ_72MHz: #if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL) /* #define SYSCLK_FREQ_HSE HSE_VALUE */ #define SYSCLK_FREQ_24MHz 24000000 #else #define SYSCLK_FREQ_72MHz 72000000 然后在下面的程序中,根据这个 SYSCLK_FREQ_72MHz 定义,它默认设置成 72MHZ。接下来我们来看一下具体的 RCC 时钟树:

基于STM32的温度测量系统

基于ST M32的温度测量系统 Tem p e ra tu re M e a su rem e n t S ys tem B a se d o n the S T M 32 曹圆圆 (华北电力大学控制科学与工程学院 河北保定 071003) [摘要] 介绍一种基于ST M32处理器的温度测量系统设计方案。以ST M32F103RBT6微控制器为核心,采用AD590作温度传感器,测量温度用四位数码管显示,能够同PC 机进行串口通信。具有体积小、精度高、处理能力强等特点。 [关键词] 温度测量;ST M32;AD590 [中图分类号] TP 273 [文献标志码] B 温度是日常生活与工农业生产中的一个重要参数,传统的温度计存在反应速度慢、测量精度不高以及读数麻烦等缺点,随着电子技术的发展,各种基于单片机的温度测量系统先后被提出。温度传感器AD590具有线性度好、性能稳定、灵敏度高、抗干扰能力强等优点;鉴于目前AR M 微处理器在国内的广泛应用和广阔的发展前景,本文采用AD590温度传感器,基于一款AR M 微处理器ST M32F103RBT6作为系统核心,设计了一种温度测量系统。它不仅可以通过四位数码管直观显示00.00~99.99℃,还可以完成同PC 机的通信,并详细介绍了其硬件设计和相关程序编写。 1 系统结构 温度测量系统主要有温度测量、温度显示电路、 RS232串行通讯等模块。主控电路由ST M32F103RBT6 及其外围电路组成,是系统的核心部分,主要完成数据 的传输和处理工作。温度传感器采集的模拟信号,经 过处理器本身内嵌的ADC 进行A /D 转换后得到实时 温度数据,再经处理器相关处理后通过温度显示电路 进行实时显示,同时,处理器还可以实现与PC 机的通 信功能。 ST M32系列处理器是意法半导体ST 公司生产 的一种基于ARMv7架构的32位、支持实时仿真和跟 踪的微控制器。嵌入式处理器不能独立工作,必须给 它提供电源、时钟以及复位电路。这些提供给嵌入式 处理器运行所必须的条件电路与嵌入式处理器共同 构成了这个嵌入式处理器的最小系统。其他如JT AG 调试接口,在芯片实际工作时不是必须的,但本系统是利用JT AG 烧写在板F LASH,因此将其加入最小系统 。系统的整体结构框如图1所示。 图1 系统整体结构框图 2 硬件设计 2.1 ST M 32F 103RBT 6微控制器 ST M32F103RBT6是一款基于CORTEX -M3内 核、高性能、低成本、低功耗的微控制器,在软件和引 脚封装方面同其他ST M32系列处理器是兼容的。 它的时钟频率达到72MHz,能实现高端运算。 内嵌128K B F LASH 程序存储器。丰富的外设, UART 、SP I 等串行接口以及最大翻转率18MHz 的 GP I O 。更重要的是它拥有最快1 μs 转换速度的双12位精度ADC,此快速采集,高性能的ADC 非常适用于 数据的快速采集和快速处理上,这也是本系统选择它 作为核心控制器的一个重要原因。 如图2所示,ST M 32F103RB T6采用LQ FP64 封装,GP I O 中PA0(ADC_I N 0)引脚接入测温电路 输入的电压模拟信号,PA9和PA10引脚为串口输 入输出,PA1~PA4作为4个数码管的位选信号控 制,PC0~PC7输出信号接到数码管的段选引脚 上。 — 61— 《仪器仪表与分析监测》2010年第1期

设置stm32系统各部分时钟

设置stm32系统各部分时钟 函数如下: /******************************************************************** ****** * 函数名: RccInitialisation* 函数描述: 设置系统各部分时钟* 输入参数: 无* 输出结果: 无* 返回值: 无 ******************************************************************** ******/void RccInitialisation(void){/* 定义枚举类型变量HSEStartUpStatus */ErrorStatus HSEStartUpStatus;/* 复位系统时钟设置*/RCC_DeInit();/* 开启HSE*/RCC_HSEConfig(RCC_HSE_ON);/* 等待HSE 起振并稳定*/HSEStartUpStatus = RCC_WaitForHSEStartUp();/* 判断HSE 起是否振成功,是则进入if()内部*/if(HSEStartUpStatus == SUCCESS){/* 选择HCLK(AHB)时钟源为SYSCLK 1 分频*/RCC_HCLKConfig(RCC_SYSCLK_Div1);/* 选择PCLK2 时钟源为HCLK(AHB) 1 分频 */RCC_PCLK2Config(RCC_HCLK_Div1);/* 选择PCLK1 时钟源为HCLK(AHB) 2 分频*/RCC_PCLK1Config(RCC_HCLK_Div2);/* 设置FLASH 延时周期数为2 */FLASH_SetLatency(FLASH_Latency_2);/* 使能FLASH 预取缓存*/FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); /* 选择锁相环(PLL)时钟源为HSE 1 分频,倍频数为9,则PLL 输出频率为 8MHz * 9 = 72MHz*/RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);/* 使能PLL */RCC_PLLCmd(ENABLE);/* 等待PLL 输出稳 定*/while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);/* 选择

基于STM32温控风扇设计

齐齐哈尔大学 综合实践(论文) 题目基于STM32的温控风扇 学院通信与电子工程学院 专业班级 学生姓名 学生学号 指导教师朱磊

摘要:随着科技的日新月异,智能家居逐渐走入普通家庭,风扇作为基本的家用电器也将成为智能家居的一部分。这里介绍的是以STM32单片机为控制单元并结合嵌入式技术设计的一款具有温控调速、液晶显示温度等信息的智能电风扇。经过前期设计、制作和最终的测试得出,该风扇电源稳定性好,操作方便,运行可靠,功能强大,价格低廉,节约能耗,能够满足用户多元化的需求。该风扇具有的人性化设计和低廉的价格很适合普通用户家庭使用。 关键词:STM32单片机电风扇温控调速

目录 摘要............................................................................. 错误!未定义书签。 第1章绪论 (1) 1.1 概述............................................................ 错误!未定义书签。 1.2 设计目的及应用 (1) 第2章温控电风扇方案论证 (2) 2.1 温度传感器的选择 (2) 2.2 控制核心的选择 (2) 2.3 显示电路的选择 (3) 2.4 调速方式的选择 (3) 第3章温控电风扇硬件设计 (5) 3.1 硬件系统总体设计 (5) 3.2 本系统各器件简介 (5) 3.2.1 DS18B20简介 (5) 3.2.2 STM32简介 (7) 3.2.3 LCD1602液晶屏简介 (8) 3.3 各部分电路设计 (9) 3.3.1 温度传感器的电路 (9) 3.3.2 LCD1602液晶屏显示电路 (10) 第4章温控电风扇软件设计 (11) 4.1 软件系统总体设计 (11) 4.2 系统初始化程序设计 (11) 4.3 温度采集与显示程序设计..................... 1错误!未定义书签。结论 (14) 参考文献 (15) 附录1 (16) 附录2 (25)

(完整版)基于stm32的温度测量系统

基于STM32的温度测量系统 梁栋 (德州学院物理与电子信息学院,山东德州253023) 摘要:温度是日常生活和农业生产中的一个重要参数,传统的温度计有反应缓慢,测量精度不高的和读数不方便等缺点,此外,通常需要人工去观测温度,比较繁琐,因而采用电子技术的温度测量就显得很有意义了。 面对电子信息技术的进步,生成了各种形式的温度测量系统。本文设计了一个基于以STM32为核心的温度测量与无线传送的系统,温度信息采集使用数字化温度传感器DS18B20,无线传输使用ATK-HC05蓝牙模块的智能测温系统。 关键词 STM32; DS18B20; TFTLCD;智能测温系统 1 绪论 在现代社会的生产生活中,人们对于产品的精度要求越来越高,而温度是人们在生产生活中十分关注的参数,因此,对温度的测量以及监控就显得十分重要。在某些行业中对温度的要求较高,由于工作环境温度的偏差进而引发事故。如化工业中做酶的发酵,必须时刻了解所发酵酶的温度才可以得到所需酶;文物的保护同样也离不开温度的采集,不仅在考古文物的出土时间上,还是在档案馆和纪念馆中,温度的控制也是藏品保存关键,所以温度的检测对其也是具有重要意义的;另外大型机房的温度的采集,超出此范围会影响服务器或系统的正常工作等等。传统方式监控温度往往很耗费人力,而且实时性差。本文就设计了一个基于STM32的温度测量系统,在测量温度的同时能实现无线传输与控制。 STM32RBT6具有较低的价格、较高的测量精度、便捷的操作,同时在编程方面STM32也具有和其他单片机的优势之处,如51要求从基层编程,而STM32所有的初始化和一些驱动的程序都是以模板的形式提供给开发者,在此开发者只需要了些其他的模块功能和工作方式和少量的语法知识便可以进行编程,此优势不但节约了时间,也为STM32的发展做出了强有力的铺垫,而且STM32目前是刚刚被作为主流开发的单片机,所以其前景是无可估量的,这次毕业设计也是看好了其优越的发展趋势来选择的。 无线传输采用蓝牙技术,将采集的温度传输至终端,以此实现远程监控。利用“蓝牙”技术,能够在10米的半径范围内实现单点对多点的无线数据传输,其数据传输带宽可达1Mbps。综合考虑,在设计硬件时选择的软件是Altium Designer,该软件集成了电路仿真、原理图设计、信号完整性设计、分析等诸多功能,使用起来很方便。通过原理图的绘制,

stm32系统时钟配置问题

stm32系统时钟配置问题 系统从上电复位到72mz 配置好之前,提供时钟的是内如高速rc 振荡器提 供8MZ 的频率,这个由下面void SystemInit (void)函数的前面的一部分代码来 完成的和保证的:RCC->CR |= (uint32_t)0x00000001; #ifndef STM32F10X_CLRCC->CFGR &= (uint32_t)0xF8FF0000;#elseRCC- >CFGR &= (uint32_t)0xF0FF0000;#endif RCC->CR &= (uint32_t)0xFEF6FFFF; RCC->CR &= (uint32_t)0xFFFBFFFF; RCC->CFGR &= (uint32_t)0xFF80FFFF; #ifdef STM32F10X_CLRCC->CR &= (uint32_t)0xEBFFFFFF; RCC->CIR = 0x00FF0000; RCC->CFGR2 = 0x00000000;#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)RCC->CIR = 0x009F0000; RCC->CFGR2 = 0x00000000;#elseRCC->CIR = 0x009F0000;#endif#if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL)#ifdef DATA_IN_ExtSRAMSystemInit_ExtMemCtl();#endif#endif 接着void SystemInit (void)调用SetSysClock();函数,将系统时钟配置到 72m,将AHB,APB1,APB2 等外设之前的时钟都配置好,然后切换到72mz 下 运行。所以在使用哪个外设的时候,只需要使能相应的外设时钟就可以了 tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

基于stm32温湿度监控装置设计(1)

王江红(1993-),男,云南曲靖人,汉族,学生,在读本科,所学专业通信工程 基于stm32的温湿度监控系统设计 王江红胡湘娟阳泳 邵阳学院信息工程系湖南邵阳422004 摘要:温湿度的监测对于当前控制室内环境,改善室内环境起着重要的作用,为了提高室内用户的舒适度,一般都会对室内的温湿度进行监控,通过监测温湿度的变化情况来确定下一步的动作,例如在温室中严格监控室内温度,使得温室内的植物能到最合适的生存环境。本文就基于stm32的温湿度监控系统设计问题进行了全面分析,通过其有效的提高温度的时效性管理意义重大。 关键字:stm32;温湿度;ucosII系统;监控系统设计 此次的基于STM32的温湿度监控系统设计主要是32位的单片机为主控芯片,DHT11为温湿度监测装置,搭载的是ucosII操作系统,显示设备为主控ITL9438的彩屏,通过DHT11采集的信息对经过单片机的内部程序的处理,将其以数字的形式显示在彩屏上,并且同时根据单片机内部的温度设定值进行相应的动作,实现的室内温湿度的智能控制。 1、温湿度监控系统设计 1.1、温湿度监控系统硬件设计 系统主控芯片为Stm32F103ZET6,除了必须的Stm32单片机正常的驱动的电路之外,彩屏为使用的是已经做成模块的ITL9438彩屏,而采集模块则是使用的DHT11,如图所示为使用的DHT11的引脚图,可得知只要通过采集Dout引脚的输出的电平变化,查看数据手册,根据DHT11的时序图写出相应的驱动程序,驱动DHT11温湿度传感器。彩屏的程序可以直接使用的屏幕厂家写好的程序,移植到Stm32上既可,而通过将Dout引脚上的高低电平变化,进行相应的数据处理可以将温湿度数据已数字的形式显现在彩屏上,通过内部的程序根据比较当前的温湿度值与设定的参数值进行比较,使得进行下一步的温湿度调节动作,通过向外部电路发送信号,例如温度高了,打开排风机降低室内的温度等措施优先对温度的控制,这与空调的原理类似,但是系统比空调电路简捷的多。 DHT11数字湿温度传感器采用单总线数据格式,单个数据引脚端口完成输入输出双向传输。其数据包由5Byte(40Bit)组成。数据分小数部分和整数部分,一次完整的数据传输为40bit,高位先出。DHT11的数据格式为:8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验和。其中校验和数据为前四个字节相加,传感器数据输出的是未编码的二进制数据。数据(湿度、 温度、整数、小数)之间应该分开处理。 1.2、温湿度监控系统软件设计 此次的温湿度监控系统软件设计主要实在keil4中完成,操作系统为UCOSII,将UCOSII系统移植到当前单片机上,并且建立相应的任务堆栈,通过调用任务堆栈的形式实现的对系统运行,将DHT11的Dout引脚与PG11连接,PG11引脚设置的为输入模式,用于采集Dout引脚的电平变化。开机的时候先检测是否有DHT11存在,如果没有,则提示错误。只有在检测到DHT11之后才开始读取温湿度值,并显示在LCD上,如果发现了DHT11,则程序每隔100ms左右读取一次数据,并把温湿度显示在LCD上。同时会使用一个LED来指示程序运行状况。 温湿度监控系统的软件设计主要分为的LED驱动程序、LCD驱动程序、DHT11驱动程

基于某STM32的PT100温度测量

基于STM32的PT100温度测量

目录 一、前言 (1) 二、系统描述 (1) 2.1 综述 (1) 2.2 系统框图 (1) 2.3 功能实现 (1) 三、硬件设计 (2) 3.1 STM32 微控制器 (2) 3.2 PT100温度传感器电路 (3) 3.3 1602液晶屏 (4) 四、软件设计 (4) 4.1 ADC程序 (4) 4.2 1602LCD显示程序 (5) 4.3 主程序 (5) 五、性能测试 (5) 六、课程设计心得 (6) 参考文献 (6) 附录1:系统实物图 (7) 附录2:系统主要程序 (7)

一、前言 Cortex-M3 是ARM 公司为要求高性(1.25DhrystoneMIPS/MHz)、低成本、低功耗的嵌入式应用专门设计的核。STM32 系列产品得益于Cortex-M3 在架构上进行的多项改进,包括提升性能的同时又提高了代码密度的Thumb-2 指令集和大幅度提高中断响应的紧耦合嵌套向量中断控制器,所有新功能都同时具有业界最优的功耗水平。 本系统是基于Cortex-M3 核的STM32 微控制器与PT100温度传感器的温度测量,在硬件方面主要有最小系统板、1602LCD 液晶屏以及PT100温度传感电路,在软件方面主要有1602LCD液晶屏的驱动,ADC功能的驱动,及滤波算法设计。 整个设计过程包括电子系统的设计技术及调试技术,包括需求分析,原理图的绘制,器件采购,安装,焊接,硬件调试,软件模块编写,软件模块测试,系统整体测试等整个开发调试过程。 二、系统描述 2.1综述 本系统是基于STM32微控制器所设计的多功能画板,该画板具有基本的绘画功能及画布颜色的选择,触摸屏校正等功能。整个系统模块分为三个模块:ALIENTEK MiniSTM32开发板、液晶显示。MiniSTM32开发板是ALIENTEK

基于STM32的温湿度检测和无线的传输

毕业设计(论文) 题目:基于STM32的温湿度检测和无线的传输 学院:信息工程与自动化 专业:自动化 学生姓名: 指导教师: 日期:

基于STM32的温湿度检测和无线的传输 摘要 随着嵌入式技术的发展,单片机技术进入了一个新的台阶,目前除最早的51单片机现在有了STM32系列单片机以AMR的各系列单片机,而本次毕业设计我采用STM32单片机来完成,目的是实现温湿度的采集和数据的无线传输,温湿度的采集是作为自动化学科中一个必须掌握的检测的技术,也是一项比较实用的技术。而无线的传输时作为目前一项比较前沿的技术来展开学习的,所有的新新产业中都追求小规模高效率,而无线的技术可以降低传统工程的工程量,同时可以节省大量由排线、线路维修、检测上的一些不必要的障碍和消耗。同时,在实时运行阶段也可以明显体现它的便携性,高效性和节能性。本次设计目的是做出成品,并能采集实时数据传输至上位机。 关键词:嵌入式技术;电路设计;STM32;cc1020无线传输;sht10温湿度采集;程序设计 引言 我的毕业设计做的是温湿度数据的采集和无线的传输。温湿度的采集的用途是非常的广泛的,比如说化工业中做酶的发酵,必须时刻了解所发酵酶的温湿度才可以得

到所需酶。文物的保护同样也离不开温、湿度的采集,不仅在文物出土的时刻,在博物馆和档案馆中,空气湿度和和空气质量条件的优劣,是藏品保存关键,所以温湿度的检测对其也是具有重要意义的。最后就是大型机房的温湿度的采集,国家对此有严格标准规定温湿度的范围,超出此范围会影响服务器或系统的正常工作等等。所以温湿度的检测是目前被广泛运用。 此次设计的芯片采用的是STM32,由于STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。按性能分成两个不同的系列:STM32F103“增强型”系列和STM32F101“基本型”系列。增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是16位产品用户的最佳选择。两个系列都内置32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,是32位市场上功耗最低的产品。同时在编程方面STM32也具有和其他单片机的优势之处,如51单片机必须从最底层开始编程,而STM32所有的初始化和一些驱动的程序都是以模板的形式提供给开发者,在此开发者只需要了些其他的模块功能和工作方式和少量的语法知识便可以进行编程,此优势不但节约了时间,也为STM32的发展做出了强有力的铺垫,而且STM32目前是刚刚被作为主流开发的单片机,所以其前景是无可估量的,这次毕业设计也是看好了其优越的发展趋势来选择的。 无线通信是采用CC1020模块来实现的,大家都清楚现在的IT市场中“无线”这个词是很热门的,各种蓝牙、WI-FI、ZIG-BEE、3G渐渐的步入我们的生活中,人们都在不断向往着便携化,简洁化。而以上只是其一,在没无线的时代我们的计算机或是各种检测设备都需要用大把的I/o总线进行连接,这样不但占用的很大的地盘,也在这些线路上花费了大把的资金,若这些线路中的某个部分发生短路或者是老化可能造成不堪的后果,所以用无线取代有线也是电子行业发展的必然趋势,对其前景的了解和应用学习是非常有价值的。其应用领域:车辆监控、遥控、遥测、小型无线网络、无线抄表、门禁系统、小区传呼、工业数据采集系统、无线标签、身份识别、非接触RF智能卡、小型无线数据终端、安全防火系统、无线遥控系统、生物信号采集、水文气象监控、机器人控制、无线232数据通信、无线485/422数据通信、数字音频、数字图像传输、无线称重等 LCD1602的使用,这里使用1602的目的是为了可以得到实时的温湿度的数据,即为了在温湿度模块程序编写完成后烧入芯片可知其工作状态也可以作为一个读书的路径来使用。 之后是上下位机之间的数据接收,由于自动化本来就是为了实现自动控制,虽然此次设计只做了单方面的数据采集,但是这里连接上位机的目的就是使将来对此数据进行一个可控的操作返回至下位机对现场温湿度进行控制,在这里只是作为一种设想,在此次设计中未得实现。 1芯片模块 1.1 STM32介绍 1.1.1 ARM公司的高性能”Cortex-M3”内核

STM32学习笔记(3):系统时钟和SysTick定时器

STM32学习笔记(3):系统时钟和SysTick定时器 1.STM32的时钟系统 在STM32中,一共有5个时钟源,分别是HSI、HSE、LSI、LSE、PLL (1)HSI是高速内部时钟,RC振荡器,频率为8MHz; (2)HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围是4MHz – 16MHz; (3)LSI是低速内部时钟,RC振荡器,频率为40KHz; (4)LSE是低速外部时钟,接频率为32.768KHz的石英晶体; (5)PLL为锁相环倍频输出,严格的来说并不算一个独立的时钟源,PLL 的输入可以接HSI/2、HSE或者HSE/2。倍频可选择为2 – 16倍,但 是其输出频率最大不得超过72MHz。 其中,40kHz的LSI供独立看门狗IWDG使用,另外它还可以被选择为实时时钟RTC的时钟源。另外,实时时钟RTC的时钟源还可以选择LSE,或者是HSE的128分频。 STM32中有一个全速功能的USB模块,其串行接口引擎需要一个频率为 48MHz的时钟源。该时钟源只能从PLL端获取,可以选择为1.5分频或者1分频,也就是,当需使用到USB模块时,PLL必须使能,并且时钟配置为48MHz 或72MHz。 另外STM32还可以选择一个时钟信号输出到MCO脚(PA.8)上,可以选择为PLL输出的2分频、HSI、HSE或者系统时钟。 系统时钟SYSCLK,它是提供STM32中绝大部分部件工作的时钟源。系统时钟可以选择为PLL输出、HSI、HSE。系系统时钟最大频率为72MHz,它通过AHB分频器分频后送给各个模块使用,AHB分频器可以选择1、2、4、8、16、64、128、256、512分频,其分频器输出的时钟送给5大模块使用: (1)送给AHB总线、内核、内存和DMA使用的HCLK时钟; (2)通过8分频后送给Cortex的系统定时器时钟; (3)直接送给Cortex的空闲运行时钟FCLK; (4)送给APB1分频器。APB1分频器可以选择1、2、4、8、16分频,其输出一路供APB1外设使用(PCLK1,最大频率36MHz),另一

基于stm32的温度控制

摘要 当前快速成形(RP)技术领域,基于喷射技术的“新一代RP技术”已经取代基于激光技术的“传统的RP技术”成为了主流;快速制造的概念已经提出并得到了广泛地使用。熔融沉积成型(FDM)就是当前使用最广泛的一种基于喷射技术的RP 技术。 本文主要对FDM温度控制系统进行了深入的分析和研究。温度测控在食品卫生、医疗化工等工业领域具有广泛的应用。随着传感器技术、微电子技术、单片机技术的不断发展,为智能温度测控系统测控功能的完善、测控精度的提高和抗干扰能力的增强等提供了条件。本系统采用的STM32F103C8T6单片机是一高性能的32位机,具有丰富的硬件资源和非常强的抗干扰能力,特别适合构成智能测控仪表和工业测控系统。本系统对STM32F103C8T6单片机硬件资源进行了开发,采用K型热敏电阻实现对温度信号的检测,充分利用单片机的硬件资源,以非常小的硬件投入,实现了对温度信号的精确检测与控制。 文中首先阐述了温度控制的必要性,温度是工业对象中的主要被控参数之一,在冶金、化工、机械、食品等各类工业中,广泛使用各种加热炉、烘箱、恒温箱等,它们均需对温度进行控制,成型室及喷头温度对成型件精度都有很大影响。然后详细讲解了所设计的可控硅调功温度控制系统,系统采用STM32F103C8T6单片机作微控制器构建数字温度控制器,调节双向可控硅的导通角,控制电压波形,实现负载两端有效电压可变,以控制加热棒的加热功率,使温度保持在设定值。系统主要包括:数据的采集,处理,输出,系统和上位机的通讯,人机交互部分。该系统成本低,精度高,实现方便。 该系统加热器温度控制采用模糊PID控制。模糊PID控制的采用能够在控制过程中根据预先设定好的控制规律不停地自动调整控制量以使被控系统朝着设定的平衡状态过渡。 关键词:熔融沉积成型(FDM);STM32;温度控制;TCA785

STM32定时时间的计算

STM32 定时器定时时间的计算 假设系统时钟是72Mhz,TIM1 是由PCLK2 (72MHz)得到,TIM2-7是由 PCLK1 得到关键是设定时钟预分频数,自动重装载寄存器周期的值/*每1秒发生一次更新事件(进入中断服务程序)。RCC_Configuration()的SystemInit()的 RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2表明TIM3CLK为72MHz。因此,每次进入中断服务程序间隔时间为: ((1+TIM_Prescaler )/72M)*(1+TIM_Period )=((1+7199)/72M)*(1+9999)=1秒。定时器的基本设置如下: 1、TIM_TimeBaseStructure.TIM_Prescaler = 7199;//时钟预分频数例如:时钟频率=72/(时钟预分频+1)。 2、TIM_TimeBaseStructure.TIM_Period = 9999; // 自动重装载寄存器周期的值(定时时间)累计 0xFFFF个频率后产生个更新或者中断(也是说定时时间到)。 3、TIM_TimeBaseStructure.TIM_CounterMode=TIM1_CounterMode_Up; //定时器模式向上计数。 4、 TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; //时间分割值。 5、 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);//初始化定时器2。 6、 TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); //打开中断溢出中断。 7、 TIM_Cmd(TIM2, ENABLE);//打开定时器或者: TIM_TimeBaseStructure.TIM_Prescaler = 35999;//分频35999,72M/ (35999+1)/2=1Hz 1秒中断溢出一次。 8、 TIM_TimeBaseStructure.TIM_Period = 2000; //计数值2000 ((1+TIM_Prescaler )/72M)*(1+TIM_Period )=((1+35999)/72M)*(1+2000)=1秒。 9、注意使用不同定时器时,要注意对应的时钟频率。例如TIM2对应的是APB1,而TIM1对应的是APB2 通用定时器实现简单定时功能 以TIME3为例作为说明,简单定时器的配置如下: void TIM3_Config(void) { TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure; TIM_DeInit(TIM3); //复位TIM2定时器 /* TIM2 clock enable [TIM2定时器允许]*/ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); /* TIM2 configuration */ TIM_TimeBaseStructure.TIM_Period = 49; // 0.05s定时 TIM_TimeBaseStructure.TIM_Prescaler = 35999; // 分频36000 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; // 时钟分割TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //计数方向向上计数 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); /* Clear TIM2 update pending flag[清除TIM2溢出中断标志] */

基于STM32单片机的智能温度控制系统的设计

0 引言 温度是表征物体冷热程度的物理量,是工农业生产过程 中一个普遍应用的参数。因此,温度控制是提高生产效率和 产品质量的重要保证。温度控制的发展引入单片机后,可以 降低对某些硬件电路的要求,实现对温度的精确控制。本文 设计的温度控制系统主要目标是实现温度的设定值显示、实 际值实时测量及显示,通过单片机连接的温度调节装置由软 件与硬件电路配合来实现温度实时控制;显示可由软件控制 在LCD1602中实现;比较采集温度与设定阈值的大小,然后 进行循环控制调控,做出降温或升温处理;同时也可根据判 断发出警报,用以提高系统的安全性[1-5]。图1 系统总体框图 1 系统总体设计本设计以STM32F103RTC6单片机为核心对温度进行控制,使被控对象的温度应稳定在指定数值上,允许有 1℃的误差,按键输入设定温度值,LCD1602显示实际温度值和设定温度值。2 系统硬件设计 图2 系统硬件电路图 display , PTC heater and semiconductor cooler, and realizes the temperature control on the hardware equipment of the self-made analog small constant temperature box? Experimental results show that the design has the advantages of convenient operation, accurate temperature control and intelligence?Keywords: Temperature control ; STM32;Intelligent 基金项目:湖北省教育厅科学技术研究项目(B2018448)。

stm32学习之系统时钟

stm32学习之系统时钟 STM32入门学习心得 — 系统时钟 STM32的时钟与单片机相比要复杂的多,它能够对每一个外设以及IO口进行时钟的设置,这是单片机是无法和它比拟的,所以正确的理解和灵活的运用stm32的时 钟是很重要的。 STM32有3个不同的时钟源可以用于驱动系统时钟(SYSCLK),分别为: HSI振荡器时钟(内部高速时钟)。 HSE振荡器时钟(外部高速时钟)。 PLL时钟。 STM32还有两个二级时钟用来驱动独立的看门狗和选择性的驱动RTC。分别为:32KHZ低速内部RC振荡器(LSI RC)用来驱动独立的开门狗和选择性的驱动用于从停止/ 待机模式自动唤醒的RTC。 32.768kHz低速外部晶体振荡器(LSE 晶体振荡器)用来选择性的驱动实时时钟。 注:每个时钟源在使用时都可以独立的打开/关掉,以节省功耗。 在这里我们可以通过框图来直观的理解STM32的系统时钟。系统时钟框图如图1所示。 图一系统框图

通过图一不妨来详细分析下系统各个部分的时钟。 HSI时钟 HSI时钟通过一个8MHz的内部RC振荡器产生,并且可以被直接用作系统时钟,或者经过2倍频后作为PLL的输出作为SYSCLKS时钟。在系统复位时,HSI振荡器被选择默认的系统SYSCLKS时钟。内部时钟的缺点是频率的精确度没有外部晶体振荡器的高。 程序实现(所有程序都是基于固件库): 直接作为SYSCLKS时钟:RCC_DeInit();系统默认 经过PLL输出作为SYSCLKS时钟: RCC_DeInit(); SystemInit (); 可以在固件库中的stm32f10x_rcc.c文件中通过开放宏定义来选择系统时 钟经过倍频后的频率,固件库默认为72MHZ。如图2所示: 如图2所示 HSE时钟 高速外部时钟信号可以通过2个可能的时钟源产生。分别为: HSE 外部晶体/陶瓷共振器。 HSE 外部时钟。 外部时钟源 在该种模式下,必须提高外部时钟源,外部时钟源可以达到25MHz,用户可以通过设置时钟控制寄存器(RCC_CR)中的HSEBYP和HSEON 位选择该模式。占空必50%的外部时钟信号(方波,正弦波,三角波)必须用来驱动OSC_IN引脚,同时OSC_OUT引脚置于高 阻态。 外部晶体振荡器/陶瓷共振器(HSE晶体) 4~16MHz的外部振荡器具有能够在主时钟上产生一个非常精确地速率的优 点。 时钟控制寄存器(RCC_CR)中的HSERDY标志指示了高速外部振荡器是否是稳定的,在启动时,时钟直到硬件设置了该标志位才释放,如果在时钟中断寄存器(RCC_CR)中打开了, 就会产生一个中断。 HSE晶体振荡器可以通过时钟控制寄存器(RCC_CR)中的HSEON位来打开或 禁止。 程序实现(所有程序都是基于固件库): 1.直接作为SYSCLKS时钟: RCC_DeInit(); /*************************外部时钟设置 *****************************/

基于STM32F103的网络温度报警器物联网全解

基于STM32F103的网络温度报警器设计 作品名:基于STM32F103的网络温度报警器设计 作者:陈华健贾从含 时间:2015年6月17日

目录: 1.引言 (1) 2.利用普通二极管PN 结测试环境温度原理 (2) 3.器件的选择和芯片的介绍 (4) 4.UC/OS系统移植 (6) 5.文件系统的移植与文件系统基本函数的功能 (16) 6.Uip及socket实现方法 (27)

1.引言 近年来随着科技的飞速发展,嵌入式的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的嵌入式应用系统中,嵌入式往往作为一个核心部件来使用,仅嵌入式方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。 本系统使用STM32F103实现了接收由上位机通过TCP 协议发出的温度报警阈值信号,并存于SD片卡中。单片机利用普通二极管的PN 结测试环境温度,每30s 采集一次,将采集到的温度信息补充上时间(时、分、秒、毫秒)标注存储在存储芯片中。并将报警时的温度值与当前时间的温度进行比较,当前温度大于阀值温度时,通过发光二极管或蜂鸣器报警。上位机通过TCP,向单片机发送“Read_Info”命令后,单片机能将SD 卡中存储的所有数据发到PC 机的串口助手中;数据格式美观、易懂。 本系统采用普通二极管PN节的温度特性来测量环境温度不失为一种低成本而又容易实现的环境温度测量方式。使用STM32自带的ADC模块进一步降低了成本和设计难度。采用大容量存储芯片可以长时采集环境数据,并且在采集到的温度补充上时间信息使数据更加可信,同时移植了文件系统方便文件在WINDOWS下的读取和处理。 本系统采用了无线传输的方式配合可靠的电源设备或太阳能设备可以在室外持续的传输回温度信息或其他的气象数据(需配合适当的传感器),减少了人工成本,并且更加适应于野外大规模投放接点。

基于STM32-RTC实时时钟

1 课程设计内容 本文将利用ALIENTEK 2.8寸TFTLCD模块来显示日期时间,实现一个简单的时钟。 2 STM32芯片简介 2006年ARM公司推出了基于ARMv7架构的Cortex系列的标准体系结构,以满足各种技术的不同性能要求,包含A、R、M三个分工明确的系列[1]。其中,A系列面向复杂的尖端应用程序,用于运行开放式的复杂操作系统;R系列适合实时系统;M系列则专门针对低成本的微控制领域。Cortex-M3是首款基于ARMv7-M体系结构的32位标准处理器,具有低功耗、少门数、短中断延迟、低调试成本等众多优点。它是专门为在微控制系统、汽车车身系统、工业控制系统和无线网络等对功耗和成本敏感的嵌入式应用领域实现高系统性能而设计的,它大大简化了编程的复杂性,集高性能、低功耗、低成本于一体[2]。半导体制造厂商意法半导体ST公司是ARM公司Cortex-M3内核开发项目一个主要合作方,2007年6月11日ST公司率先推出了基于Cortex-M3内核的STM32系列MCU。本章将简要介绍STM32系列处理器的分类、内部结构及特点,并对本设计中重点应用的通用定时器做进一步分析。 2.1 STM32 RTC时钟简介 STM32 的实时时钟(RTC)是一个独立的定时器。STM32 的 RTC 模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。 RTC 模块和时钟配置系统(RCC_BDCR 寄存器)是在后备区域,即在系统复位或从待机模式唤醒后 RTC 的设置和时间维持不变。但是在系统复位后,会自动禁止访问后备寄存器和 RTC,以防止对后备区域(BKP)的意外写操作。所以在要设置时间之前,先要取消备份区域(BKP)写保护。 RTC 的简化框图,如图 20.1.1 所示:

相关文档
相关文档 最新文档