基于stm32的水质监测系统项目基础部分详细记录

本文详述了基于STM32F103ZET6开发板的水质监测系统工程搭建流程,涵盖MDK5环境下的工程模板创建、文件夹结构规划、STM32固件库使用等关键步骤。

基于stm32的水质监测系统项目基础部分详细记录

软件环境:MDK5

硬件环境:STM32F103ZET6 开发板、颜色传感器、串口屏、串口打印机

 

  1. 搭建工程模板

在进行项目软件的撰写时,首先新建一个基于该项目的工程模板。对于初学者,很多都是直接用开发板提供商提供的现成的工程模板,但是那样的工程模板在项目开发中体态略显臃肿,而且如果直接用别人的工程模板,那么很多搭建工程模板的库文件的用法和功能我们不会很了解,因此,自己新建一个基于项目的工程模板是非常必要的。

  1. 准备工作

新建如下文件夹:

(1)hubu_SocModel:存放所有的工程文件,在该文件夹下新建下面几个文件夹 USER、CORE、FWLIB、OBJ、BSP;

(2)USER:在该文件夹中加入如下几个文件:

(3)CORE:

(4)OBJ:

该文件夹用来存放程序编译过程中产生的中间文件和编译后的.hex文件。在新建工程时,keil会自动给你创建一个Objeting文件夹和一个Listing文件夹,用来存放这些文件,而不会把文件直接存到OBJ文件夹中,所以,需要我们手动把缓存文件的目录更改到OBJ。:

(5)BSP:

存放用户自己撰写的各种函数,分为BSP.c和BSP.h两个文件。

(6)FWLIB:

这两个文件夹里的文件不必全部都加进来,需要用到哪些外设资源就把哪些外设资源存放到该文件夹内。其中inc是include的缩写,表示里面存放的是头文件(.h文件),src是source的缩写,表示里面存放的是源文件(.c文件)。

 

2.STM32固件库V3.5简介:(注:这部分可以参考一篇csdn文档《STM32固件库文件树及构成详解》)

本系统是基于STM32固件库V3.5进行开发的,下面对以上我们准备的文件的功能进行介绍:

(1)CORE:

core_cm3.c和core_cm3.h是ARM公司提供的内核函数接口,所有的芯片都必须添加该文件.

startup_stm32f10x_hd.s是芯片的启动文件,不同型号不同容量的芯片都具有独特的唯一的启动文件,该文件要跟根据芯片的型号和容量进行选择,具体选择方法可参考下图

(1)FWLIB:

Src、inc文件夹主要用来存放芯片上所有外设资源的驱动文件(库文件)。

(3)USER

main.c :该文件是用户来编写函数来实现自己需要实现的功能的,有用户自行编写;

stm32f10x_it.c及其头文件:该文件是一个中断处理文件,_it结尾就是interrupt(中断)的意思,说明这个是整个工程的中断处理函数,如果你的工程里面没有用到中断就可以不添加进去,这个文件也可以去掉,将终端文件添加到其他的.c文件里也行;

stm32f10x.h:这是一个很重要的stm32头文件,是一个最为重要的寄存器地址到寄存器结构体变量的映射,具体的分析可以参照这两篇博客:

https://www.cnblogs.com/caihongsheng/p/3513279.html

http://blog.youkuaiyun.com/yxfabcdefg/article/details/52798460

system_stm32f10x.c:这个文件提供了两个函数以及一个全局变量,以便被用户程序调用,

包括:系统初始化SystemInit(),旨在初始化系统时钟,设置中断向量表地址。详细分析可参考如下一片csdn博客:http://blog.youkuaiyun.com/lushoumin/article/details/77990690

stm32f10x_conf.h : 配置stm32的相关外设,若不用任何外设则也可不添加此文件。

 

3.新建工程模板

(1)新建工程模板

(2)文件夹路径设置;

将Output和Listing选项下的文件存放目录设为OBJ;

 

(3)修改文件名,为工程添加文件

点击

 

 

 

 

(4)添加头文件路径

 

注意:必须添加到最近一级路径!

按照此方法把USER和FWLIB下的inc文件夹路径添加进来.

编译一下,发现程序出现如下错误:

粘贴此错误到百度进行搜索,会找到如下解决方法:

关于STM32F10X_HD,USE_STDPERIPH_DRIVER 的详细介绍,可以参考如下博客:

https://www.cnblogs.com/xiaobo-Linux/p/5247579.html

 

按照此方法添加USE_STDPERIPH_DRIVER后重新编译程序,发现程序编译无错误。

到此,一个最简单的工作模板已经建好了。

转载于:https://www.cnblogs.com/CherishTheYouth/p/9604440.html

### 基于STM32水质检测系统设计方案 #### 设计目标 基于STM32水质检测系统旨在提供一种高效、可靠的解决方案来监测水质状况。该系统集成了多种传感器,用于测量不同的水质参数,并具备实时监测、告警和远程管理的功能。 #### 系统架构概述 整个系统由硬件部分和软件部分组成: - **硬件部分**:主要包括STM32单片机作为核心控制器;浑浊度传感器、光照强度传感器、pH传感器、温度传感器以及TDS(总溶解固体)传感器等感知元件负责收集环境中的物理量变化;还包括OLED显示屏用来呈现当前状态信息给用户查看;另外还有WiFi模块支持数据远距离传输。 - **软件部分**:涉及到了系统初始化配置工作,在线获取传感设备读数并做初步分析处理之后再决定是否触发报警机制,最后把最终结果发送出去供其他平台调用或者存储起来以便日后查询使用[^2]。 #### 关键组件介绍 ##### STM32 单片机 选用的是STMicroelectronics公司生产的高性能微处理器——STM32系列芯片之一。它拥有丰富的外设接口资源可以满足多路信号接入需求的同时还提供了强大的运算能力以应对复杂的算法计算任务。 ##### 各类传感器 为了全面掌握被测水域的具体情况,本项目引入了多个不同类型的探测装置: - 浑浊度传感器用于评估水中悬浮颗粒物浓度; - 光照强度传感器则帮助判断周围光线条件对样本的影响程度; - pH传感器可精确测定溶液酸碱性质; - 温度传感器记录下即时水温数值; - TDS电导率探头能反映溶质总量水平。 这些仪器共同作用从而构建起一套完整的水质评价体系[^1]。 ##### OLED 显示屏 采用小型化图形液晶面板作为人机交互界面的主要载体,不仅可以清晰直观地显示出各项测试指标的实际值及其单位符号,而且还可以配合图标动画等形式增强用户体验感。 ##### WiFi 通信模组 利用ESP8266或其他兼容型号的产品搭建无线网络连接通道,使得终端产品可以通过互联网协议与其他智能装备相互通信交流,进而达成远程监控的目的。 #### 软件开发要点 在编程方面主要围绕以下几个方面展开讨论: - 初始化阶段要完成对外围电路板卡供电电压等级设定、I/O端口模式切换等一系列准备工作; - 数据采集中间过程涉及到定时器中断服务程序的设计编写,确保每次取样间隔时间固定不变; - 对原始采集回来的数据进行必要的滤波平滑处理减少噪声干扰带来的误差影响; - 判断逻辑需考虑周全,既要考虑到正常范围内的波动也要兼顾异常突变情形下的快速响应措施; - 发送指令前先打包成特定格式的消息体形式然后再经由串行通讯线路向外传递出去。 ```c // 示例代码片段:初始化ADC输入通道 void ADC_Init(void){ GPIO_InitTypeDef GPIO_InitStruct; __HAL_RCC_GPIOA_CLK_ENABLE(); HAL_NVIC_SetPriority(ADC_IRQn, 0, 1); HAL_NVIC_EnableIRQ(ADC_IRQn); /* Configure the GPIO pin : PA0 */ GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); hadc.Instance=ADC1; hadc.Init.ScanConvMode = DISABLE; hadc.Init.ContinuousConvMode = ENABLE; hadc.Init.DiscontinuousConvMode = DISABLE; hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc.Init.NbrOfConversion = 1; if (HAL_ADC_Init(&hadc) != HAL_OK){ Error_Handler(); } } ``` #### 应用场景实例 某城市自来水厂安装了一套这样的在线监测站网,每天都会自动巡检出厂管道末端处流过的清水质量状况并将有关详情同步更新到官方门户网站上公开发布出来接受社会监督。一旦发现超标现象就会立即通知相关部门采取紧急处置行动防止事态扩大恶化造成更大损失[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值