git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@4594 35acf78f-673a-0410-8e92-d51de3d6d3f4

master
gdisirio 2012-08-20 15:31:48 +00:00
parent 69fcaa5f97
commit 34310e401f
6 changed files with 79 additions and 44 deletions

View File

@ -88,6 +88,14 @@
#define USB_CDC_DATA_REQUEST_EP 1
#endif
/**
* @brief Endpoint number for bulk OUT.
*/
#if !defined(USB_CDC_DATA_AVAILABLE_EP) || defined(__DOXYGEN__)
#define USB_CDC_DATA_AVAILABLE_EP 1
#endif
/** @} */
/**
* @brief Endpoint number for interrupt IN.
*/
@ -95,14 +103,6 @@
#define USB_CDC_INTERRUPT_REQUEST_EP 2
#endif
/**
* @brief Endpoint number for bulk OUT.
*/
#if !defined(USB_CDC_DATA_AVAILABLE_EP) || defined(__DOXYGEN__)
#define USB_CDC_DATA_AVAILABLE_EP 3
#endif
/** @} */
/*===========================================================================*/
/* Derived constants and error checks. */
/*===========================================================================*/

View File

@ -0,0 +1,26 @@
*****************************************************************************
** ChibiOS/RT HAL - USB-CDC driver demo for STM32. **
*****************************************************************************
** TARGET **
The demo runs on an Olimex STM32-P103 board.
** The Demo **
The application demonstrates the use of the STM32 USB driver.
** Build Procedure **
The demo has been tested using the free Codesourcery GCC-based toolchain
and YAGARTO.
Just modify the TRGT line in the makefile in order to use different GCC ports.
** Notes **
Some files used by the demo are not part of ChibiOS/RT but are copyright of
ST Microelectronics and are licensed under a different license.
Also note that not all the files present in the ST library are distributed
with ChibiOS/RT, you can find the whole library on the ST web site:
http://www.st.com

View File

@ -65,7 +65,7 @@ PROJECT = ch
# Imported source files and paths
CHIBIOS = ../../..
include $(CHIBIOS)/boards/ST_STM32F4_DISCOVERY/board.mk
include $(CHIBIOS)/boards/OLIMEX_STM32_E407/board.mk
include $(CHIBIOS)/os/hal/platforms/STM32F4xx/platform.mk
include $(CHIBIOS)/os/hal/hal.mk
include $(CHIBIOS)/os/ports/GCC/ARMCMx/STM32F4xx/port.mk

View File

@ -231,17 +231,22 @@ static const USBDescriptor *get_descriptor(USBDriver *usbp,
static USBInEndpointState ep1instate;
/**
* @brief EP1 initialization structure (IN only).
* @brief OUT EP1 state.
*/
static USBOutEndpointState ep1outstate;
/**
* @brief EP1 initialization structure (both IN and OUT).
*/
static const USBEndpointConfig ep1config = {
USB_EP_MODE_TYPE_BULK,
NULL,
sduDataTransmitted,
NULL,
sduDataReceived,
0x0040,
0x0040,
0x0000,
&ep1instate,
NULL,
&ep1outstate,
2,
NULL
};
@ -249,7 +254,7 @@ static const USBEndpointConfig ep1config = {
/**
* @brief IN EP2 state.
*/
USBInEndpointState ep2instate;
static USBInEndpointState ep2instate;
/**
* @brief EP2 initialization structure (IN only).
@ -267,27 +272,6 @@ static const USBEndpointConfig ep2config = {
NULL
};
/**
* @brief OUT EP2 state.
*/
USBOutEndpointState ep3outstate;
/**
* @brief EP3 initialization structure (OUT only).
*/
static const USBEndpointConfig ep3config = {
USB_EP_MODE_TYPE_BULK,
NULL,
NULL,
sduDataReceived,
0x0000,
0x0040,
NULL,
&ep3outstate,
0,
NULL
};
/*
* Handles the USB driver global events.
*/
@ -306,7 +290,6 @@ static void usb_event(USBDriver *usbp, usbevent_t event) {
must be used.*/
usbInitEndpointI(usbp, USB_CDC_DATA_REQUEST_EP, &ep1config);
usbInitEndpointI(usbp, USB_CDC_INTERRUPT_REQUEST_EP, &ep2config);
usbInitEndpointI(usbp, USB_CDC_DATA_AVAILABLE_EP, &ep3config);
/* Resetting the state of the CDC subsystem.*/
sduConfigureHookI(usbp);
@ -337,7 +320,7 @@ static const USBConfig usbcfg = {
* Serial over USB driver configuration.
*/
static const SerialUSBConfig serusbcfg = {
&USBD1
&USBD2
};
/*===========================================================================*/
@ -425,9 +408,9 @@ static void cmd_write(BaseSequentialStream *chp, int argc, char *argv[]) {
while (chnGetTimeout((BaseChannel *)chp, TIME_IMMEDIATE) == Q_TIMEOUT) {
chSequentialStreamWrite(&SDU1, buf, sizeof buf - 1);
palTogglePad(GPIOD, GPIOD_LED4);
// palTogglePad(GPIOD, GPIOD_LED4);
}
palClearPad(GPIOD, GPIOD_LED4);
// palClearPad(GPIOD, GPIOD_LED4);
chprintf(chp, "\r\n\nstopped\r\n");
}
@ -459,10 +442,10 @@ static msg_t Thread1(void *arg) {
while (TRUE) {
systime_t time;
time = USBD1.state == USB_ACTIVE ? 250 : 500;
palClearPad(GPIOD, GPIOD_LED6);
time = serusbcfg.usbp->state == USB_ACTIVE ? 250 : 500;
palClearPad(GPIOC, GPIOC_LED);
chThdSleepMilliseconds(time);
palSetPad(GPIOD, GPIOD_LED6);
palSetPad(GPIOC, GPIOC_LED);
chThdSleepMilliseconds(time);
}
}
@ -496,7 +479,7 @@ int main(void) {
*/
usbDisconnectBus(serusbcfg.usbp);
chThdSleepMilliseconds(1000);
usbStart(&USBD1, &usbcfg);
usbStart(serusbcfg.usbp, &usbcfg);
usbConnectBus(serusbcfg.usbp);
/*

View File

@ -43,7 +43,7 @@
#define STM32_CLOCK48_REQUIRED TRUE
#define STM32_SW STM32_SW_PLL
#define STM32_PLLSRC STM32_PLLSRC_HSE
#define STM32_PLLM_VALUE 8
#define STM32_PLLM_VALUE 12
#define STM32_PLLN_VALUE 336
#define STM32_PLLP_VALUE 2
#define STM32_PLLQ_VALUE 7

View File

@ -0,0 +1,26 @@
*****************************************************************************
** ChibiOS/RT HAL - USB-CDC driver demo for STM32. **
*****************************************************************************
** TARGET **
The demo runs on an Olimex STM32-E407 board.
** The Demo **
The application demonstrates the use of the STM32 USB driver.
** Build Procedure **
The demo has been tested using the free Codesourcery GCC-based toolchain
and YAGARTO.
Just modify the TRGT line in the makefile in order to use different GCC ports.
** Notes **
Some files used by the demo are not part of ChibiOS/RT but are copyright of
ST Microelectronics and are licensed under a different license.
Also note that not all the files present in the ST library are distributed
with ChibiOS/RT, you can find the whole library on the ST web site:
http://www.st.com