zoukankan      html  css  js  c++  java
  • 作业二,adc,dac的使用,以及利萨如图

    #include "main.h"
    #include "adc.h"
    #include "tim.h"
    #include "usart.h"
    #include "gpio.h"
    #include "stdio.h"
    
    #ifdef __GNUC__
    #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
    #else
    #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
    #endif
    PUTCHAR_PROTOTYPE
    {
        HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);
        return ch;
    }
    uint32_t max(uint32_t a,uint32_t b)
    {return a>b?a:b;}
    
    void SystemClock_Config(void);
    uint32_t AD_Value = 0;
    int cnt=0,flag=0;
    void scr1()
    {
        uint32_t v1=0;
        cnt=0;
        HAL_ADC_Start(&hadc1);
        HAL_TIM_Base_Start_IT(&htim2);
        HAL_Delay(1000);
        HAL_TIM_Base_Stop_IT(&htim2);
        for(int i=0;i<=5000;i++)
        {
            AD_Value = HAL_ADC_GetValue(&hadc1);
            v1=max(AD_Value,v1);
        }
        printf("波一的频率为%dHz,最大值为%f
    ",cnt/2,v1*3.3/4096);
    }
    void scr2()
    {
        uint32_t v2=0;
        cnt=0;
        HAL_ADC_Start(&hadc2);
        HAL_TIM_Base_Start_IT(&htim2);
        HAL_Delay(1000);
        HAL_TIM_Base_Stop_IT(&htim2);
        for(int i=0;i<=5000;i++)
        {
            AD_Value = HAL_ADC_GetValue(&hadc2);
            v2=max(AD_Value,v2);
        }
        printf("波二的频率为%dHz,最大值为%f
    ",cnt/2,v2*3.3/4096);
    }
    int main(void)
    {
      HAL_Init();
      SystemClock_Config();
      MX_GPIO_Init();
      MX_ADC1_Init();
      MX_USART1_UART_Init();
      MX_ADC2_Init();
      MX_TIM2_Init();
    
      while (1)
      {
          if(HAL_GPIO_ReadPin(k0_GPIO_Port,k0_Pin)==GPIO_PIN_SET||mode==0)
          {
              scr1();
              scr2();
              while(1){if(HAL_GPIO_ReadPin(k1_GPIO_Port,k1_Pin)==GPIO_PIN_SET){mode=1;break;}}
          }
    
          else
          {
    
          }
      }
    }
    
    void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
    
    {
        if (htim->Instance == TIM2)
        {
            AD_Value = HAL_ADC_GetValue(&hadc1);
              uint32_t p=AD_Value*3.3/4096;
               if(flag==0)if(p>0){cnt++;flag^=1;}
               else if(flag==1)if(p==0){cnt++;flag^=1;}
        }
    }

    尚未施工完成……dac还没有写,然后测频率还没有测试,写的很蠢,时间也不太够之前一直在摸,死亡冲刺了

  • 相关阅读:
    [Err] 1055
    java -jar 时指定内存大小
    mysql判断是否存在数据库和表,进行删除和创建
    更新element-ui版本
    js 数组操作
    vue router 常用操作
    [algorithm] 汉诺塔问题
    【algorithm】 二分查找算法
    [algorithm] Dijkstra双栈算法表达式求值算法
    【hive】 hive 加载数据
  • 原文地址:https://www.cnblogs.com/SFWR-YOU/p/14195274.html
Copyright © 2011-2022 走看看