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、程序

cpp 复制代码
/*------------------------------------------------------------------------------------
                                                                   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();         
}
相关推荐
sinat_360704828 小时前
STM32 看门狗
stm32·单片机·嵌入式硬件
亿道电子Emdoor8 小时前
【ARM】MDK如何生成指定大小的bin文件,并指定空区域的填充数据
arm开发·stm32·单片机
mftang8 小时前
STM32 CAN过滤器配置和应用方法介绍
stm32·单片机·嵌入式硬件
楼台的春风10 小时前
【详细讲解在STM32的UART通信中使用DMA机制】
stm32·单片机·嵌入式硬件·mcu·物联网·嵌入式·信息与通信
Chambor_mak10 小时前
stm32单片机个人学习笔记16(SPI通信协议)
stm32·单片机·学习
电子科技圈11 小时前
在低功耗MCU上实现人工智能和机器学习
人工智能·经验分享·科技·嵌入式硬件·mcu·物联网·机器学习
小白今天也很酷11 小时前
Python与MCU通信:串口数据采集及CSV/Excel存储方法
python·单片机·excel
海的预约12 小时前
51单片机-按键
单片机·嵌入式硬件·51单片机
【云轩】16 小时前
基于STM32与IFX007T的电机驱动全解析(无人机/机器人实战)
stm32·机器人·无人机
qq_7556822401 天前
STM32使用NRF2401进行数据传送
stm32·单片机·嵌入式硬件