基于STM32的自动气象站控制模块设计

发布者:糖三角最新更新时间:2023-08-17 来源: elecfans关键字:STM32  自动气象站  控制模块 手机看文章 扫描二维码
随时随地手机看文章

1、引  言

随着居民生活水平的提高和气象意识的增强,近年来自动气象站得到了大力的发展。自动气象站需要可视化的人机界面,既能发布动态的气象数据,也能对气象站发送控制指令。因此,自动气象站拥有可视化的液晶显示控制模块是非常重要的。


为了节约硬件资源,采用STM32F103VET6单片机驱动7寸触摸屏作为显示控制模块的硬件平台。为实现多任务处理,移植经过裁剪和修改的UC/OS-II操作系统。同时移植可裁剪的界面设计软件接口UCGUI,实现可视化人机界面。构建软硬件可裁剪的自动气象站控制模块,即能满足自动气象站工作现场的任务需求,也减少了软硬件资源的浪费,充分发挥了嵌入式产品在工控现场的优势。


2、系统整体框图

采用STM32F103VET6作为主控制器芯片,利用TFT屏驱动程序和触摸驱动程序驱动7寸触摸屏,系统整体框图如图1所示。


针对该CPU移植UC/GUI和UC/OS-II是本文的关键。液晶驱动程序和触摸驱动程序配合UCGUI提供的接口函数,搭建可视化人机交互界面,移植适用于本系列CPU的UC/OS-II实现多任务处理。

基于STM32的自动气象站控制模块设计

图1  系统整体


3、驱动触摸屏硬件电路设计

基于价格和性能的综合考虑,选择STM32F103VET6作为主控制器芯片。STM32F103系列CPU采用CORTEX-M3内核,最高工作频率72MHz,拥有256~512KBFLASH程序存储器,并行LCD接口,兼容8080/6800模式。


LCD模块采用群创AT070TN90系列TFT屏。该液晶显示模块由LCD面板,SSD1963控制电路,电源与调压器电路,背光控制电路4部分组成。其中SSD1963控制电路包含了1块SSD1963控制芯片,负责与处理器进行通信,根据处理器传输过来的数据刷新内部显存,控制LCD面板刷新显示。


TFT显示屏与STM32F103的接口如图2所示。

基于STM32的自动气象站控制模块设计

图2  TFT显示屏与STM32F103的接口电路

TFT显示屏表面贴有一块XPT2046控制的四线制触摸屏,该触摸屏的Y+,Y-,X+,X-分别与XPT2046的4个引脚相连。当屏幕被按下时,XPT2046内部的125KHz转换速率的逐步逼近型12位A/D转换器执行2次A/D转换计算触摸位置,然后以SPI总线方式传送给CPU。


4、系统软件设计

4.1、LCD底层控制函数的实现

移植GUI接口主要实现包括画点、线、矩形、多边形、位图等功能。GUI所有的系统函数都是通过调用这些接口函数来实现的,而这些接口函数又都是基于画点函数来实现,几乎GUI显示功能都最终调用画点函数,所以LCD驱动程序重点在画点函数的编写。


/*在指定坐标画指定颜色的点*/

vOIDLCD_SETPOINT(U16X,U16Y,U16C)

LCD_WRITECOM(0X002A);

LCD_WRITERAM(X>>8);

LCD_WRITERAM(X&0X00FF);

LCD_WRITERAM(HDP>>8);

LCD_WRITERAM(HDP&0X00FF);

LCD_WRITECOM(0X002B);

LCD_WRITERAM(Y&0X00FF);

LCD_WRITERAM(VDP>>8);

LCD_WRITERAM(VDP&0X00FF);

LCD_WRITECOM(0X002C);

LCD_WRITERAM(C);

实现了对LCD像素的操作,进而修改移植UCGUI图形接口,从而方便UCGUI通过调用该最底层函数来实现丰富的图形界面。

4.2、UCGUI组织结构

UCGUI是一种小型嵌入式图形界面接口,独立于CPU和LCD控制器,对系统要求很低。8/16/32位CPU,2~6KB的RAM,30~60KB的ROM,2KB的堆栈即可满足。UCGUI接口完全对外开放,结构如表1所示。

表1 UCGUI源码组织结构

基于STM32的自动气象站控制模块设计

4.3、修改配置UCGUI头文件工作

移植UCGUI的前提就是修改配置头文件。根据硬件电路设计,显示器控制器型号,以及设计中将使用UC/OS操作系统的实际情况,配置头文件具体修改如下:

基于STM32的自动气象站控制模块设计


基于STM32的自动气象站控制模块设计

将该修改完头文件的UCGUI源码包编译进工程,利用GUI自带的图形接口函数,便可在LCD屏上任意位置画任意的图形。实现自动气象站的多任务处理的功能,给液晶显示控制模块移植一个结构小巧的UC/OS-II操作系统也是必不可少的。

4.4、UC/OS-II框架结构

UC/OS-II是免费的公开的源代码,具有可剥夺内核。绝大部分代码用C语言编写,仅有与CPU相关的代码用汇编编写,总量也仅为200行左右,被压缩到最低限度以便移植到任意一种CPU上。只要有标准的C交叉编译器,汇编器和连接器等软件工具,就可以将UC/OS-II移植到例如STM32这样的CPU中。因为其执行效率高,占用空间小,实时性好,可扩展性强,最小内核可编译至2KB,所以UC/OS-II能完美运行于STM32中。

UC/OS-II可大致分成核心、任务处理、时间处理、任务同步与通信、CPU的移植等5个部分。

1)核心部分(OSCORE.C)包括操作系统初始化,系统运行,中断进出的前导、时钟节拍、任务调度、事件处理等部分。

2)任务处理部分(OSTASK.C)包括任务的建立、删除、挂起、恢复等。因为UC/OS-II是以任务为基本调度单位的,所以该部分也很重要。

3)时钟部分(OSTIME.C)UC/OS-II中最小时钟单位是TIMETICK(时钟节拍),任务延迟等操作在此完成。

4)任务同步与通信部分此部分包括信号量、邮箱、邮箱队列、事件标志等部分。主要用于任务间的互相联系和对临界资源的访问。

5)与CPU的接口部分该部分是UC/OS-II针对CPU移植的部分。该部分牵扯到SP等系统指针,所以通常由汇编语言编写。

4.5、UC/OS-II修改裁剪工作

UC/OS-II在STM32上移植,前提需要修改3个文件,它们是OS_CPU.H,OS_CPU_C.C,OS_CPU_A.ASM。


1)临界代码段

UC/OS-II为保证某段代码完整执行,需要临时关闭中断,代码执行完成后开启中断。UC/OS-II通过OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()2个宏来实现中断的打开和关闭,对于M3内核,栈增长方向是向下增长,因此需要宏定义OS_TASK_GROWTH为1。

基于STM32的自动气象站控制模块设计

基于STM32的自动气象站控制模块设计

5、测试结果

在μVISION4集成开发环境中编写测试代码。在主函数MAIN()中,系统函数OSTASKCREATEEXT()创建系统主任务APPTASKSTART(),在主任务中创建2个系统实际运行的任务APPTASK_LCD()和APPTASK_LED(),设置任务优先级和任务栈大小,2个任务用于液晶显示和LED闪烁。APPTASK_LCD()和APPTASK_LED()的任务配置如表2所示。

表2任务参数设置

基于STM32的自动气象站控制模块设计

系统在2个任务情况下运行效果如图4所示。

基于STM32的自动气象站控制模块设计

图4 显示控制模块

结果表明多任务运行流畅,工作稳定。因此,该自动气象站控制模块工作可靠有效。


6、结论

设计基于STM32的自动气象站控制模块。STM32单片机的高速、低耗的优越性能完全可以满足触摸屏主控制芯片的要求,TFT液晶显示器可以满足更复杂、多彩、灵活的显示任务,符合显示屏性能不断攀升的发展趋势。将UC/OS-II操作系统和UC/GUI图形接口同时移植到F103系列CPU中,实现多任务处理,完全适应自动气象站多变的任务需求,能承担更加灵活的液晶显示任务。相比传统的自动气象站控制模块,设计在实现多任务,多界面的前提下,将软硬件资源的消耗上降到最低,体现了现代电子设备设计的低功耗低成本的特点。


关键字:STM32  自动气象站  控制模块 引用地址:基于STM32的自动气象站控制模块设计

上一篇:STM32的ADC简介_DMA方式的程序设计与实现
下一篇:STM32的基本概念及中断应用

推荐阅读最新更新时间:2024-11-04 16:08

STM32三种低功耗模式研究二
停机模式:任一外部中断可以唤醒,系统保存代码运行状态,唤醒前后要分别进行电源管理配置和时钟配置。 如果不配置时钟,它是自动切换到内部时钟的;当然,如果系统重启或重新上电,则系统会从头开 始,当然包括从头配置时钟。 示例: 停机模式进入之前: RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); printf( 进入停止模式 ); PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI); 停机模式唤醒之后: void SYS
[单片机]
STM32学习之CAN控制器简介
1、STM32自带了基本扩展CAN外设,又称bxCAN,bxCAN的特点如下: 支持CAN协议2.0A和2.0B主动模式 波特率最高达1Mbps 支持时间触发通信 具有3个发送邮箱 具有3级深度的2个接收FIFO 可变的筛选器组(也称过滤器组,最多28个) 2、STM32 CAN控制器简介-模式 ①初始化模式(INRQ=1,SLEEP=0) ②正常模式(INRQ=0,SLEEP=0) ③睡眠模式(SLEEP=1) 测试模式 ①静默模式( LBKM=0,SILM=1 ) ②环回模式( LBKM=1,SILM=0 ) ③环回静默模式(LBKM=1,SILM=1
[单片机]
STM32 USB数据发送完成的识别方法
1 if (GetEPTxStatus(ENDP1) == EP_TX_NAK) 则认为发送完成了 2 可以在相应端点的回调函数中,作相应的标志 void EP1_IN_Callback(void) { sUSB.in = 0; }
[单片机]
FreeRTOS STM32移植笔记
1.前言 【1】其实说不上移植笔记,FreeRTOS已经移植至众多平台(MCU),包括MSP430,STM32等,这份笔记完全建立在官方代码的基础之上,简单的说就是修改一些设置从而完成一个呼吸灯实验。 【2】虽然有官方移植代码,但是官方移植版本为STM32的V2.X库,与现在流行的V3.5有比较大的区别。本笔记也是总结网上几篇学习笔记,主要说明如果使用V3.5库,需要做哪些修改。 【3】编译软件为IAR EWARM 6.5。 【相关博文】 【 FreeRTOS学习笔记——任务间使用队列同步数据 】——如何使用FreeRTOS队列。 【 如何在FreeRTOS下实现低功耗——MSP430F5438平台 】
[单片机]
FreeRTOS <font color='red'>STM32</font>移植笔记
关于keil uvision5 Debug调试和调试STM32HAL库出现的问题
在使用Keil5调试时,发现点击Debug session调试按钮后, **调试箭头发现不是指在main函数体而是指向disassembly汇编代码区**, 这就导致我们无法调试我们的代码。以下是我的解决方法: 1.点击options for target魔法棒配置目标,选择Debug- 再如下图所示勾选红框部分。 2.再选择Output- 勾选Debug information- 点击ok. 这就可以点击Debug session完成从main函数体进行调试代码了。 当我在使用STM32HAL库进行编写程序完成后,使用keil5进行调试代码时,点击RUN后,突然弹出cannot access target
[单片机]
关于keil uvision5 Debug调试和调试STM32HAL库出现的问题
我感觉有必要把整个STM32内存包括寄存器的分配弄清楚
《跟工程师学嵌入式开发》这本书有讲。
[单片机]
我感觉有必要把整个<font color='red'>STM32</font>内存包括寄存器的分配弄清楚
STM32高级定时器用于普通定时,定时周期变长
最近在用stm32定时器控制步进电机,由于普通定时器不够用,只能把TIM1当普通定时器用,我随手就把普通定时器的代码搬过去。 void cs_Timer_Init(void) //TIM1 us级 { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; /* Time base configuration */ TIM_TimeBaseStructure.TIM_Period = 1000; TIM_TimeBaseStructure.TIM_Prescaler = 71;
[单片机]
一例使用STM32外设库设置串口速度与实际不一样的解决
最近手上有了块金牛的stm32实验板,兴致勃勃的测试各种功能,但是碰到一个问题,用stm32 的外设库写串口程序,发现串口速度与实际不一样。一度怀疑是外设库的问题,但是用mdk的外设监控查看后,发现实际的串口速度为自定义的3倍,如图 很疑惑,本人有一种钻牛角尖的精神,因此一度debug下去,发现这个设置是在如下关键语句 (位于 外设库 中的 USART_Init定义语句,在stm32f10x_usart.c中) USART_Init初始化函数 RCC_GetClocksFreq(&RCC_ClocksStatus); if (usartxbase == USART1_BASE) { apbclock = RCC_ClocksSt
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved