zoukankan      html  css  js  c++  java
  • 利用STM32CubeMX来生成USB_HID_Mouse工程【添加ADC】(1)

    现在原来的基础上添加ADC的功能。

    现在(利用STM32CubeMX来生成USB_HID_Mouse工程)基础上新增硬件

    JoyStick Shield 游戏摇杆扩展板

    与STM32F103C8的连接

    目前使用

    JoyStick Shield   STM32F103C8

                               X----PA1(ADC1_IN1)

                               Y----PA2(ADC1_IN2)

    好了我们现在STM32CubeMX来打开之前的工程

    现在我们先设置ADC1_IN1

    让我们来看其adc的默认配置

    现在直接生成工程。

    会发现在原来的工程基础上多了一些ADC的初始化函数等。

    现在我们在main.C新增

    /* USER CODE BEGIN PV */
    /* Private variables ---------------------------------------------------------*/
    uint16_t AD_X_Value = 0;
    /* USER CODE END PV */
    /* USER CODE BEGIN 3 */
      
      /*##-1- Start the conversion process #######################################*/   
       HAL_ADC_Start(&hadc1);//<为启动ADC装换
      /*##-2- Wait for the end of conversion #####################################*/ 
        /**
         *   Before starting a new conversion, you need to check the current state of
         *   the peripheral; if it’s busy you need to wait for the end of current
         *   conversion before starting a new one.
         *   For simplicity reasons, this example is just waiting till the end of the
         *   conversion, but application may perform other tasks while conversion
         *   operation is ongoing. 
         */
        HAL_ADC_PollForConversion(&hadc1, 50);//<表示等待转换完成,第二个参数表示超时时间,单位ms.
        /* Check if the continous conversion of regular channel is finished */
        if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1), HAL_ADC_STATE_REG_EOC)) 
        {
    
            /*##-3- Get the converted value of regular channel  ######################*/
            AD_X_Value = HAL_ADC_GetValue(&hadc1);
            #ifdef RTT_LOG_ENABLED
            loge("AD_X_Value %d",AD_X_Value);
            #endif //RTT_LOG_ENABLED
          
        }
        #if 0
      // Send HID report
        mouseHID.x = 10;
        USBD_HID_SendReport(&hUsbDeviceFS, (uint8_t*)&mouseHID, sizeof(struct mouseHID_t));
        #endif 
        HAL_Delay(1000);
      }
      /* USER CODE END 3 */

    在加上我喜欢的RTT【不知道RTT的可以参考 [转]使用RTT(Real-Time Terminal)

    别忘记在main.c加上

    /* USER CODE BEGIN Includes */
    #include "usbd_hid.h"
    
    #ifdef RTT_LOG_ENABLED
    #include "rtt_log.h"
    #endif //RTT_LOG_ENABLED
    
    /* USER CODE END Includes */

    将在HAL_MspInit()代码中 __HAL_AFIO_REMAP_SWJ_DISABLE();给注释掉

    或者在STM32CubeMX配置的时候将SW接口的直接开启

    下载编译

    我们可以看到x轴变化的时候数据

    关于STM32的ADC更多参考:

    AN3116应用笔记  STM32™ ADC 模式及其应用 .PDF

    http://www.st.com/content/ccc/resource/technical/document/application_note/c4/63/a9/f4/ae/f2/48/5d/CD00258017.pdf/files/CD00258017.pdf/jcr:content/translations/zh.CD00258017.pdf

    原版

    STM32's ADC modes and their applications (AN3116)

    http://www.st.com/content/ccc/resource/technical/document/application_note/c4/63/a9/f4/ae/f2/48/5d/CD00258017.pdf/files/CD00258017.pdf/jcr:content/translations/en.CD00258017.pdf

  • 相关阅读:
    深入理解分布式事务,高并发下分布式事务的解决方案
    java分布式事务,及解决方案
    java的两种同步方式, Synchronized与ReentrantLock的区别
    MYSQL 查看最大连接数和修改最大连接数
    SpringCloud学习:Eureka、Ribbon和Feign
    dubbo支持协议及具体对比
    如何正确地给图像添加高斯噪声
    图像质量评价指标之 PSNR 和 SSIM
    超光谱图像去噪基准
    LeetCode 240——搜索二维矩阵 II
  • 原文地址:https://www.cnblogs.com/libra13179/p/6869987.html
Copyright © 2011-2022 走看看