23.10.2013, 17:52
|
#51
|
Гражданин KAZUS.RU
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
|
Re: Keil 5 QuickStart с STM32F415
С помощью визарда все таки получилось создать USB hid устройство....
Определяться системой все Ок. В приложении как законфигурировал устройство. Конфиг получен с помощью USB device viever. Но отослать и принять не чего не могу..... Sorce файл сгенерен тоже с помощью визарда.
Код ниже .
Код:
|
#define Led_Yel_On GPIOC-›BSRRL = GPIO_BSRR_BS_12
#define Led_Yel_Off GPIOC-›BSRRH = GPIO_BSRR_BS_12
#define Led_Red_On GPIOC-›BSRRL = GPIO_BSRR_BS_13
#define Led_Red_Off GPIOC-›BSRRH = GPIO_BSRR_BS_13
//! [code_USBD_User_HID]
#include "stm32f4xx.h"
#include "rl_usbd.h"
#include "usb_hid.h"
void USBD_HID0_Initialize (void) {
// ToDo: add code for initialization
}
void USBD_HID0_Uninitialize (void) {
// ToDo: add code for de-initialization
}
int32_t USBD_HID0_GetReport (uint8_t rtype, uint8_t req, uint8_t rid, uint8_t *buf) {
switch (rtype) {
case HID_REPORT_INPUT:
switch (rid) {
case 0:
switch (req) {
case USBD_HID_REQ_EP_CTRL: // Explicit USB Host request via Control OUT Endpoint
case USBD_HID_REQ_PERIOD_UPDATE: // Periodic USB Host request via Interrupt OUT Endpoint
// ToDo: update buffer for report data, example:
// buf[0] = 0; // Data Value = 0
// buf[1] = 5; // Data Value = 5
// return (2); // Data Size = 2 bytes
Led_Yel_On ;
break;
case USBD_HID_REQ_EP_INT: // Called after USBD_HID_GetReportTrigger to signal
// data obtained.
break;
}
break;
}
break;
case HID_REPORT_FEATURE:
break;
}
return (0);
}
bool USBD_HID0_SetReport (uint8_t rtype, uint8_t req, uint8_t rid, const uint8_t *buf, int32_t len)
{
switch (rtype) {
case HID_REPORT_OUTPUT:
Led_Red_On ;
/*
buf: Received Data
len: Received Data Length
*/
break;
case HID_REPORT_FEATURE:
break;
}
return true;
}
uint8_t buf[8];
int main(void)
{
SysTick_Config(SystemCoreClock / 1000);
RCC -›AHB1ENR |= RCC_AHB1ENR_GPIOCEN ;
GPIOC -›MODER|=
GPIO_MODER_MODER12_0 |
GPIO_MODER_MODER13_0
; //
GPIOC-›OSPEEDR |=
GPIO_OSPEEDER_OSPEEDR12_1 |
GPIO_OSPEEDER_OSPEEDR13_1
;
USBD_Initialize (0); // USB Device 0 Initialization
USBD_Connect (0); // USB Device 0 Connect
while(1)
{
buf[0] = 255;
USBD_HID_GetReportTrigger(0, 0, &buf[0], 1);
}
} |
Опять я что то упустил.... Не могу пока разобраться.
Заранее спасибо.
|
|
|
|
23.10.2013, 18:12
|
#52
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Keil 5 QuickStart с STM32F415
bass1981, Посмотри как это сделано в примерах борд от Keil
__________________
Осторожно , злой кот
|
|
|
|
23.10.2013, 18:58
|
#53
|
Гражданин KAZUS.RU
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
|
Re: Keil 5 QuickStart с STM32F415
Сообщение от dosikus
|
bass1981, Посмотри как это сделано в примерах борд от Keil
|
Вот пример для 103...
\Keil\ARM\Boards\Keil\MCBSTM32E\USBHID\
Код:
|
int main(void)
{
USB_Init(); /* USB Initialization */
USB_Connect(__TRUE); /* USB Connect */
while (1); /* Loop forever */
} |
Вот пример для 407
C:\Program Files (x86)\Micro\Keil\ARM\Boards\Keil\MCBSTM32F400\RL\U SB\Device\HID
Код:
|
usbd_init(); /* USB Device Initialization */
usbd_connect(__TRUE); /* USB Device Connect */
while (1) { /* Loop forever */
but = (U8)(KBD_GetKeys ());
if (but ^ but_ex) {
buf[0] = but;
usbd_hid_get_report_trigger(0, buf, 1);
but_ex = but;
} |
А я создал с помощью визарда как в хелпе.
file:///C:/Keil/ARM/PACK/Keil/MDK-Middleware/5.1.2/Doc/USB/html/_u_s_b__device.html#Creation_Steps
Вот пример из хелпа....
Код:
|
#include "cmsis_os.h"
#include "rl_usb.h"
#include "Keyboard.h"
int main (void) {
uint8_t but;
uint8_t buf[2];
Keyboard_Initialize();
USBD_Initialize (0); /* USB Device 0 Initialization */
USBD_Connect (0); /* USB Device 0 Connect */
USBD_Initialize (1); /* USB Device 1 Initialization */
USBD_Connect (1); /* USB Device 1 Connect */
while (1) { /* Loop forever */
but = (uint8_t)(Keyboard_GetKeys ());
if (((but ) ^ buf[0]) & 1) {
buf[0] = (but ) & 1;
USBD_HID_GetReportTrigger(0, 0, &buf[0], 1);
}
if (((but ›› 1) ^ buf[1]) & 3) {
buf[1] = (but ›› 1) & 3;
USBD_HID_GetReportTrigger(1, 0, &buf[1], 1);
}
osDelay(100); /* 100 ms delay for sampling buttons */
}
} |
Завтра 103 привезут и st-link будет думаю попроще. Но пока время есть хотелось бы запустить примерчик.
Заранее спасибо.
|
|
|
|
23.10.2013, 19:28
|
#54
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Keil 5 QuickStart с STM32F415
Сообщение от bass1981
|
Вот пример из хелпа....
|
В примере клавиатура. А выводы под кнопки конфигурировал?
И там еще одна пакость cmsis_os ...
__________________
Осторожно , злой кот
|
|
|
|
23.10.2013, 19:41
|
#55
|
Гражданин KAZUS.RU
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
|
Re: Keil 5 QuickStart с STM32F415
Сообщение от dosikus
|
В примере клавиатура. А выводы под кнопки конфигурировал?
И там еще одна пакость cmsis_os ...
|
Кнопки не конфигурировал за ненадобностью
Код:
|
while(1)
{
buf[0] = 255;
USBD_HID_GetReportTrigger(0, 0, &buf[0], 1);
} |
Законфигурировал как писал выше
file:///C:/Keil/ARM/PACK/Keil/MDK-Middleware/5.1.2/Doc/USB/html/_u_s_b__device.html#Creation_Steps
А потом добавил файл USBD_User_HID_0 таким способом
http://www.keil.com/support/man/docs...ourcefiles.htm
Должно пахать но увы
|
|
|
|
23.10.2013, 19:43
|
#56
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Keil 5 QuickStart с STM32F415
bass1981, Не понял тогда что ты ждешь ?
Пока не сменится слать не будет ...
__________________
Осторожно , злой кот
|
|
|
|
23.10.2013, 19:45
|
#57
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Keil 5 QuickStart с STM32F415
Сообщение от bass1981
|
од:
while(1)
{
buf[0] = 255;
USBD_HID_GetReportTrigger(0, 0, &buf[0], 1);
}
|
Вай не заметил , а если задержку сделать?
Я тестировал программой от MikroC - HID terminal , только не клаву . Работало норм.
__________________
Осторожно , злой кот
|
|
|
|
23.10.2013, 19:46
|
#58
|
Гражданин KAZUS.RU
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
|
Re: Keil 5 QuickStart с STM32F415
Сообщение от dosikus
|
bass1981, Не понял тогда что ты ждешь ?
Пока не сменится слать не будет ...
|
Пост №51 весь код который у меня в файле USBD_User_HID_0
Частичная вырезка...
Код:
|
while(1)
{
buf[0] = 255;
USBD_HID_GetReportTrigger(0, 0, &buf[0], 1);
} |
|
|
|
|
23.10.2013, 19:50
|
#59
|
Гражданин KAZUS.RU
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
|
Re: Keil 5 QuickStart с STM32F415
Сообщение от dosikus
|
Вай не заметил , а если задержку сделать?
Я тестировал программой от MikroC - HID terminal , только не клаву . Работало норм.
|
У меня есть софт который был предназначен для AVR .... Настроил девайс также в 51 посту вложение от USB device viever ......
Такая штуковина тоже не работает с ним....
C:\Keil\ARM\Utilities\HID_Client\Release\HIDClient .exe
Может что в репортах накосячил... Но USB device viever показывает такую же конфигурацию....
|
|
|
|
24.10.2013, 06:37
|
#60
|
Гражданин KAZUS.RU
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
|
Re: Keil 5 QuickStart с STM32F415
Думаю вот в чем дело:
Вот в этом (rid)
Желтая лампочка загорается , нет дебагера..(((
Код:
|
int32_t USBD_HID0_GetReport (uint8_t rtype, uint8_t req, uint8_t rid, uint8_t *buf) {
switch (rtype) {
case HID_REPORT_INPUT:
switch (rid) {
case 1:
Led_Yel_On ;
break;
case 0:
Led_Red_On ;
switch (req) {
case USBD_HID_REQ_EP_CTRL: // Explicit USB Host request via Control OUT Endpoint
case USBD_HID_REQ_PERIOD_UPDATE: // Periodic USB Host request via Interrupt OUT Endpoint
// ToDo: update buffer for report data, example:
// buf[0] = 0; // Data Value = 0
// buf[1] = 5; // Data Value = 5
// return (2); // Data Size = 2 bytes
Led_Yel_On ;
break;
case USBD_HID_REQ_EP_INT: // Called after USBD_HID_GetReportTrigger to signal
// data obtained.
break;
}
break;
}
break;
case HID_REPORT_FEATURE:
break;
}
return (0);
} |
А в файле конфигурации не дает поменять на 0. USBD_Config_HID_0.h
Код:
|
// ‹o.0..4›Number of Input Reports ‹1-32›
// ‹i›Configures max 'rid' value for USBD_HID0_GetReport and USBD_HID_GetReportTrigger
#define USBD_HID0_IN_REPORT_NUM 1
// ‹o.0..4›Number of Output Reports ‹1-32›
// ‹i›Configures max 'rid' value for USBD_HID0_SetReport
#define USBD_HID0_OUT_REPORT_NUM 1 |
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:27.
|
|