找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3249|回复: 3
打印 上一主题 下一主题
收起左侧

示波器stm32程序

[复制链接]
跳转到指定楼层
楼主
ID:229099 发表于 2017-8-24 11:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
希望大家多多支持,分享资料,共同学习

所有资料51hei提供下载:
OSC.rar (255.14 KB, 下载次数: 56)

单片机源程序如下:
  1. #include "stm32f10x.h"
  2. #include "systick.h"
  3. #include "lcd.h"
  4. #include "adc.h"
  5. #include "stm32f10x_it.h"
  6. #include "timer.h"


  7. u16 j = 0;
  8. float temp;
  9. float temp1;

  10. void nvic_init(void);
  11. void rcc_init(void);
  12. void gpio_init(void);

  13. void clear_point(u16 hang)
  14. {
  15.         u8 index_clear_lie = 0;
  16.         POINT_COLOR = DARKBLUE;
  17.         for(index_clear_lie = 0;index_clear_lie <201;index_clear_lie++)
  18.         {               
  19.                 lcd_huadian(hang,index_clear_lie);
  20.         }        
  21.         POINT_COLOR=RED;        
  22. }

  23. int main(void)
  24. {                                    
  25.         SystemInit();                    //系统时钟初始化
  26.         nvic_init();                   // 中断优先级配置
  27.         rcc_init();                           //外设时钟配置
  28.         gpio_init();                           //外设io口配置
  29.         set_io0();
  30.         
  31.         key_init();
  32.         systick_init();                   //滴答配置,
  33.         adc_init();                                //adc配置
  34.         LCD_Init();                                 //tft液晶初始化
  35.         set_background();                  //初始化背景
  36.                  
  37.         time_init();                        //定时器配置,测频率用的二个定时器
  38.         time_enable();                        //同步开始计数
  39.         get_value();
  40.         vpp = get_vpp();

  41.         while(1)
  42.         {        

  43.                         for(j=ind;j<ind+250;j=j+1)
  44.                         {
  45.                 temp = a[j] * 3300 / 4096  *  25 /vcc_div;
  46.                                 temp1 = a[j + 1] * 3300 / 4096 * 25 / vcc_div;
  47.                                 clear_point(j-ind);        
  48.                                 if(temp>200)
  49.                                 {
  50.                                         temp=200;        
  51.                                 }
  52.                                 if(temp<0)
  53.                                 {
  54.                                         temp=0;        
  55.                                 }
  56.                                 if(temp1>200)
  57.                                 {
  58.                                         temp1=200;        
  59.                                 }
  60.                                 if(temp1<0)
  61.                                 {
  62.                                         temp1=0;        
  63.                                 }
  64.                                 lcd_huadian(j-ind,temp);                                
  65.                                 lcd_huaxian(j-ind,temp,j-ind+1,temp1);               
  66.                                 hua_wang();                 
  67.                         }
  68.                                        
  69.                         LCD_Show2Num(144,224,vpp,5,16,0);               
  70.                         get_value();
  71.                         vpp = get_vpp();        
  72.         }                                                   
  73. }

  74. void nvic_init(void)
  75. {
  76.         NVIC_InitTypeDef    NVIC_InitTypeStruct;

  77.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

  78.         NVIC_InitTypeStruct.NVIC_IRQChannel = EXTI0_IRQn;
  79.         NVIC_InitTypeStruct.NVIC_IRQChannelPreemptionPriority =        2;
  80.         NVIC_InitTypeStruct.NVIC_IRQChannelSubPriority = 0;
  81.         NVIC_Init(&NVIC_InitTypeStruct);                                 

  82.         NVIC_InitTypeStruct.NVIC_IRQChannel = EXTI15_10_IRQn;
  83.         NVIC_InitTypeStruct.NVIC_IRQChannelPreemptionPriority =        2;
  84.         NVIC_InitTypeStruct.NVIC_IRQChannelSubPriority = 1;
  85.         NVIC_Init(&NVIC_InitTypeStruct);

  86.         NVIC_InitTypeStruct.NVIC_IRQChannel = TIM2_IRQn;                     //配置中断优先级
  87.         NVIC_InitTypeStruct.NVIC_IRQChannelPreemptionPriority =        0;
  88.         NVIC_InitTypeStruct.NVIC_IRQChannelSubPriority = 2;
  89.         NVIC_InitTypeStruct.NVIC_IRQChannelCmd = ENABLE;
  90.         NVIC_Init(&NVIC_InitTypeStruct);

  91.         NVIC_InitTypeStruct.NVIC_IRQChannel = TIM3_IRQn;
  92.         NVIC_InitTypeStruct.NVIC_IRQChannelPreemptionPriority =        0;
  93.         NVIC_InitTypeStruct.NVIC_IRQChannelSubPriority = 3;
  94.         NVIC_Init(&NVIC_InitTypeStruct);
  95. }

  96. void rcc_init(void)
  97. {
  98.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
  99.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
  100.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
  101.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);

  102.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  103.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
  104.         RCC_ADCCLKConfig(RCC_PCLK2_Div6);
  105.         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);
  106. }

  107. void gpio_init(void)
  108. {
  109.         GPIO_InitTypeDef GPIO_InitTypeStruct;

  110.         GPIO_InitTypeStruct.GPIO_Pin = GPIO_Pin_2;
  111.         GPIO_InitTypeStruct.GPIO_Speed = GPIO_Speed_50MHz;                                 //外部时钟的,用来测频率的,
  112.         GPIO_InitTypeStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  113.         GPIO_Init(GPIOD, &GPIO_InitTypeStruct);

  114.         GPIO_InitTypeStruct.GPIO_Pin = GPIO_Pin_1;
  115.         GPIO_InitTypeStruct.GPIO_Speed = GPIO_Speed_50MHz;                                  //adc输入引脚
  116.         GPIO_InitTypeStruct.GPIO_Mode = GPIO_Mode_AIN;
  117.         GPIO_Init(GPIOA, &GPIO_InitTypeStruct);

  118.         GPIO_InitTypeStruct.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15;
  119.         GPIO_InitTypeStruct.GPIO_Speed = GPIO_Speed_50MHz;                                  //外部中断的io配置
  120.         GPIO_InitTypeStruct.GPIO_Mode = GPIO_Mode_IPU;
  121.         GPIO_Init(GPIOA, &GPIO_InitTypeStruct);

  122.         GPIO_InitTypeStruct.GPIO_Pin = GPIO_Pin_0;
  123.         GPIO_InitTypeStruct.GPIO_Speed = GPIO_Speed_50MHz;                                 //外部中断的io配置
  124.         GPIO_InitTypeStruct.GPIO_Mode = GPIO_Mode_IPD;
  125.         GPIO_Init(GPIOA, &GPIO_InitTypeStruct);

  126.         GPIO_InitTypeStruct.GPIO_Pin = GPIO_Pin_8;                                         //定时器1触发ad转换的输出的那个口
  127.         GPIO_InitTypeStruct.GPIO_Speed = GPIO_Speed_50MHz;
  128.         GPIO_InitTypeStruct.GPIO_Mode = GPIO_Mode_AF_PP;
  129.         GPIO_Init(GPIOA, &GPIO_InitTypeStruct);

  130.         GPIO_InitTypeStruct.GPIO_Pin = GPIO_Pin_3;
  131.         GPIO_InitTypeStruct.GPIO_Speed = GPIO_Speed_50MHz;                                 // S3
  132.         GPIO_InitTypeStruct.GPIO_Mode = GPIO_Mode_Out_PP;
  133.         GPIO_Init(GPIOA, &GPIO_InitTypeStruct);

  134.         GPIO_InitTypeStruct.GPIO_Pin = GPIO_Pin_4;
  135.         GPIO_InitTypeStruct.GPIO_Speed = GPIO_Speed_50MHz;                                 //        S4
  136.         GPIO_InitTypeStruct.GPIO_Mode = GPIO_Mode_Out_PP;
  137.         GPIO_Init(GPIOA, &GPIO_InitTypeStruct);

  138.         GPIO_InitTypeStruct.GPIO_Pin = GPIO_Pin_5;
  139.         GPIO_InitTypeStruct.GPIO_Speed = GPIO_Speed_50MHz;                                 //        S5
  140.         GPIO_InitTypeStruct.GPIO_Mode = GPIO_Mode_Out_PP;
  141.         GPIO_Init(GPIOA, &GPIO_InitTypeStruct);

  142.         GPIO_InitTypeStruct.GPIO_Pin = GPIO_Pin_6;
  143.         GPIO_InitTypeStruct.GPIO_Speed = GPIO_Speed_50MHz;                                 //        S6
  144.         GPIO_InitTypeStruct.GPIO_Mode = GPIO_Mode_Out_PP;
  145.         GPIO_Init(GPIOA, &GPIO_InitTypeStruct);

  146.         GPIO_InitTypeStruct.GPIO_Pin = GPIO_Pin_7;
  147.         GPIO_InitTypeStruct.GPIO_Speed = GPIO_Speed_50MHz;                                 // S7
  148.         GPIO_InitTypeStruct.GPIO_Mode = GPIO_Mode_Out_PP;
  149.         GPIO_Init(GPIOA, &GPIO_InitTypeStruct);
  150. }

复制代码




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:229099 发表于 2017-8-24 11:33 | 只看该作者
求顶!
回复

使用道具 举报

板凳
ID:582553 发表于 2019-7-11 19:59 | 只看该作者
有点厉害,六六六
回复

使用道具 举报

地板
ID:536632 发表于 2019-7-19 18:36 来自手机 | 只看该作者
没频率啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表