added prescaler for 16 bit pwm in LPC1347 target

Fork of mbed-dev by mbed official

Committer:
JojoS
Date:
Sat Sep 10 15:32:04 2016 +0000
Revision:
147:ba84b7dc41a7
Parent:
107:414e9c822e99
added prescaler for 16 bit timers (solution as in LPC11xx), default prescaler 31 for max 28 ms period time

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 107:414e9c822e99 1 /* mbed Microcontroller Library
mbed_official 107:414e9c822e99 2 * Copyright (c) 2006-2015 ARM Limited
mbed_official 107:414e9c822e99 3 *
mbed_official 107:414e9c822e99 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbed_official 107:414e9c822e99 5 * you may not use this file except in compliance with the License.
mbed_official 107:414e9c822e99 6 * You may obtain a copy of the License at
mbed_official 107:414e9c822e99 7 *
mbed_official 107:414e9c822e99 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 107:414e9c822e99 9 *
mbed_official 107:414e9c822e99 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 107:414e9c822e99 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbed_official 107:414e9c822e99 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 107:414e9c822e99 13 * See the License for the specific language governing permissions and
mbed_official 107:414e9c822e99 14 * limitations under the License.
mbed_official 107:414e9c822e99 15 */
mbed_official 107:414e9c822e99 16 #include "mbed_assert.h"
mbed_official 107:414e9c822e99 17 #include "PinNames.h"
mbed_official 107:414e9c822e99 18 #include "gpio_object.h"
mbed_official 107:414e9c822e99 19 #include "gpio_api.h"
mbed_official 107:414e9c822e99 20 #include "compiler.h"
mbed_official 107:414e9c822e99 21 #include "ioport.h"
mbed_official 107:414e9c822e99 22
mbed_official 107:414e9c822e99 23 extern uint8_t g_sys_init;
mbed_official 107:414e9c822e99 24
mbed_official 107:414e9c822e99 25 uint32_t gpio_set(PinName pin)
mbed_official 107:414e9c822e99 26 {
mbed_official 107:414e9c822e99 27 MBED_ASSERT(pin != (PinName)NC);
mbed_official 107:414e9c822e99 28 return (1UL << (pin % 32));
mbed_official 107:414e9c822e99 29 }
mbed_official 107:414e9c822e99 30
mbed_official 107:414e9c822e99 31 void gpio_init(gpio_t *obj, PinName pin)
mbed_official 107:414e9c822e99 32 {
mbed_official 107:414e9c822e99 33 MBED_ASSERT(pin != (PinName)NC);
mbed_official 107:414e9c822e99 34 if (g_sys_init == 0) {
mbed_official 107:414e9c822e99 35 sysclk_init();
mbed_official 107:414e9c822e99 36 system_board_init();
mbed_official 107:414e9c822e99 37 g_sys_init = 1;
mbed_official 107:414e9c822e99 38 }
mbed_official 107:414e9c822e99 39 obj->pin = pin;
mbed_official 107:414e9c822e99 40
mbed_official 107:414e9c822e99 41 ioport_set_pin_dir(pin, IOPORT_DIR_INPUT);
mbed_official 107:414e9c822e99 42 ioport_set_pin_mode(pin, IOPORT_MODE_PULLUP);
mbed_official 107:414e9c822e99 43 }
mbed_official 107:414e9c822e99 44
mbed_official 107:414e9c822e99 45 void gpio_mode(gpio_t *obj, PinMode mode)
mbed_official 107:414e9c822e99 46 {
mbed_official 107:414e9c822e99 47 MBED_ASSERT(obj->pin != (PinName)NC);
mbed_official 107:414e9c822e99 48 obj->mode = mode;
mbed_official 107:414e9c822e99 49 switch (mode) {
mbed_official 107:414e9c822e99 50 case PullNone :
mbed_official 107:414e9c822e99 51 ioport_set_pin_mode(obj->pin, IOPORT_MODE_OPEN_DRAIN);
mbed_official 107:414e9c822e99 52 break;
mbed_official 107:414e9c822e99 53 case PullUp:
mbed_official 107:414e9c822e99 54 ioport_set_pin_mode(obj->pin, IOPORT_MODE_PULLUP);
mbed_official 107:414e9c822e99 55 break;
mbed_official 107:414e9c822e99 56 case PullDown:
mbed_official 107:414e9c822e99 57 ioport_set_pin_mode(obj->pin, IOPORT_MODE_PULLDOWN);
mbed_official 107:414e9c822e99 58 break;
mbed_official 107:414e9c822e99 59 }
mbed_official 107:414e9c822e99 60 }
mbed_official 107:414e9c822e99 61
mbed_official 107:414e9c822e99 62 void gpio_dir(gpio_t *obj, PinDirection direction)
mbed_official 107:414e9c822e99 63 {
mbed_official 107:414e9c822e99 64 MBED_ASSERT(obj->pin != (PinName)NC);
mbed_official 107:414e9c822e99 65 obj->direction = direction;
mbed_official 107:414e9c822e99 66 switch (direction) {
mbed_official 107:414e9c822e99 67 case PIN_INPUT :
mbed_official 107:414e9c822e99 68 ioport_set_pin_dir(obj->pin, IOPORT_DIR_INPUT);
mbed_official 107:414e9c822e99 69 break;
mbed_official 107:414e9c822e99 70 case PIN_OUTPUT:
mbed_official 107:414e9c822e99 71 ioport_set_pin_dir(obj->pin, IOPORT_DIR_OUTPUT);
mbed_official 107:414e9c822e99 72 break;
mbed_official 107:414e9c822e99 73 case PIN_INPUT_OUTPUT:
mbed_official 107:414e9c822e99 74 ioport_set_pin_dir(obj->pin, IOPORT_DIR_OUTPUT);
mbed_official 107:414e9c822e99 75 break;
mbed_official 107:414e9c822e99 76 }
mbed_official 107:414e9c822e99 77 }