Lancaster University's (short term!) clone of mbed-src for micro:bit. This is a copy of the github branch https://github.com/lancaster-university/mbed-classic

Fork of mbed-src by mbed official

Committer:
mbed_official
Date:
Wed Jul 08 07:45:08 2015 +0100
Revision:
584:7c5a5136e412
Parent:
395:bfce16e86ea4
Synchronized with git revision a15892332f7dfbf7685582956fd7fa377aaddb51

Full URL: https://github.com/mbedmicro/mbed/commit/a15892332f7dfbf7685582956fd7fa377aaddb51/

Update mbed_overrides.c

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 147:39a1839cac63 1 /* mbed Microcontroller Library
mbed_official 147:39a1839cac63 2 * Copyright (c) 2006-2013 ARM Limited
mbed_official 147:39a1839cac63 3 *
mbed_official 147:39a1839cac63 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbed_official 147:39a1839cac63 5 * you may not use this file except in compliance with the License.
mbed_official 147:39a1839cac63 6 * You may obtain a copy of the License at
mbed_official 147:39a1839cac63 7 *
mbed_official 147:39a1839cac63 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 147:39a1839cac63 9 *
mbed_official 147:39a1839cac63 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 147:39a1839cac63 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbed_official 147:39a1839cac63 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 147:39a1839cac63 13 * See the License for the specific language governing permissions and
mbed_official 147:39a1839cac63 14 * limitations under the License.
mbed_official 147:39a1839cac63 15 */
mbed_official 147:39a1839cac63 16 #include "gpio_api.h"
mbed_official 147:39a1839cac63 17
mbed_official 584:7c5a5136e412 18 #define CRC16
mbed_official 584:7c5a5136e412 19 #include "crc.h"
mbed_official 584:7c5a5136e412 20
mbed_official 147:39a1839cac63 21 // called before main - implement here if board needs it ortherwise, let
mbed_official 147:39a1839cac63 22 // the application override this if necessary
mbed_official 147:39a1839cac63 23 //void mbed_sdk_init()
mbed_official 147:39a1839cac63 24 //{
mbed_official 147:39a1839cac63 25 //
mbed_official 147:39a1839cac63 26 //}
mbed_official 147:39a1839cac63 27
mbed_official 147:39a1839cac63 28 // Change the NMI pin to an input. This allows NMI pin to
mbed_official 147:39a1839cac63 29 // be used as a low power mode wakeup. The application will
mbed_official 147:39a1839cac63 30 // need to change the pin back to NMI_b or wakeup only occurs once!
mbed_official 147:39a1839cac63 31 void NMI_Handler(void)
mbed_official 147:39a1839cac63 32 {
mbed_official 147:39a1839cac63 33 gpio_t gpio;
mbed_official 147:39a1839cac63 34 gpio_init_in(&gpio, PTA4);
mbed_official 147:39a1839cac63 35 }
mbed_official 349:c3cf33937977 36
mbed_official 349:c3cf33937977 37 // Provide ethernet devices with a semi-unique MAC address from the UUID
mbed_official 349:c3cf33937977 38 void mbed_mac_address(char *mac)
mbed_official 349:c3cf33937977 39 {
mbed_official 584:7c5a5136e412 40
mbed_official 584:7c5a5136e412 41 unsigned int UUID_LOC_BASE = 0x40048054; // First adddress of the 4-word UUID
mbed_official 584:7c5a5136e412 42 char uuid[16]; // So we can take a local copy of the UUID
mbed_official 584:7c5a5136e412 43 uint32_t MAC[3]; // 3 16 bits words for the MAC
mbed_official 584:7c5a5136e412 44
mbed_official 584:7c5a5136e412 45 // copy the UUID to the variable MAC[]
mbed_official 584:7c5a5136e412 46 memcpy(uuid,(const void*)UUID_LOC_BASE,sizeof(uuid));
mbed_official 584:7c5a5136e412 47
mbed_official 584:7c5a5136e412 48 // generate three CRC16's using different slices of the UUID
mbed_official 584:7c5a5136e412 49 MAC[0] = crcSlow(uuid, 8); // most significant half-word
mbed_official 584:7c5a5136e412 50 MAC[1] = crcSlow(uuid, 12);
mbed_official 584:7c5a5136e412 51 MAC[2] = crcSlow(uuid, 16); // least significant half word
mbed_official 584:7c5a5136e412 52
mbed_official 584:7c5a5136e412 53 // The network stack expects an array of 6 bytes
mbed_official 584:7c5a5136e412 54 // so we copy, and shift and copy from the half-word array to the byte array
mbed_official 584:7c5a5136e412 55 mac[0] = MAC[0] >> 8;
mbed_official 584:7c5a5136e412 56 mac[1] = MAC[0];
mbed_official 584:7c5a5136e412 57 mac[2] = MAC[1] >> 8;
mbed_official 584:7c5a5136e412 58 mac[3] = MAC[1];
mbed_official 584:7c5a5136e412 59 mac[4] = MAC[2] >> 8;
mbed_official 584:7c5a5136e412 60 mac[5] = MAC[2];
mbed_official 584:7c5a5136e412 61
mbed_official 584:7c5a5136e412 62 // We want to force bits [1:0] of the most significant byte [0]
mbed_official 584:7c5a5136e412 63 // to be "10"
mbed_official 349:c3cf33937977 64 // http://en.wikipedia.org/wiki/MAC_address
mbed_official 584:7c5a5136e412 65
mbed_official 584:7c5a5136e412 66 mac[0] |= 0x02; // force bit 1 to a "1" = "Locally Administered"
mbed_official 584:7c5a5136e412 67 mac[0] &= 0xFE; // force bit 0 to a "0" = Unicast
mbed_official 584:7c5a5136e412 68
mbed_official 349:c3cf33937977 69 }
mbed_official 584:7c5a5136e412 70
mbed_official 584:7c5a5136e412 71
mbed_official 584:7c5a5136e412 72