基于stm32的便携式心电图仪毕业设计(5)

2019-04-15 21:27

基于STM32的便携式心电图仪设计

的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。

uVision3 IDE是一款集编辑,编译和项目管理于一身的基于窗口的软件开发环境。uVision3集成了C语言编译器,宏编译,链接/定位,以及HEX文件产生器。如图12所示,是它的一个典型的调试窗口,它主要包括以下几个窗口:

图12 Keil MDK开发环境

? 工程区:用于访问文件组和文件,调试是可以查看CPU寄存器。

? 输出窗口:显示编译结果,以便快速查找错误的地方,同时还是调试命令输入

输出窗口,也可以用于显示查找结果。

? 内存窗口:显示指定地址内村里的内容。查看和调用

? 堆栈窗口:用于查看和修改变量的值,并且现实当前函数调用。 ? 代码窗口:用于查看和编辑源文件。

? 外设对话框:检查微控制的片上外设的状态。

使用Keil来开发嵌入式软件,开发周期和其他的平台软件开发周期是差不多的,大致有以下几个步骤:

1. 创建一个工程,选择一块目标芯片,并且做一些必要的工程配置。 2. 编写C或者汇编源文件。 3. 编译应用程序。 4. 修改源程序中的错误。 5. 联机调试。

15

基于STM32的便携式心电图仪设计

4.2软件系统整体设计

采用模块化的编程思想,把整个软件系统化为为多个功能模块,主程序通过调用各个子程序来完成复杂功能的实现。下面具体介绍各个模块的实现。

4.2.1软件总体分析

从整体上看,该系统软件分为两个大的部分:

(1) 下位机软件即STM32应用程序。主要完成心电信号的采集、信号滤波、RTC模块、液晶显示和串口通信等。利用模块化编程思想分别来实现各个模块的功能,尽量减少程序之间的耦合性,提高程序之间的内聚性。主程序是个无限循环,通过调用各个子程序来完成系统的功能。该部分总体开发思路是,首先完成STM32片上资源的初始化,其次是完成各个子程序的编写,最后主程序通过调用主程序完成所要实现的功能。

(2) 上位机管理软件。上位机是运用LabVIEW编写的,其功能是完成数据的接收和处理,其中主要包括对数据的接收、显示和存储。处理是指利用PC机强大的数据处理功能对上传来的数据进行处理并分析的结果。显示功能完成数据到波形的转换,能够动态显示出心电波形。存储功能完成数据的保存。

4.2.2 STM32 软件系统设计流程

软件搭载在硬件上运行的,硬件的资源多少在一定程度上决定了软件的设计方法和复杂程度。由于早期的单片机由于硬件资源少,RAM资源有限,所以工程师在编程的时候对RAM的应用要十分小心,因此造成这类的设计开发工程师更加偏向于直接用汇编语言来控制硬件的工作。随着科学的发展,嵌入式系统的复杂度的提高和EDA技术的发展,各种高级的EDA工具不断推出,比如Keil、IAR、ADS等工具,这些工具不仅极大的方便了工程师的开发,同时也为用C语言这种高级语言来编写程序提供了有利的条件。但是这种开发方式随着系统的复杂度的增高也变的愈加吃力了,因为对开发人员要熟悉芯片的内部资源,能够进行寄存器配置,这样就对工程师的要求比较高。但是这些问题可以通过移植操作系统来解决,操作系统的优势就是屏蔽了具体的硬件细节,可以让开发人员把更多的精力放在应用程序上。

本系统设计时考虑移植操作系统,但是对于具体的应用存在一些不足之处:首先,操作系统在对数据区的开销以及一些变量的存储方面浪费了很多的RAM资源,有限的RAM资源就无法有效的分配。其次,STM32方便的库文件开发方式本身就屏蔽了硬件的细节,处于以上考虑在本次开发中没用移植操作系统,而采用库文件的方式来开发设计。

STM32固件库是一个固件包,它不仅包括了程序、数据结构和覆盖所有外设特性

16

基于STM32的便携式心电图仪设计

的宏单元。还包括设备驱动的描述以及各个外围模块的实例,该固件库可以使得用户在没有深入学习外围模块规格手册的情况下,也能够使用任何在用户应用中涉及到的设备。因此,使用该固件库可以节省设计者的许多时间,可使开发人员把更多的精力花费在编程方面,加快了开发周期,减少了在应用开发中的综合开销。这是STM32软件开发十分显著的优点。

实际应用开发时,我们用外设的时候一般有三个步骤,这里以ADC1外设为例简单介绍一下开发流程:

1、打开配置文件stm32f10x_conf.h,打开ADC1的宏开关 #define _ADC

#define _ADC1 //这里选择了打开#define _ADC1 2、加载stm32f10x_adc.c文件

stm32f10x_adc.c是ADC对应的库文件,对ADC的一系列操作都在封装好了放在这类文件里。

3、参数设置。包括配置采用周期、触发方式、工作模式、数据存储格式等,开发人员只需根据所需要求在对应的参数位置设置即可。一个简单的实例如下: /* ADC1 configuration ------------------------------------------------------*/ ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //独立模式 ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;

ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_T1_CC1; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//右对齐格式 ADC_InitStructure.ADC_NbrOfChannel = 1; ADC_Init(ADC1, &ADC_InitStructure);

ADC_RegularChannelConfig(ADC1,ADC_Channel_14,1,ADC_SampleTime_13Cycles5);

其他模块的应用也类似于此,这样就屏蔽了寄存器配置细节,加快了开发速度。

4.2.3软件总体流程图

软件设计流程分为两个大的方面,分别对应两个个界面:

第一个界面心电图显示界面,按键有上、下、左、右、中五个按键,按键功能分配如下:上、下按键控制波形纵向移动和幅值的变化,左右键是调节波形在时间上的周期变化,中间按键是切换键,切换上下键控制幅值变化还是纵向移动。

另一个界面是帮助界面,具体介绍各个按键的作用,具体流程图如图13所示。

17

基于STM32的便携式心电图仪设计

开始系统初始化A/D数据采集LCD显示USART发送N是否有按键按下Y按键功能程序

图13 系统总体流程图

4.3信号采集程序设计

心电信号的精确采集对于后面的进一步处理至关重要。STM32的片内ADC是12位的模数转换器,可以在16路模拟输入中任选一路进行采样,其最高采样率为1MHz,心电信号的频率较低,片内ADC足以满足系统采样定理的要求,这样可以提高采样的稳定性和降低系统成本。程序流程框图如14所示。

图14 数据采集流程图

转换后的数据存放在ADC_RegularConvertedValue变量里,转换状态用全局变量dmaflag来标记,dmaflag=0代表转换未结束,dmaflag=1代表转换结束。

4.4数字滤波程序设计

数字滤波算法的实现是软件部分关键的问题,它的运算时间和精度直接决定了系统的实时性和数据的准确性。本系统用C语言编写了相对应的滤波算法程序来实现对所采集的心电信号进行数字滤波。

18

基于STM32的便携式心电图仪设计

滤波算法实际上就是用C语言来实现差分方程,为叙述方面,把方程列出如下: yBP(n)= yBP(n-4)+ x(n)- x(n-20) (1) yAP(n)= x (n-98) (2) yBS(n)= yAP(n)-yBP(n) (3) 可见关键是实现差分方程(1),有式(2)和(3)看出,当前输出与以前数据状态有关,因此需要开辟缓冲区来存放以前的数据,这里开辟三个缓冲区Buff_bp[4]、Buff_ap[98]和Buff_x[20]分别存放yBP(n-4)、yAP(n-98)、x(n-20)的数据。对于式(1),Buff_bp[4]数组里面存放的是前4次yBP(n)的值,Buff_x[20]存放的是当前采集数据的前20次的x(n-20)数据,前20点的数据yBP(n)都为0,假设采集到第20点时,此时n=20,把该点赋值给变量[14]。Cur_val,数组Buff_bp[4]全为0,数组Buff_x[20]里面存放了前20个点的数据,那么该点滤波后的数值这里让滤波后的数值存放到变量Fil_val,则Fil_val=Buff_bp[0]+Cur_val-Buff_x[0];然后让数组Buff_bp[4]右移,把数据Buff_bp[0]移除,把Fil_val的值存入到数据Buff_bp[4]中,同理让数组Buff_x[20]右移,移除数据Buff_x[0],在把Cur_val存入到Buff_bp[20]中,这样就完成了一个点的滤波。软件流程如图15所示。

图15 滤波流程图

4.5液晶程序设计

在本系统中采用彩色TFT液晶,波形显示清晰,界面良好。液晶控制的关键在于编写底层驱动程序,底层驱动写好以后再封装不同功能的函数,以后调用就很方便了。

STM32的FSMC模块是能够与同步或异步的存储器和16位的PC存储器卡的接口,它的主要作用是:

? 将AHB传输信号转换到适当的外部设备协议 ? 满足访问外部设备的时序要求

19


基于stm32的便携式心电图仪毕业设计(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2016年度骨科护士长工作总结4篇

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: