现在原来的基础上添加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 = ;
/* 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, );//<表示等待转换完成,第二个参数表示超时时间,单位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 = ;
USBD_HID_SendReport(&hUsbDeviceFS, (uint8_t*)&mouseHID, sizeof(struct mouseHID_t));
#endif
HAL_Delay();
}
/* 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

利用STM32CubeMX来生成USB_HID_Mouse工程【添加ADC】(1)的更多相关文章

  1. 利用STM32CubeMX来生成USB_HID_Mouse工程

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

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

    上回讲到怎么采集一路的adc的数据,这次我们来采集两路的数据. 现在直接修改原先的代码 /* Private variables ----------------------------------- ...

  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. 利用STM32CubeMX生成HID双向通讯工程

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

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

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

  9. VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)

    VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)-软件开发-鸡啄米 http://www.jizhuomi.com/software/141.html   上一讲中讲了VS20 ...

随机推荐

  1. ALGO-11_蓝桥杯_算法训练_瓷砖铺放(递归)

    问题描述 有一长度为N(<=N<=)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限.要将这个长度为N的地板铺满,一共有多少种不同的铺法? 例如,长度为4的地面一共有如下5 ...

  2. Svn过滤

    http://blog.csdn.net/hemingwang0902/article/details/6904205

  3. 部署Java Web项目到Heroku

    1.在Heroku上创建一个新的App 2. 创建成功后添加对MYSQL的支持,点击find more add-ons 3. 这里我选择的是 JawsDB Mysql 4.添加成功后我们可以查看数据库 ...

  4. Javascript中的原型、原型链(十)

    一.原型 每当创建一个函数时,函数就会包含一个prototype属性,这个属性其实相当于一个指针,指向调用该构造函数创建的对象原型. 这个对象原型里面有一个constructor属性,这个属性又指向构 ...

  5. springmvc学习(五)

    这次主要是记录一下 springmvc 关于异常处理 和 拦截的回顾 关于springmvc  异常处理:springmvc 提供了 HandlerExceptionResolver  异常处理解析接 ...

  6. 通过atomic_flag简单自旋锁实现简单说明标准库中锁使用的memory_order

    在使用标准库中的加锁机制时,例如我们使用std::mutex,写了如下的代码(下面的代码使用condition_variable可能更合适) std::mutex g_mtx; int g_resNu ...

  7. 笔记函数 - Ring0 Sleep()

    #define DELAY_ONE_MICROSECOND (-10) #define DELAY_ONE_MILLISEND (DELAY_ONE_MICROSECOND*1000) void Sl ...

  8. Linux系统安装(centos6.8)符破解码

    1.安装 VMware VMware 是一个虚拟 PC 的软件,可以在现有的操作系统上虚拟出一个新的硬件环境,相当于模拟出一台新的 PC,我们可以在上面构造出一个或多个别的系统,以此来实现在一台机器上 ...

  9. VI使用手册(常见命令)

    VI使用手册 模式切换 i键开始进入编辑模式,Esc进入一般模式,保存退出:wq,不保存退出q,强制退出q! 如何定位到行文档首位,行首位? gg或者1G命令将光标移动到文档开头G命令将光标移动到文档 ...

  10. 字符串格式化format使用

    顺序传参 '{}....{}'.format(value1, value2) 索引传参 '{0}....{1}'.format(value1, value2) 关键字传参 '{k1}....{k2}' ...