找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3516|回复: 0
收起左侧

STM32双通道方波频率检测与倍频输出的设计源码 蓝桥杯CT117E考试板

[复制链接]
ID:336658 发表于 2018-5-23 17:18 | 显示全部楼层 |阅读模式
嵌入式第五届省赛-双通道方波频率检测与倍频输出HGS20180328
“蓝桥杯” 第六届全国软件和信息技术专业人才大赛
嵌入式设计与开发项目模拟试题
功能简述
  “双通道方波频率检测与倍频输出”设计要求测量输入方波信号的频率,并根据设定的
倍频数,输出经过倍频的方波信号。倍频数可以通过按键设定,也可以通过串行口设定;LCD
显示2个通道的频率测量值和倍频数。系统框图如图 1所示:
0.png
CT117E考试板电路原理图、LCD 驱动程序、及本题涉及到的芯片资料可参考计算机上的电子文档。电路原理图、程序流程图及相关工程文件请以考生准考证命名,并保存在指定文件夹中(文件夹名为考生准考证号,文件夹位于Windows桌面上) 。
0.png

单片机源程序如下:
  1. //上电为本地模式  
  2. //无PWM输入显示0Hz  
  3. //TIM2_PWMin和串口发有冲突  但题目未用TX,不初始化TX即可(因为PWM为输入模式),这样无论是否在串口模式都能保证PWM输出
  4. //TIM3_PWMout使用  GPIO_Mode_Out_PP
  5. #include "stm32f10x.h"
  6. #include <stdio.h>
  7. #include "user.h"
  8. #include "lcd.h"
  9. #include "i2c.h"

  10. u32 TimingDelay = 0;
  11. u8  USART_Test=0;
  12. u8 string[20];
  13. u8 PA6_Mul=0,PA7_Mul=0;
  14. u8 PA6_Out=0,PA7_Out=0;

  15. __IO uint16_t ICReadValue1_now = 0,ICReadValue1_last = 0, ICReadValue2_now = 0,ICReadValue2_last = 0;
  16. __IO uint32_t Freq1_now = 0,Freq1_last = 0,Freq2_now = 0,Freq2_last = 0;
  17. __IO uint8_t  Freq1_Display=0,Freq2_Display=0;

  18. uint16_t CCR1_Val = 500;   //  72000 000/(71+2)=1/1000 000
  19. uint16_t CCR2_Val = 1000;  //  T=CCR*2*(1/1000 000) , f=1/T  ==>CCR=5000000/f

  20. u8 count=0;
  21. u8 RX_buf[20];
  22. u8 Data_right=0;
  23. u8 RXcomplitFlag=0;

  24. u8 Local_mode=1;
  25. u8 Set_channel=1;

  26. u16 LED=0XFFFF;

  27. void Delay_Ms(u32 nTime);
  28. void LED_Config(void);
  29. void LCD_Config(void);
  30. void KEY_Config(void);
  31. void IIC_Config(void);
  32. void USART_Config(void);
  33. void TIM2_PWMin_Config(void);
  34. void TIM3_PWMout_Config(void);
  35. void ALL_Init(void);
  36. void KEY_Scan(void);
  37. u8 IIC_Read(u8 add);
  38. void IIC_Write(u8 add,u8 dat);
  39. void NVIC_Configuration(void);
  40. void USART_SendStr(u8 *str);
  41. void LED_Run(void);

  42. int main(void)
  43. {
  44.         SysTick_Config(SystemCoreClock/1000);
  45.         LED_Config();
  46.   LCD_Config();
  47.   KEY_Config();
  48.   IIC_Config();
  49.   USART_Config();
  50.   TIM2_PWMin_Config();
  51.   TIM3_PWMout_Config();
  52.   ALL_Init();
  53.         
  54.         Delay_Ms(5);IIC_Write(0x01,2);
  55.         Delay_Ms(5);IIC_Write(0x02,2);
  56.         Delay_Ms(5);PA6_Mul=IIC_Read(0x01);
  57.         Delay_Ms(5);PA7_Mul=IIC_Read(0x02);
  58.         sprintf((char*)string," N(1):%d            ",PA6_Mul);
  59.         LCD_DisplayStringLine(Line2,string);
  60.         sprintf((char*)string," N(2):%d            ",PA7_Mul);
  61.         LCD_DisplayStringLine(Line6,string);
  62.   LED_Run();
  63.         
  64.   while (1)
  65.   {
  66.                 KEY_Scan();
  67.                 LED_Run();
  68.                 if(Freq1_Display==1)
  69.                 {
  70.                         Freq1_Display=0;
  71.                         sprintf((char*)string," Channel(1):%dHz  ",Freq1_now);
  72.                         LCD_DisplayStringLine(Line1,string);
  73.                         if((Freq1_now>=50)&&(Freq1_now<=50000))
  74.                         {
  75.                                 CCR1_Val = 500000/Freq1_now/PA6_Mul;
  76.                                 PA6_Out=1;LED&=~LED1;
  77.                         }
  78.                         else {PA6_Out=0;LED|=LED1;LCD_DisplayStringLine(Line1,(unsigned char *)" Channel(1):0Hz        ");}
  79.                 }
  80.                 else {PA6_Out=0;LED|=LED1;LCD_DisplayStringLine(Line1,(unsigned char *)" Channel(1):0Hz          ");}
  81.                
  82.                 if(Freq2_Display==1)
  83.                 {
  84.                         Freq2_Display=0;
  85.                         sprintf((char*)string," Channel(1):%dHz  ",Freq2_now);
  86.                         LCD_DisplayStringLine(Line5,string);
  87.                   if((Freq2_now>=50)&&(Freq2_now<=50000))
  88.                         {
  89.                                 CCR2_Val = 500000/Freq2_now/PA7_Mul;
  90.                                 PA7_Out=1;LED&=~LED2;
  91.                         }
  92.                         else {PA7_Out=0;LED|=LED2;LCD_DisplayStringLine(Line5,(unsigned char *)" Channel(2):0Hz        ");}
  93.                 }
  94.                 else {PA7_Out=0;LED|=LED2;LCD_DisplayStringLine(Line5,(unsigned char *)" Channel(2):0Hz        ");}
  95.                
  96.                 if(RXcomplitFlag==1)
  97.                 {
  98.                         RXcomplitFlag=0;
  99.                         if((RX_buf[4]-48)==1)
  100.                         {
  101.                                 PA6_Mul=(RX_buf[6]-48)*10+(RX_buf[7]-48);
  102.                                 sprintf((char*)string," N(1):%d                ",PA6_Mul);
  103.               LCD_DisplayStringLine(Line2,string);
  104.                         }
  105.                         else if((RX_buf[4]-48)==2)
  106.                         {
  107.                                 PA7_Mul=(RX_buf[6]-48)*10+(RX_buf[7]-48);
  108.                                 sprintf((char*)string," N(2):%d                ",PA7_Mul);
  109.               LCD_DisplayStringLine(Line6,string);
  110.                         }
  111.                 }
  112.   }
  113. }

  114. void KEY_Scan(void)
  115. {
  116.         if(RB1==0)
  117.         {
  118.                 Delay_Ms(5);
  119.                 if(RB1==0)
  120.                 {
  121.                         if(Local_mode==0)
  122.                         {
  123.                                 Local_mode=1;
  124.                                 USART_Cmd(USARTz, DISABLE);
  125.                                 USART_ITConfig(USARTz, USART_IT_RXNE, DISABLE);
  126. //                                TIM2_PWMin_Config();
  127.                                 RCC_APB1PeriphClockCmd(USARTz_CLK, DISABLE);
  128.         LCD_DisplayStringLine(Line9,(unsigned char *)"                  1 ");
  129.                                 LED|=LED3;
  130.                         }
  131.       else if(Local_mode==1)
  132.                         {
  133.                                 Local_mode=0;Set_channel=1;
  134.                                 USART_Config();
  135.         LCD_DisplayStringLine(Line9,(unsigned char *)"                    ");
  136.                                 LED&=~LED3;
  137.                         }                                
  138.                 }
  139.                 while(!RB1);
  140.         }
  141.         else if(RB2==0)
  142.         {
  143.                 Delay_Ms(5);
  144.                 if(RB2==0)
  145.                 {
  146.                         if(Local_mode==1)
  147.                         {
  148.                                 if(Set_channel==1)
  149.                                 {
  150.                                         Set_channel=2;
  151.                                         LCD_DisplayStringLine(Line9,(unsigned char *)"                  2 ");
  152.                                 }
  153.                                 else if(Set_channel==2)
  154.                                 {
  155.                                         Set_channel=1;
  156.                                         LCD_DisplayStringLine(Line9,(unsigned char *)"                  1 ");
  157.                                 }
  158.                         }        
  159.                 }
  160.                 while(!RB2);
  161.         }
  162.         else if(RB3==0)
  163.         {
  164.                 Delay_Ms(5);
  165.                 if(RB3==0)
  166.                 {
  167.                         if(Local_mode==1)
  168.                         {
  169.                                 if(Set_channel==1)
  170.                                 {
  171.                                         PA6_Mul--;
  172.                                         if(PA6_Mul<=1)PA6_Mul=1;
  173.                                         sprintf((char*)string," N(1):%d                ",PA6_Mul);
  174.                 LCD_DisplayStringLine(Line2,string);
  175.                                         Delay_Ms(5);IIC_Write(0x01,PA6_Mul);
  176.                                 }
  177.                                 else if(Set_channel==2)
  178.                                 {
  179.                                         PA7_Mul--;
  180.                                         if(PA7_Mul<=1)PA7_Mul=1;
  181.                                         sprintf((char*)string," N(2):%d                ",PA7_Mul);
  182.                 LCD_DisplayStringLine(Line6,string);
  183.                                         Delay_Ms(5);IIC_Write(0x02,PA7_Mul);
  184.                                 }
  185.                         }        
  186.                 }
  187.                 while(!RB3);
  188.         }
  189.         else if(RB4==0)
  190.         {
  191.                 Delay_Ms(5);
  192.                 if(RB4==0)
  193.                 {
  194.                         if(Local_mode==1)
  195.                         {
  196.                                 if(Set_channel==1)
  197.                                 {
  198.                                         PA6_Mul++;
  199.                                         if(PA6_Mul>=10)PA6_Mul=10;
  200.                                         sprintf((char*)string," N(1):%d                ",PA6_Mul);
  201.                 LCD_DisplayStringLine(Line2,string);
  202.                                         Delay_Ms(5);IIC_Write(0x01,PA6_Mul);
  203.                                 }
  204.                                 else if(Set_channel==2)
  205.                                 {
  206.                                         PA7_Mul++;
  207.                                         if(PA7_Mul>=10)PA7_Mul=10;
  208.                                         sprintf((char*)string," N(2):%d                ",PA7_Mul);
  209.                 LCD_DisplayStringLine(Line6,string);
  210.                                         Delay_Ms(5);IIC_Write(0x02,PA7_Mul);
  211.                                 }
  212.                         }        
  213.                 }
  214.                 while(!RB4);
  215.         }
  216. }


  217. void LCD_Config(void)
  218. {
  219.         STM3210B_LCD_Init();
  220.         LCD_Clear(White);
  221.         LCD_SetBackColor(White);
  222.         LCD_SetTextColor(Blue);
  223.         LCD_DisplayStringLine(Line0,(unsigned char *)"                    ");        
  224.         LCD_DisplayStringLine(Line1,(unsigned char *)" Channel(1):1000Hz  ");        
  225.         LCD_DisplayStringLine(Line2,(unsigned char *)" N(1):2             ");
  226.         LCD_DisplayStringLine(Line3,(unsigned char *)"                    ");
  227.         LCD_DisplayStringLine(Line4,(unsigned char *)"                    ");
  228.         LCD_DisplayStringLine(Line5,(unsigned char *)" Channel(2):1000Hz  ");
  229.         LCD_DisplayStringLine(Line6,(unsigned char *)" N(2):2             ");
  230.         LCD_DisplayStringLine(Line7,(unsigned char *)"                    ");        
  231.         LCD_DisplayStringLine(Line8,(unsigned char *)"                    ");
  232.         LCD_DisplayStringLine(Line9,(unsigned char *)"                  1 ");        
  233. }        

  234. void USART_SendStr(u8 *str)
  235. {
  236.         u8 i=0;
  237.         do
  238.         {
  239.                 USART_SendData(USART2, *(str+i));
  240.                 while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET);
  241.                 i++;
  242.         }while(*(str+i)!='\0');
  243.         while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);
  244. }

  245. void TIM2_PWMin_Config(void)
  246. {
  247.         GPIO_InitTypeDef GPIO_InitStructure;
  248.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  249.         TIM_ICInitTypeDef  TIM_ICInitStructure;
  250.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
  251.         
  252.         GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_1|GPIO_Pin_2;
  253.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  254.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  255.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  256.         
  257.         TIM_TimeBaseStructure.TIM_Period = 0xffff;
  258.   TIM_TimeBaseStructure.TIM_Prescaler = 71;
  259.   TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  260.   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  261.   TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

  262.         TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;
  263.   TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
  264.   TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
  265.   TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
  266.   TIM_ICInitStructure.TIM_ICFilter = 0x0;
  267.         TIM_ICInit(TIM2, &TIM_ICInitStructure);
  268.         
  269.         TIM_ICInitStructure.TIM_Channel = TIM_Channel_3;
  270.   TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
  271.   TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
  272.   TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
  273.   TIM_ICInitStructure.TIM_ICFilter = 0x0;
  274.   TIM_ICInit(TIM2, &TIM_ICInitStructure);
  275.         
  276.   TIM_Cmd(TIM2, ENABLE);
  277.   TIM_ITConfig(TIM2, TIM_IT_CC2|TIM_IT_CC3, ENABLE);
  278. }        


  279. void TIM2_IRQHandler(void)
  280. {
  281.   if(TIM_GetITStatus(TIM2, TIM_IT_CC2) == SET)
  282.   {
  283.                 TIM_ClearITPendingBit(TIM2, TIM_IT_CC2);
  284.                 ICReadValue1_now=TIM_GetCapture2(TIM2);
  285.                 if(ICReadValue1_now!=ICReadValue1_last)
  286.                 {
  287.                         Freq1_now=1000000/(ICReadValue1_now-ICReadValue1_last);
  288.                 }
  289.                 if(Freq1_now==0)
  290.                 {
  291.                         Freq1_now=Freq1_last;
  292.                 }
  293.                 ICReadValue1_last=ICReadValue1_now;
  294.                 Freq1_last=Freq1_now;
  295.                 Freq1_Display=1;
  296.         }
  297.         if(TIM_GetITStatus(TIM2, TIM_IT_CC3) == SET)
  298.   {
  299.                 TIM_ClearITPendingBit(TIM2, TIM_IT_CC3);
  300.                 ICReadValue2_now=TIM_GetCapture3(TIM2);
  301.                 if(ICReadValue2_now!=ICReadValue2_last)
  302.                 {
  303.                         Freq2_now=1000000/(ICReadValue2_now-ICReadValue2_last);
  304.                 }
  305.                 if(Freq2_now==0)
  306.                 {
  307.                         Freq2_now=Freq2_last;
  308.                 }
  309.                 ICReadValue2_last=ICReadValue2_now;
  310.                 Freq2_last=Freq2_now;
  311.                 Freq2_Display=1;
  312.         }        
  313. }


  314. void TIM3_PWMout_Config(void)
  315. {
  316.         GPIO_InitTypeDef GPIO_InitStructure;
  317.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  318.   TIM_OCInitTypeDef  TIM_OCInitStructure;
  319.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
  320.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
  321.         
  322.         GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6|GPIO_Pin_7;
  323.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  324.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  325.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  326.         
  327.         TIM_TimeBaseStructure.TIM_Period = 65535;
  328.   TIM_TimeBaseStructure.TIM_Prescaler = 71;
  329.   TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  330.   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  331.   TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
  332.         
  333.   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle;
  334.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  335.   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
  336.   TIM_OC1Init(TIM3, &TIM_OCInitStructure);
  337.   TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Disable);

  338.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  339.   TIM_OC2Init(TIM3, &TIM_OCInitStructure);
  340.   TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Disable);

  341.   TIM_ITConfig(TIM3, TIM_IT_CC1|TIM_IT_CC2, ENABLE);
  342.   TIM_Cmd(TIM3, ENABLE);
  343. }        

  344. uint16_t capture = 0;

  345. void TIM3_IRQHandler(void)
  346. {
  347.   if (TIM_GetITStatus(TIM3, TIM_IT_CC1) != RESET)
  348.   {
  349.     TIM_ClearITPendingBit(TIM3, TIM_IT_CC1 );
  350.     capture = TIM_GetCapture1(TIM3);
  351.     TIM_SetCompare1(TIM3, capture + CCR1_Val );
  352.                 if(PA6_Out==1)
  353.                 {
  354.                         GPIO_WriteBit(GPIOA, GPIO_Pin_6, (BitAction)(1-GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_6)));
  355.                 }
  356.                 else
  357.                 {
  358.                         CCR1_Val=0;GPIO_WriteBit(GPIOA, GPIO_Pin_6, (BitAction)0);
  359.                 }
  360.   }

  361.   if (TIM_GetITStatus(TIM3, TIM_IT_CC2) != RESET)
  362.   {
  363.     TIM_ClearITPendingBit(TIM3, TIM_IT_CC2);
  364.     capture = TIM_GetCapture2(TIM3);
  365.     TIM_SetCompare2(TIM3, capture + CCR2_Val);
  366.                 if(PA7_Out==1)
  367.                 {
  368.                         GPIO_WriteBit(GPIOA, GPIO_Pin_7, (BitAction)(1-GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_7)));
  369.                 }
  370.                 else
  371.                 {
  372.                         GPIO_WriteBit(GPIOA, GPIO_Pin_7, (BitAction)0);
  373.                 }
  374.   }
  375. }

  376. void ALL_Init(void)
  377. {
  378.         NVIC_Configuration();
  379.         GPIO_SetBits(GPIOD, GPIO_Pin_2);
  380.         GPIO_SetBits(GPIOC, LED1|LED2|LED3|LED4|LED5|LED6|LED7|LED8);
  381.   GPIO_ResetBits(GPIOD, GPIO_Pin_2);
  382. }
  383.         
  384. void NVIC_Configuration(void)
  385. {
  386.   NVIC_InitTypeDef NVIC_InitStructure;
  387.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
  388.   NVIC_InitStructure.NVIC_IRQChannel = USARTz_IRQn;
  389.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  390.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  391.   NVIC_Init(&NVIC_InitStructure);
  392.         
  393.         NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
  394.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  395.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  396.   NVIC_Init(&NVIC_InitStructure);
  397.         
  398.         NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
  399.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  400.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  401.   NVIC_Init(&NVIC_InitStructure);
  402. }

  403. void SysTick_Handler(void)
  404. {
  405.                 TimingDelay--;
  406. }

  407. void USART2_IRQHandler(void)
  408. {
  409.         u8 temp;
  410.   if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
  411.   {

  412.     temp = USART_ReceiveData(USART2);
  413.     if(temp == 'S')
  414.     {
  415.       RX_buf[count]=temp;Data_right=1;count++;
  416.     }
  417.                 else if(Data_right==1)
  418.     {
  419.       RX_buf[count]=temp;
  420.                         count++;
  421.                         if(count==8)
  422.                         {
  423.                                 count=0;Data_right=0;RXcomplitFlag=1;
  424.                         }
  425.     }
  426.                 USART_ClearITPendingBit(USART2, USART_IT_RXNE);
  427.   }
  428. }


  429. void LED_Run(void)
  430. {
  431.         GPIO_Write(GPIOC,LED);
  432.         GPIO_SetBits(GPIOD, GPIO_Pin_2);
  433.   GPIO_ResetBits(GPIOD, GPIO_Pin_2);
  434. }














  435. void KEY_Config(void)
  436. {
  437.         GPIO_InitTypeDef GPIO_InitStructure;
  438.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);
  439.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_8;
  440.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  441.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  442.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2;
  443.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  444.   GPIO_Init(GPIOB, &GPIO_InitStructure);
  445. }        

  446. void IIC_Config(void)
  447. {
  448.         i2c_init();
  449. }        
  450. u8 IIC_Read(u8 add)
  451. {
  452.         u8 data;
  453.         I2CStart();
  454.         I2CSendByte(0xa0);
  455.         I2CSendAck();
  456.         I2CSendByte(add);
  457.         I2CSendAck();
  458.         
  459.         I2CStart();
  460.         I2CSendByte(0xa1);
  461. ……………………

  462. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
0.png

所有资料51hei提供下载:
嵌入式第五届省赛-双通道方波频率检测与倍频输出HGS20180328.rar (449.17 KB, 下载次数: 68)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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