利用STM32CubeMX来生成USB_HID_Mouse工程【添加ADC】(2)【非dma和中断方式】

上回讲到怎么采集一路的adc的数据,这次我们来采集两路的数据。

现在直接修改原先的代码

/* Private variables ---------------------------------------------------------*/
uint16_t AD_Value_Buf[2];
uint16_t AD_X_Value = 0;
uint16_t AD_Y_Value = 0;
/* USER CODE END PV */
/* USER CODE BEGIN 3 */
  for(uint8_t i=0;i<2;i++)
  {
      /*##-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_Value_Buf[i] = HAL_ADC_GetValue(&hadc1);
        #ifdef RTT_LOG_ENABLED
        loge("AD_Value_Buf[%d] %d",i,AD_Value_Buf[i]);
        #endif//RTT_LOG_ENABLED
    }
  }

    HAL_ADC_Stop(&hadc1);

现在测测一下

现在和我们的HID的报告相结合

  mouseHID.buttons = 0;
  mouseHID.x = 0;
  mouseHID.y = 0;
  mouseHID.wheel = 0;
    AD_X_Value = AD_Value_Buf[0];
    AD_Y_Value = AD_Value_Buf[1];
    #ifdef RTT_LOG_ENABLED
    loge("AD_X_Value %d",AD_X_Value);
    loge("AD_Y_Value %d",AD_Y_Value);   #endif//RTT_LOG_ENABLED
  // Send HID report
    mouseHID.x = AD_Value_map(AD_X_Value,0,4095,-20,20);//从0-4095映射到-20~20
    mouseHID.y = AD_Value_map(AD_Y_Value,0,4095,20,-20);//从0-4095映射到20~-20
    USBD_HID_SendReport(&hUsbDeviceFS, (uint8_t*)&mouseHID, sizeof(struct mouseHID_t));
/* USER CODE BEGIN 0 */
int16_t AD_Value_map(int16_t x, int16_t in_min, int16_t in_max, int16_t out_min, int16_t out_max)
{
    return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
/* USER CODE END 0 */
时间: 2024-08-02 02:41:59

利用STM32CubeMX来生成USB_HID_Mouse工程【添加ADC】(2)【非dma和中断方式】的相关文章

利用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的默认配置 现在直接生成工程. 会发现在原来的工程

利用STM32CubeMX来生成USB_HID_Mouse工程

硬件开发板:STM32F103C8 软件平台 好了现在开始利用STM32CubeMX来生成我们的工程 1.新建工程 选择MCU的型号 选择选择时钟 开启usb的模块 选择USB的类 配置时钟树(主要是设置usb的48Mhz) 设置工程路径和编译环境 打开工程 我们现在在main.c进行修改 /* USER CODE BEGIN Includes */ #include "usbd_hid.h" /* USER CODE END Includes */ /* USER CODE BEGI

利用STM32CubeMX来生成USB_HID_host工程

修改时钟(备注这边使用25mhz的主晶振) 选择debug_level等级为3

试用bus hound来分析STM32CubeMX来生成USB_HID_Mouse工程

1 Bus Hound 6.01 capture on Windows Vista Service Pack 1 (x64). Complements of www.perisoft.net 2 3 STM32_HID_mouse 4 5 Device - Device ID (followed by the endpoint for USB devices) 6 (16) USB 2.0 集线器 7 (19) USB 输入设备 8 (21) HID-compliant device 9 (23

利用STM32CubeMX之SPI

现在我们继续使用STM32CubeMX来生成SPI工程.我们的硬件平台还是我们熟悉的STM32F103C8开发板. 设置时钟树中的配置 现在打开SPI的设置 如果想修改管脚的名字可以红色框中进行修改,修改后在生成代码将其来宏定义 现在来看看我们生成工程中代码 在 stm32f1xx_hal_spi.h中可以看到spi的操作函数.分别对应轮询,中断和DMA三种控制方式.我将先介绍轮询方式. HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *

使用STM32CubeMX生成RTC工程[闹钟中断2]

在上次使用STM32CubeMX生成RTC工程[闹钟中断]基础上实现周期间隔的闹钟 一些场合需要周期性的闹钟 现在为了方便设置每十秒来一次. 备注: 当然可以直接修改HAL库static HAL_StatusTypeDef RTC_WriteAlarmCounter(RTC_HandleTypeDef* hrtc, uint32_t AlarmCounter)将这个开发出来,但是本着能不修改底层库就尽然不修改的原则.好了废话少说上代码: /** *************************

Sbt的使用初步和用sbt插件生成eclipse工程

以前一直是用maven去管理java项目,现在开始写scala项目了但是在scala-ide中去编译scala项目和sbt的区别一直没弄清楚受到文章:http://my.oschina.net/yjwxh/blog/601566的启发,查了相关的资料 sbt官网是http://www.scala-sbt.org/官网的文档对中文特别友好,有中文版本的,但是看了一遍感觉很难接受这么复杂的配置方法sbt是一种构建工具,在eclipse-ide中并没有集成下载安装msi之后,在默认路径出现了/bin和

利用Java动态生成 PDF 文档

利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那么目前最佳的解决方案,你可能会想到 iText ,对没错... iText+(Velocity / Freemarker)可以实现.不过据我熟悉,iText本身提供的HTML解析器还是不够强大,许多HTML标签和属性无法识别,更悲催的是简单的CSS它不认识,排版调整样式会让你头大的.不要失望,接下来

七色花基本权限系统(5)- 实体配置的使用和利用T4自动生成实体配置

在前面的章节里,用户表的结构非常简单,没有控制如何映射到数据库.通常,需要对字段的长度.是否可为空甚至特定数据类型进行设置,因为EntityFramework的默认映射规则相对而言比较简单和通用.在这篇日志里,将演示如何对数据实体进行映射配置,并利用T4模板自动创建映射配置类文件. 配置方式 EntityFramework的实体映射配置有2种. 第一种是直接在实体类中以特性的方式进行控制,这些特性有部分是EF实现的,也有部分是非EF实现的.也就是说,在数据实体层不引用EF的情况下,只能使用不全的