基于STM32的农业灾害监测系统软件设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于STM32的农业灾害监测系统软件设计4.1 程序流程图及开发环境搭建
5-1 程序运行流程图
4.2开发环境
4.2.1 KEIL5 的介绍
本系统编程用的是C语言,编程软件用的是KEIL5,在单片机编程中,较为主流的编程软件,它拥有流畅的用户界面和强大的仿真功能。因为使用的传感器以及其他模块众多,因此把各个模块的功能与初始化都封装成了函数并分别存在了不同文档之中,这样不仅使得代码雅观整洁,而且调用的时候也十分方便。子程序中包括DHT11温湿度模块、雨滴传感器、土壤湿度模块、光照强度模块和ESP8266WIFI模块等。
与之前的版本不同,KEIL 5分成MDK CORE和Soft和Software Packs两个部分。MDK Core主要包括KEIL5 IDE集成开发环境和ARM Compiler5。Software Packs则可以在不更换MDK Core的情况下,单独管理设备支持包和中间件更新包(即Device、CMSIS和Middleware)。
4.2.2 J-LINK 的连接与设置
J-Link-OB是SEGGER开发的自主调试调试器下载器。它通常是在大公司的评
估板(“集成”)上设计的。这就是为什么后缀是“OB”。名为“J-Link-OB”的模拟下载调试器具有USB通信功能,能与PC通信。另一端通过SWD / JTAG 模式与兼容设备通信,以执行调试任务。,下载和调试。所有内置微控制器
系列如ARM7 \ 9 \ 11,Cortex-M0 \ M1 \ M2 \ M3 \ M4 \ A5 \ A8 \ A9与SWD接口均支持J-LINK。
关于J-LINK的使用,需要用杜邦线把J_Link 和开发板的 JTAG/SWD 连接起来。如下图所示:
图5-3 STM32F407VET6开发板相关引脚原理图
图5-4 J-LINK相关引脚原理图
PA13 、PA14的复用功能是和 J_Link里面的SWDIO和SWCLK 引脚是一样的。然后PA13 PA14 接到 JTAG/SWD 的7 9 引脚。也就是说。J_Link里面的SWDIO 和SWCLK 用串口线和开发板的JTAG/SWD 的7 9 引脚直接相连。高电平和接地可看JTAG原理图。
4.2.3 CH340G USB转串口
自行开发系统USB-TTL / STC-ISP采用USB接口,解决了缺乏串口的问题,允许笔记本给单片机STC系列节目的用户的问题。关于CH340G的使用,首先需要安装它的相关驱动:CH341SER.exe,
图5-5 CH340G驱动安装
驱动安装完成后,按照下面的接线图接好线即好:
图5-6 接线图
4.3 主要模块程序设计
软件设计部分,包括两大部分:初始化和功能性设计。
4.3.1 系统初始化
(1)时钟的初始化
时钟是MCU的命令源和STM32具有三个不同的时钟源来驱动系统时钟:时钟振荡器HSI,时钟HSE振荡器和PLL时钟。外部晶体HSE /谐振器:所述HSI 时钟信号由一个8 MHz的内部振荡器可以由2被用作分割后的PLL输入由两个时钟源产生的高速的外部时钟信号生成HSE陶瓷,外部用户时钟HSE。我选择了PLL时钟。主PLL乘以HSI时钟除以2或HSE乘以可配置分频器的PLL2时钟。 PLL2和PLL3通过可配置的分频器由HSE同步。所述PLL(时钟源,分频器,乘法器等的选择)的配置必须在每个PLL的激活之前完成,并且一旦其输入时钟是稳定的。启用PLL后,这些设置将不会更改。更改输入PLL时钟源时,必须在选择新时钟源后禁用原始时钟源(通过时钟配置寄存器的PLLSRC位)(RCC_CFGR))。当PLL准备就绪时,中断时钟寄存器(RCC_CIR)可以产生中断。
(2)初始化I / O.
每个GPI端口/ O具有两个32位的配置寄存器(GPIOx_CRL,GPIOx_CRH),2个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),寄存器32个比特/复位(GPIOx_BSRR)和一个16位的复位寄存器(GPIOx_BRR)。还有一个32位锁定寄存器(GPIOx_LCKR)。
浮动输入,输入/输出,输入/输出,模拟输入,漏极开路输出,推挽输出,推挽复用,开漏多路复用功能:每个GPIO端口位可单独在几种模式由软件进行设置。每个端口位I / O可以自由编程,但端口的寄存器作为32位字(半字访问或字节不允许I / O应该可用)。该GPIOx_BSRR和GPIOx_BRR寄存器允许读/编辑所有GPIO寄存器独立访问,有没有危险产生的读访问和修改之间的IRQ。下图显示了I / O端口位的基本结构。
(3)串口初始化
在这种设计中,收发器通过串口传输到STM32,其最基本的参数是波特率。STM32串口必须打开串口时钟,设置相应的IO端口模式,并配置波特率,数据位长,奇偶校验等信息。具体步骤如下。
串行时钟被激活。串行端口用作STM32的器件,其时钟由器件时钟使能寄存器控制,串行端口1为APB2ENR寄存器的第14位。除了激活APB2ENR中的串行端口1时钟外,其他串行端口的时钟使能位位于APB1ENR寄存器中。
串口复位。当器件发生异常时,可以使用复位寄存器中的相应位设置复位器件,然后重新配置器件进行返工。通常,当初始配置设备时,首先执行设备重置操作。通过配置APB2RSTR寄存器的第14位来实现复位串行端口1。
设置串口波特率。每个串行端口都有自己独立的波特率寄存器USART_BRR,它提供不同的波特率。
串口控制。每个系列STM32端口的具有〜3.许多串行端口配置由这三个寄存器中定义的三个USART_CR1控制寄存器。
图4.3 USART_CR寄存器各位描述
不使用该寄存器的高18位,低14位用于配置串行端口功能。UE是串行端口使能位,通