Corrected led io for lisa/m v1.1 cleaned up some whitespace. Trying to get it to work...

This commit is contained in:
Piotr Esden-Tempski
2011-10-04 23:53:16 -07:00
parent 03a4a18ed6
commit 9e4522ad21

View File

@@ -2,6 +2,7 @@
* This file is part of the libopencm3 project. * This file is part of the libopencm3 project.
* *
* Copyright (C) 2010 Gareth McMullin <gareth@blacksphere.co.nz> * Copyright (C) 2010 Gareth McMullin <gareth@blacksphere.co.nz>
* Copyright (C) 2011 Piotr Esden-Tempski <piotr@esden.net>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@@ -33,20 +34,20 @@
#endif #endif
const struct usb_device_descriptor dev = { const struct usb_device_descriptor dev = {
.bLength = USB_DT_DEVICE_SIZE, .bLength = USB_DT_DEVICE_SIZE,
.bDescriptorType = USB_DT_DEVICE, .bDescriptorType = USB_DT_DEVICE,
.bcdUSB = 0x0200, .bcdUSB = 0x0200,
.bDeviceClass = 0, .bDeviceClass = 0,
.bDeviceSubClass = 0, .bDeviceSubClass = 0,
.bDeviceProtocol = 0, .bDeviceProtocol = 0,
.bMaxPacketSize0 = 64, .bMaxPacketSize0 = 64,
.idVendor = 0x0483, .idVendor = 0x0483,
.idProduct = 0x5710, .idProduct = 0x5710,
.bcdDevice = 0x0200, .bcdDevice = 0x0200,
.iManufacturer = 1, .iManufacturer = 1,
.iProduct = 2, .iProduct = 2,
.iSerialNumber = 3, .iSerialNumber = 3,
.bNumConfigurations = 1, .bNumConfigurations = 1,
}; };
/* I have no idea what this means. I haven't read the HID spec. */ /* I have no idea what this means. I haven't read the HID spec. */
@@ -174,10 +175,10 @@ static int hid_control_request(struct usb_setup_data *req, u8 **buf, u16 *len,
{ {
(void)complete; (void)complete;
if((req->bmRequestType != 0x81) || if((req->bmRequestType != 0x81) ||
(req->bRequest != USB_REQ_GET_DESCRIPTOR) || (req->bRequest != USB_REQ_GET_DESCRIPTOR) ||
(req->wValue != 0x2200)) (req->wValue != 0x2200))
return 0; return 0;
/* Handle the HID report descriptor */ /* Handle the HID report descriptor */
*buf = (u8*)hid_report_descriptor; *buf = (u8*)hid_report_descriptor;
@@ -192,7 +193,7 @@ static void dfu_detach_complete(struct usb_setup_data *req)
(void)req; (void)req;
gpio_set_mode(GPIOA, GPIO_MODE_INPUT, 0, GPIO15); gpio_set_mode(GPIOA, GPIO_MODE_INPUT, 0, GPIO15);
gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_2_MHZ, gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_2_MHZ,
GPIO_CNF_OUTPUT_PUSHPULL, GPIO10); GPIO_CNF_OUTPUT_PUSHPULL, GPIO10);
gpio_set(GPIOA, GPIO10); gpio_set(GPIOA, GPIO10);
scb_reset_core(); scb_reset_core();
@@ -201,10 +202,10 @@ static void dfu_detach_complete(struct usb_setup_data *req)
static int dfu_control_request(struct usb_setup_data *req, u8 **buf, u16 *len, static int dfu_control_request(struct usb_setup_data *req, u8 **buf, u16 *len,
void (**complete)(struct usb_setup_data *req)) void (**complete)(struct usb_setup_data *req))
{ {
(void)buf; (void)buf;
(void)len; (void)len;
if((req->bmRequestType != 0x21) || (req->bRequest != DFU_DETACH)) if((req->bmRequestType != 0x21) || (req->bRequest != DFU_DETACH))
return 0; /* Only accept class request */ return 0; /* Only accept class request */
*complete = dfu_detach_complete; *complete = dfu_detach_complete;
@@ -230,7 +231,7 @@ static void hid_set_config(u16 wValue)
dfu_control_request); dfu_control_request);
#endif #endif
systick_set_clocksource(STK_CTRL_CLKSOURCE_AHB_DIV8); systick_set_clocksource(STK_CTRL_CLKSOURCE_AHB_DIV8);
systick_set_reload(100000); systick_set_reload(100000);
systick_interrupt_enable(); systick_interrupt_enable();
systick_counter_enable(); systick_counter_enable();
@@ -238,41 +239,44 @@ static void hid_set_config(u16 wValue)
int main(void) int main(void)
{ {
rcc_clock_setup_in_hsi_out_48mhz(); int usb_connect_blink = 0;
rcc_clock_setup_in_hsi_out_48mhz();
rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPAEN); rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPAEN);
rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPCEN); rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPCEN);
/* USB_DETECT as input */ /* USB_DETECT as input */
gpio_set_mode(GPIOA, GPIO_MODE_INPUT, gpio_set_mode(GPIOA, GPIO_MODE_INPUT,
GPIO_CNF_INPUT_FLOAT, GPIO8); GPIO_CNF_INPUT_FLOAT, GPIO8);
/* disconnect USB_DISC, as output */ /* disconnect USB_DISC, as output */
gpio_set(GPIOC, GPIO15); gpio_set(GPIOC, GPIO15);
gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_2_MHZ, gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_2_MHZ,
GPIO_CNF_OUTPUT_PUSHPULL, GPIO15); GPIO_CNF_OUTPUT_PUSHPULL, GPIO15);
/* green LED off, as output */ /* green LED off, as output */
gpio_clear(GPIOC, GPIO13); gpio_set(GPIOC, GPIO2);
gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_2_MHZ, gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_2_MHZ,
GPIO_CNF_OUTPUT_PUSHPULL, GPIO13); GPIO_CNF_OUTPUT_PUSHPULL, GPIO2);
usbd_init(&stm32f103_usb_driver, &dev, &config, usb_strings); usbd_init(&stm32f107_usb_driver, &dev, &config, usb_strings);
usbd_register_set_config_callback(hid_set_config); usbd_register_set_config_callback(hid_set_config);
/* delay some seconds to show that pull-up switch works */ /* delay some seconds to show that pull-up switch works */
{int i; for (i=0;i<0x800000;i++);} {int i; for (i=0;i<0x800000;i++) asm("nop");}
/* wait for USB Vbus */ /* wait for USB Vbus */
while(gpio_get(GPIOA, GPIO8) == 0); while(gpio_get(GPIOA, GPIO8) == 0) asm("nop");
/* green LED on, connect USB */ /* green LED on, connect USB */
gpio_set(GPIOC, GPIO13); gpio_clear(GPIOC, GPIO2);
gpio_clear(GPIOC, GPIO15); gpio_set_mode(GPIOC, GPIO_MODE_INPUT,
GPIO_CNF_INPUT_FLOAT, GPIO15);
//gpio_clear(GPIOC, GPIO15);
while (1) while (1)
usbd_poll(); usbd_poll();
} }