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

现在直接修改原先的代码

/* Private variables ---------------------------------------------------------*/
uint16_t AD_Value_Buf[];
uint16_t AD_X_Value = ;
uint16_t AD_Y_Value = ;
/* USER CODE END PV */
/* USER CODE BEGIN 3 */
for(uint8_t i=;i<;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, );//<表示等待转换完成,第二个参数表示超时时间,单位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 = ;
mouseHID.x = ;
mouseHID.y = ;
mouseHID.wheel = ;
    AD_X_Value = AD_Value_Buf[];
AD_Y_Value = AD_Value_Buf[];
  #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
mouseHID.y = AD_Value_map(AD_Y_Value,,,,-);//从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 */

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

  1. 利用STM32CubeMX来生成USB_HID_Mouse工程【添加ADC】(1)

    现在原来的基础上添加ADC的功能. 现在(利用STM32CubeMX来生成USB_HID_Mouse工程)基础上新增硬件 JoyStick Shield 游戏摇杆扩展板 与STM32F103C8的连接 ...

  2. 利用STM32CubeMX来生成USB_HID_Mouse工程

    硬件开发板:STM32F103C8 软件平台 好了现在开始利用STM32CubeMX来生成我们的工程 1.新建工程 选择MCU的型号 选择选择时钟 开启usb的模块 选择USB的类 配置时钟树(主要是 ...

  3. 利用STM32CubeMX来生成USB_HID_host工程

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

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

    Bus Hound (x64). Complements of www.perisoft.net STM32_HID_mouse Device - Device ID (followed by the ...

  5. 使用STM32CubeMX生成USB_HOST_HID工程[添加对CAPS_LOCK指示灯的控制][SetReport]

    在之前(使用STM32CubeMX生成USB_HOST_HID工程)的基础上进行修改 在结合之前在pc上的测试 USB之HID类Set_Report Request[调试手记1] 测试代码如下: /* ...

  6. 利用STM32CubeMX之SPI

    现在我们继续使用STM32CubeMX来生成SPI工程.我们的硬件平台还是我们熟悉的STM32F103C8开发板. 设置时钟树中的配置 现在打开SPI的设置 如果想修改管脚的名字可以红色框中进行修改, ...

  7. STM32 ADC多通道转换DMA模式与非DMA模式两种方法(HAL库)

    一.非DMA模式(转) 说明:这个是自己刚做的时候百度出来的,不是我自己做出来的,因为感觉有用就保存下来做学习用,原文链接:https://blog.csdn.net/qq_24815615/arti ...

  8. 利用STM32CubeMX生成HID双向通讯工程

    使用开发板为正点原子ministm32 现在我们先使用HID descriptor Tool来生成我们需要的hid的 保存使用选择.H // D:\usb资料\HID\MSDEV\Projects\t ...

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

    在上次使用STM32CubeMX生成RTC工程[闹钟中断]基础上实现周期间隔的闹钟 一些场合需要周期性的闹钟 现在为了方便设置每十秒来一次. 备注: 当然可以直接修改HAL库static HAL_St ...

随机推荐

  1. Asp.net core (学习笔记 路由和语言 route & language)

    https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-2.1 https://doc ...

  2. 了解FPGA市场现状和未来趋势

    转, 来源: http://www.sohu.com/a/204640373_740053 可编程的“万能芯片” FPGA——现场可编程门阵列,是指一切通过软件手段更改.配置器件内部连接结构和逻辑单元 ...

  3. Swapping Characters CodeForces - 903E (字符串模拟)

    大意: 给定k个字符串, 长度均为n, 求是否存在一个串S, 使得k个字符串都可以由S恰好交换两个字符得到. 暴力枚举交换的两个字符的位置, 计算出交换后与其他串不同字符的个数, 若为1或>2显 ...

  4. ProtoBuf3.3 安装记录

    翻了很多教程,下载了 PB 的源码在自己的 mac 上编译及安装,记录下新的 1. 首先是下载源码了 https://github.com/google/protobuf/releases 虽然是 g ...

  5. 安装tifffile

    python的opencv和PIL不能很好地处理tiff图像,所以我就转用tifffile 但是tifffile也装了很近,因为我是远控别人的电脑,所以看不太清报错,就自己瞎猜,不过还是装好了 首先去 ...

  6. html5(三)

    body{ text-align:center;} #mainbox { display:block; width:500px; margin:50px auto; padding:15px; tex ...

  7. LoadRunner遇到的错误及解决方法

    1.返回的报文太长: intweb_set_max_html_param_len(const char * length); intweb_set_max_html_param_len(") ...

  8. Vue-- 监听路由变化,数据无法更新?

    之前写的Vue项目,有个问题困扰了好久.新闻板块有推荐.精华.最新等几个Tab,设想通过切换Tab,改变路由参数(get/news/:tab)去获取对应数据,然后渲染到页面(用的是同一套组件),问题来 ...

  9. python中如何删除列表中的所有元素

    今天写代码的时候遇到一个小问题,Python中要删除列表中的所有元素.Python本身就提供了pop.remove.del这些删除的函数.我想着用循环实现,结果很麻烦.几番周折上了stackoverf ...

  10. MySQL:数据查询

    数据查询 一.基本查询语句 1.语法:写一行 select{*<字段列表>}//查询的字段,多个字段用逗号分开 from<表1>,<表2>…//数据表名 {//可选 ...