【iCore1S 双核心板_ARM】例程十五:USB_HID实验——双向数据传输
实验方法:
1、USB_HID协议免驱动,此例程不需要驱。
2、将跳线冒跳至USB_OTG,通过Micro USB 线将iCore1S USB-OTG接口与电脑相连。
3、打开上位机软件usb_hid.e,即可进行测试。
实验现象:

核心代码:
int main(void)
{ /* USER CODE BEGIN 1 */
int i;
unsigned char buffer[];
unsigned char send_buffer[];
static int counter;
RTC_DateTypeDef sDate;
RTC_TimeTypeDef sTime;
/* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init(); /* Configure the system clock */
SystemClock_Config(); /* Initialize all configured peripherals */
MX_GPIO_Init();
MX_RTC_Init();
MX_USB_DEVICE_Init();
SystemClock_Config(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Infinite loop */
/* USER CODE BEGIN WHILE */
while ()
{
/* USER CODE END WHILE */ /* USER CODE BEGIN 3 */
if(systick.second_flag == ){
systick.second_flag = ;
if(hUsbDeviceFS.dev_state == USBD_STATE_CONFIGURED){
if(counter ++ % ){
HAL_RTC_GetTime(&hrtc, &sTime, RTC_FORMAT_BIN);
HAL_RTC_GetDate(&hrtc, &sDate, RTC_FORMAT_BIN);
memset(send_buffer,,);
sprintf((char *)send_buffer,"time:%02d:%02d:%02d %02d-%02d-%02d",sTime.Hours,sTime.Minutes,sTime.Seconds,sDate.Year,sDate.Month,sDate.Date);
USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS,send_buffer,);
}else{
memset(send_buffer,,);
if(ARM_KEY_STATE == KEY_DOWN)
sprintf((char *)send_buffer,"key:KEY PRESS");
else
sprintf((char *)send_buffer,"key:");
USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS,send_buffer,);
}
}
}
if(usb_receive_flag == ){
usb_receive_flag = ;
memcpy(buffer,usb_receive_buffer,usb_receive_counter);
memset(usb_receive_buffer,,usb_receive_counter);
for(i = ;i < ;i++){
buffer[i] = tolower(buffer[i]);
}
command_process(buffer);
}
}
/* USER CODE END 3 */ }
实验方法及指导书:
链接:http://pan.baidu.com/s/1kUWEs8R 密码:4m2r

【iCore1S 双核心板_ARM】例程十五:USB_HID实验——双向数据传输的更多相关文章
- 【iCore3 双核心板】例程十五:USB_CDC实验——高速数据传输
实验指导书及代码包下载: http://pan.baidu.com/s/1gemYjz9 iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- 【iCore1S 双核心板_ARM】例程五:IWDG看门狗实验——复位ARM
实验原理: STM32内部包含独立看门狗,通过看门狗可以监控程序运行,程序错误 时,未在规定时间喂狗,自动复位ARM.本实验通过按键按下,停止喂狗, 制造程序运行 错误,从而产生复位 . 实验现象: ...
- 【iCore1S 双核心板_ARM】例程六:WWDG看门狗实验——复位ARM
实验原理: STM32内部包含窗口看门狗,通过看门狗可以监控程序运行,程序错误 时,未在规定时间喂狗,自动复位ARM.本实验通过按键按下,停止喂狗, 制造程序运行 错误,从而产生复位 . 实验现象: ...
- 【iCore1S 双核心板_ARM】例程七:通用定时器实验——定时点亮LED
实验原理: 通过STM32的三个GPIO口来驱动LED灯的三个通道:设定GPIO为推挽 输出模式,采用灌电流的方式与LED连接,输出高电平LED灭,输出低电平 LED亮,通过通用定时器TIM3实现50 ...
- 【iCore1S 双核心板_ARM】例程八:ADC实验——电源监控
实验原理: STM32内部集成三个12位ADC,iCore1S的所有电源经过 电阻分压或者直接接入STM32的ADC的输出通道内,输入电流 经过高端电流检测芯片ZXCT1009F输入到ADC的输入通道 ...
- 【iCore1S 双核心板_ARM】例程九:DAC实验——输出直流电压
实验原理: STM32内部集成12位DAC,可以配置成12位或8位,DAC具有两个独立转换通道, 在双DAC模式下,DA转换可被配置成独立模式或工作模式,iCore1S中DAC参考电压为 2.5V.本 ...
- 【iCore1S 双核心板_ARM】例程二十:UART_IAP_ARM实验——更新升级STM32
实验现象及操作说明: 1.本例程共有两个代码包,APP和IAP,IAP程序功能实现将APP程序升级至STM32中. 2.直接上电或烧写程序将执行升级的APP应用程序. BIN升级文件产生方法: 1.编 ...
- 【iCore1S 双核心板_ARM】例程十四:FATFS实验——读写文件
实验现象: 核心代码: int main(void) { /* USER CODE BEGIN 1 */ int i; int j; FIL file; FATFS fatfs; //Âß¼Çý¶¯ ...
- 【iCore1S 双核心板_ARM】例程十九:SD_IAP_ARM实验——更新升级STM32
实验现象及操作说明: 1.本例程共有两个代码包,APP和IAP,IAP程序功能实现将APP程序升级至STM32中. 2.直接上电或烧写程序将执行升级的APP应用程序. 3.按下按键上电或写程序将进行升 ...
随机推荐
- 附003.Docker Compose命令详解
一 Docker Compose命令格式 Usage: docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...] docker- ...
- Javascript中call,apply,bind的区别
一.探索call方法原理 Function.prototype.call = function(obj) { // 1.让fn中的this指向obj // eval(this.toString().r ...
- Progressive web app理念及发展前景
前一段时间微信推出微信小程序进行公测,着实火了一把,博得了大众的眼球,不明真相的吃瓜观众们纷纷围观,所谓的“微信小程序”,通俗的讲就是一种不需要下载安装即可使用的应用程序,脱离于app商店依托于浏览器 ...
- 2331: [SCOI2011]地板 插头DP
国际惯例的题面:十分显然的插头DP.由于R*C<=100,所以min(R,C)<=10,然后就可以愉悦地状压啦.我们用三进制状压,0表示没有插头,1表示有一个必须延伸至少一格且拐弯的插头, ...
- Flask的使用
一.路由系统 1.子域名的配置 """ 可传入的参数: @app.route('/user/<username>') @app.route('/post/&l ...
- 使用OClint进行iOS项目的静态代码扫描
使用OClint进行iOS项目的静态代码扫描 原文链接:http://blog.yourtion.com/static-code-analysis-ios-using-oclint.html 最近需要 ...
- Go语言之高级篇beego框架之请求数据处理
1.Controller中数据参数处理 获取参数:我们经常需要获取用户传递的数据,包括 Get.POST 等方式的请求,beego 里面会自动解析这些数据,你可以通过如下方式获取数据: GetStri ...
- Java Web开发总结(一)
1.如何解决 tomcat 中文乱码问题? 2.如果某个Servlet的映射路径仅仅为一个正斜杠(/),那么这个Servlet就成为当前Web应用程序的缺省Servlet. <!-- 将Serv ...
- jquery异步ajax与服务器通信过程中如何通过then方法链式传递多层数据
我们在有些地方可能需要对服务器返回的参数做多步处理,或者很多复杂的操作必须等到服务器返回结果之后才会执行,那么我们可以用链式调用的then方法让这里做到更加易于扩展,也更加容易分离出各个功能模块.基本 ...
- CentOS 安装 Hadoop 手记
Download & Install download hadoop from http://hadoop.apache.org/releases.html#Download downlo ...