STM32数字示波器+详细注释+上位机程序+硬件

目录

1、设计指标:

2、功能:

3、上位机的程序

​4、测试的照片

5、PCB 

6、模拟电路板

7、程序

资料下载地址:STM32数字示波器+详细注释+上位机程序+硬件

1、设计指标:

主控:                                        STM32F103ZET6
液晶屏:                                      4.3寸TFT480×272  65K彩色LCD显示屏  FSMC
AD:                                         12位1MHz采样率
最高实时取样率:                   1MSa/s  12Bits
取样缓冲器深度:                   5K  
垂直灵敏度:                            5V,1V,500mV,200mV,100mV,50mV,20mV,10mV;  
水平时基范围:2S,1S,500mS,200mS,100mS,50mS,20mS,10mS,5mS,2mS,1mS,500uS,200uS,100uS,50uS,20uS,10uS,5uS,2uS,1uS
输入阻抗:                                 ≥1MΩ
最高输入电压:                       30Vpp
耦合方式:                                 AC/DC
触发功能:                                 实现自动、常规、单次触发方式 ,上升或下降边沿触发  
参数计算:                                 频率、周期、占空比、交流峰-峰值、平均值、光标追踪显示
RUN/STOP

2、功能:

        1、波形发生器:使用STM32一路DA实现正弦,三角波,方波,白噪声输出。 任意一种波形幅值在0-3.3V任意可调、频率在一定范围任意可调、方波占空比可调。调节选项可以通过触摸屏完成设置。
        2、SD卡存储: SD卡波形存储输出,能够对当前屏幕截屏,以JPG格式存储在SD卡上。能够存储1S内的波形数据,可以随时调用查看。
        3、数据传输:  用C#编写上位机,通过串口完成对下位机的控制。
        (1)实现STOP/RUN功能
        (2)输出波形电压、时间参数
        (3)控制截屏
        (4)控制波形发生器
        (5)控制完成FFT
        (6)波形的存储和显示
        4、图形接口:  UCGUI
        2、水平扫速:  250 ns*、500ns、1μs、5 μs、10μs、50μs、500 μs、5ms 、50ms
        3、垂直电压灵敏度:10mV/div, 20mV/div, 50mV/div, 0.1V/div, 0,2V/div, 0.5V/div, 1V/div,
2V/div, 5V/div
        4、被测信号的各种参数屏幕显示,包括频率、电压峰峰值等。

3、上位机的程序

 4、测试的照片

 

5、PCB 

 

6、模拟电路板

 

 

7、程序

/*------------------------------------------------------------------------------------
                                                                   STM32示波器
 硬件平台:
                         主控器: STM32F103ZET6 64K RAM 512K ROM
                        屏幕器: SSD1963 
                        分辨率: 480x272 16位色
                   触摸屏: TSC2046
                        模拟电路: OP  - TL084
                                          OP  - u741
                                          SW  - CD4051
                                          CMP - LM311
                                          PWR - LM7805
                                              - LM7905
                                                  - MC34063
                                                  - AMS1117-3.3
                                          DRI - ULN2003
                        继电器:信号继电器
                    电源:   DC +12V

 软件平台:
                         开发环境: RealView MDK-ARM uVision4.10
                        C编译器 : ARMCC
                        ASM编译器:ARMASM
                        连接器:   ARMLINK
                        实时内核: uC/OS-II 2.90实时操作系统
                        GUI内核 : uC/GUI   3.90图形用户接口
                        底层驱动: 各个外设驱动程序
        
        ROM Size = Code + RO-data +RW-data
        RAM Size = RW-data + ZI-data
        Program Size: Code=56024 RO-data=8272 RW-data=256 ZI-data=29912          
 
 时间: 2013年11月9日       BoX编写于大二上学期
 
 版本: V1.0 - 2013/11/9
       V1.1 - 2014/2/8
           V3.0 - 2014/2/19                                
-------------------------------------------------------------------------------------*/   
#include "stm32f10x.h"
#include "ucos_ii.h"
#include "app.h"
#include "GUI.h"

#include "usart1.h"
#include "pincfg.h"
#include "delay.h"
#include "tft_api.h"
#include "dac.h"
#include "adc.h"
#include "iwdg.h"
#include "timer.h"
#include "EXTI.H"
#include "oscilloscope.h"
#include "indkey.h"
#include "tsc2046.h"

#include "task_rtc.h"
#include "task_gui.h"
#include "task_sd.h"


/*-----------------------------------------
                                声明起始任务栈
------------------------------------------*/
OS_STK  Task_Start_Stk[TASK_START_STK_SIZE]; 

/*-----------------------------------------
 因为涉及到对共享资源的访问,创建互斥信号量
------------------------------------------*/
OS_EVENT *LCD_Buffer_MUTEX;
OS_EVENT *USART_Buffer_MUTEX;
OS_EVENT *SDtoRAM_Buffer_MUTEX;
/*-----------------------------------------
                                主 函 数
------------------------------------------*/    
int main(void)    
{    
         INT8U err;
     SystemInit();                 //初始化RCC时钟
         OSInit(); 
                           
         LCD_Buffer_MUTEX     = OSMutexCreate(4,&err);        //创建3个共享资源互斥信号量
         USART_Buffer_MUTEX   = OSMutexCreate(4,&err);
         SDtoRAM_Buffer_MUTEX = OSMutexCreate(4,&err);
            
     OSTaskCreate(Task_Start,(void *)0,&Task_Start_Stk[TASK_START_STK_SIZE-1],TASK_START_PRIO); //起始任务   
         
         OSStart();       
}
/*-------------------------------------------------------------------------------
 函数功能:初始化各种外设
 说    明:因为跑操作系统,所以外设的初始化应该放在操作系统的初始任务中完成,不能
          在while(1)循环外部完成外设的初始化工作,否则操作系统可能无法启动.
                  本函数在app.c中被调用
-------------------------------------------------------------------------------*/
void BSP_Init(void)
{
        OS_CPU_SR  cpu_sr = 0u;
        OS_ENTER_CRITICAL();
        DelayInit();                 //初始化延时
        PinCfg();                         //外部器件控制配置
        FSMC_LCD_Init();         //FSMC总线配置                  
        GUI_Init();                         //初始化UCGUI界面
        TSC2046_Config();         //初始化触摸控制器
        USART1_Config();         //初始化串口
        DAC_Config();                 //初始化DAC1
        ADC1_Init();                 //初始化ADC1
        EXTI_Config();                 //初始化外部中断
        Key_EXTI_Config();         //初始化按键中断
        TIM5_Config(1999,71);  //TIM5以1MHz频率计数,每2ms溢出中断
//        TIM4_Config(59999,71); //TIM4以1MHz频率计数,每60ms溢出中断
        RTC_Init();                            //初始化RTC
//        SD_Init();
        JDQ_ACDC = 1;                  //交流耦合
        ManualGainScan(3);    //调试用
        IWDG_Init(4,625);     //喂狗时间为1000ms
        OS_EXIT_CRITICAL();         
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/591391.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【面试经典 150 | 字典树】添加与搜索单词 - 数据结构设计

文章目录 写在前面Tag题目来源解题思路方法一:字典树 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行回…

大功率双向直流电源的输出电压和电流

双向直流电源(Bidirectional DC Power Supply)是一种具有双向输出电能的直流电源。与传统的直流电源相比,双向直流电源在输出电能的同时,还具备一定的电流输入能力,从而使其应用范围更加广泛。大功率双向直流电源作为电…

【开发技巧 | 第二篇】IDEA新增作者信息、方法参数返回值

文章目录 2.IDEA新增作者信息、方法参数返回值2.1类新增作者信息2.2方法新增参数返回信息2.3测试2.3.1新建类2.3.2新建方法 2.IDEA新增作者信息、方法参数返回值 2.1类新增作者信息 打开IDEA的Settings,Editor->Code Style->File and Code Templates->Inc…

使用 ORPO 微调 Llama 3

原文地址:https://towardsdatascience.com/fine-tune-llama-3-with-orpo-56cfab2f9ada 更便宜、更快的统一微调技术 2024 年 4 月 19 日 ORPO 是一种新的令人兴奋的微调技术,它将传统的监督微调和偏好校准阶段合并为一个过程。这减少了训练所需的计算…

思科防火墙查如何查看现有ipsec隧道信息

环境: 思科ASA5555 问题描述: 思科防火墙查如何看现有ipsec隧道信息 解决方案: 1.进入特权模式: enable 查看isakmp信息 show crypto isakmp sa2.查看ipsec信息 show crypto ipsec sa上述命令将显示当前的ISAKMP安全关联…

设计模式之组合实体模式

在编程的奇幻森林里,树木与枝叶错综复杂,如何让代码世界井然有序?组合实体模式(Composite Pattern)就像一位高明的园艺师,它以一种巧妙的方式,将个体与整体统一管理,让无论是单个对象…

【Conda】解决使用清华源创建虚拟环境不成功问题

文章目录 问题描述:清华源创建不成功解决步骤1 添加官方源步骤2 删除C:/user/你的用户名/的 .condarc 文件步骤3 再次创建 问题描述:清华源创建不成功 本地配置了清华源,但是在创建虚拟环境时不成功,报错如下。 图片若看不清&…

直流屏电源模块HK22010/T2充电模块HK11010/T2说明

直流屏整流模块HK22010/T2电源模块HK11010/T2充电机HK22005/T2,HK11020/T2,HK22020/T2以及各种电源型号介绍 产品名称:直流屏电源模块HK22005/T2充电机HK11020/T2整流模块HK11005/T2,HK22020/T2 技术参数 交流输入额定电压&…

AI大模型探索之路-训练篇11:大语言模型Transformer库-Model组件实践

系列篇章💥 AI大模型探索之路-训练篇1:大语言模型微调基础认知 AI大模型探索之路-训练篇2:大语言模型预训练基础认知 AI大模型探索之路-训练篇3:大语言模型全景解读 AI大模型探索之路-训练篇4:大语言模型训练数据集概…

一觉醒来 AI科技圈发生的大小事儿 05月03日

📳马斯克刚回美国,旋风裁掉了这个部门 特斯拉CEO马斯克裁撤超充团队,开除两名高管,转向AI领域,集中精力发展FSD;裁员举措引发合作伙伴担忧,特斯拉放缓充电站建设,影响整个行业&…

./build.sh:行1: g++: 未找到命令的错误问题在centos操作系统下面如何解决

目录 g: 未找到命令报错解释g: 未找到命令解决方法 centos操作系统,执行一个bash,bash命令很简单,就是用g编译一个C的程序。报告错误: ./build.sh:行1: g: 未找到命令 g: 未找到命令报错解释 这个错误表明在执行名为 build.sh 的…

一文了解复杂度

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、算法效率二、时间复杂度1.定义2.大O的渐进表示法3.一般常见复杂度4.实例 三、空间复杂度1.定义2.空间复杂度计算3.实例 总结 前言 计算复杂性理论&#xf…

LWIP+TCP客户端

一、TCP API函数 其中tcp_poll()函数的第三个参数表示隔几秒调用一次这个周期性函数 二、修改服务器的IP 三、TCP客户端编程思路 申请套接字绑定服务器IP和端口号等待客户端连接 进入连接回调函数在连接回调函数中 配置一些回调函数,如接收回调函数,周期…

FIFO Generate IP核使用——AXI接口FIFO简介

AXI接口FIFO是从Native接口FIFO派生而来的。AXI内存映射接口提供了三种样式:AXI4、AXI3和AXI4-Lite。除了Native接口FIFO支持的应用外,AXI FIFO还可以用于AXI系统总线和点对点高速应用。 AXI接口FIFO不支持Builtin FIFO和 Shift Register FIFO配置。 当…

UG NX二次开发(C#)-获取Part中对象创建时的序号(*)

文章目录 1、前言2、UG NX的对象序号讲解3、采用UG NX二次开发或者建模序号4、注意事项1、前言 在UG NX中,我们创建任意一个对象,都会在模型历史中添加一个创建对象的编号,即是对象序号,这个是递增的,当删除中间产生的对象时,其序号会重新按照建模顺序重新排布。今天一个…

34.基础乐理-简谱需要移调吗?

首先需要具备 首调 与 固定调的知识,才能理解,以两只老虎为例子,如下图: 首调:可以看到C大调、D大调、E大调三种方式的乐谱,记录的数字,记录的唱名,都是1231,唯一不同的…

Zookeeper服务

一、什么是Zookeeper Zookeeper 是一个分布式应用程序的协调服务,它提供了一个高性能的分布式配置管理、分布式锁服务和分布式协调服务。它是 Apache 软件基金会的一个项目,被设计用来处理大规模的分布式系统中的一些关键问题。 Zookeeper的组成员关系&…

论文辅助笔记:Tempo 之 model.py

0 导入库 import math from dataclasses import dataclass, asdictimport torch import torch.nn as nnfrom src.modules.transformer import Block from src.modules.prompt import Prompt from src.modules.utils import (FlattenHead,PoolingHead,RevIN, )1TEMPOConfig 1.…

在编程的世界里,我相信每一行代码都是一次对未来的投资

😀前言 突然有感而发也是激励自己互勉 🏠个人主页:尘觉主页 文章目录 在编程的世界里,我相信每一行代码都是一次对未来的投资类似句子编程的本质代码的价值构建可持续的未来结语 在编程的世界里,我相信每一行代码都是一…

【JVM】GC调优(优化JVM参数)、性能调优

GC调优 GC调优的主要目标是避免由垃圾回收引起程序性能下降。 GC调优的核心指标 垃圾回收吞吐量:执行用户代码时间/(执行用户代码时间 GC时间)延迟:GC延迟 业务执行时间内存使用量 GC调优步骤 发现问题:通过监控…