/*
**********************************************************************
*name: stmusb_test.c
*author: Samuel Igwe
*date: 08/12/2013
*description: stm32 usb test code.
**********************************************************************
*/
#include "IE_stm32.h"
#include "IE_tclib.h"
/*#include "usb_test.h"*/
/*
**********************************************************************
*mappings
*PA0 = external wire jumpered to usb d+
**********************************************************************
*/
#define USB_TEST_GPIO_PIN_USB STM32_GPIO_PIN_USB
#define USB_TEST_GPIO_PIN_DELAY 5000
#define USB_TEST_GPIO_PIN_CONNECT_CHAR 'c'
#define USB_TEST_GPIO_PIN_DISCONNECT_CHAR 'd'
/*
**********************************************************************
*macros
**********************************************************************
*/
void usb_test_user_connect(void);
#define STMUSB_SHOW_TIME(ptrString) \
{ \
stmlib_printf("%x\t", stm32_get_seconds);\
stmlib_printf("%s\n", ptrString); \
}
/*
**********************************************************************
*description: main() function
* this is where it all happens
**********************************************************************
*/
int main()
{
/*
**********************************************************************
*stm32_init() initialization ... must be called first
*stm32_usb_init() initialization
**********************************************************************
*/
stm32_init();
stm32_usb_init();
stm32_systick_hook_services(usb_test_user_connect);
stm32_usb_disconnect_pullup(USB_TEST_GPIO_PIN_USB);
stm32_timer_uS_delay(250000);
stm32_usb_connect_pullup(USB_TEST_GPIO_PIN_USB);
/*
**********************************************************************
*now loop forever
**********************************************************************
*/
while(1)
;
return 0;
}
/*
**********************************************************************
*description: used to check for rx value 'c'|'C' which is a trigger
* to call stm32_usb_connect_pullup()
*inputs: none
**********************************************************************
*/
void usb_test_user_connect(void)
{
volatile unsigned int wdTemp;
/*
**********************************************************************
*check the uart rx read status
*retrieve the data
**********************************************************************
*/
wdTemp = (*PTR_STM32_UART1_SR);
if((wdTemp & STM32_UART_SR_RXNE) != STM32_UART_SR_RXNE)
return;
wdTemp = (*PTR_STM32_UART1_DR);
wdTemp &= 0x1ff;
switch(wdTemp)
{
case USB_TEST_GPIO_PIN_CONNECT_CHAR:
{
tclib_printf("-------user-usb-connect----request------\n", 0);
stm32_usb_connect_pullup(USB_TEST_GPIO_PIN_USB);
break;
}
case USB_TEST_GPIO_PIN_DISCONNECT_CHAR:
{
tclib_printf("-------user-usb-disconnect-request------\n", 0);
stm32_usb_disconnect_pullup(USB_TEST_GPIO_PIN_USB);
break;
}
default:
break;
}
}
Wednesday, August 28, 2013
usb_test.c
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment