added prescaler for 16 bit pwm in LPC1347 target
Fork of mbed-dev by
targets/cmsis/TARGET_ARM_SSG/TARGET_BEETLE/systick_timer.c@144:ef7eb2e8f9f7, 2016-09-02 (annotated)
- Committer:
- <>
- Date:
- Fri Sep 02 15:07:44 2016 +0100
- Revision:
- 144:ef7eb2e8f9f7
This updates the lib to the mbed lib v125
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
<> | 144:ef7eb2e8f9f7 | 1 | /* |
<> | 144:ef7eb2e8f9f7 | 2 | * PackageLicenseDeclared: Apache-2.0 |
<> | 144:ef7eb2e8f9f7 | 3 | * Copyright (c) 2015 ARM Limited |
<> | 144:ef7eb2e8f9f7 | 4 | * |
<> | 144:ef7eb2e8f9f7 | 5 | * Licensed under the Apache License, Version 2.0 (the "License"); |
<> | 144:ef7eb2e8f9f7 | 6 | * you may not use this file except in compliance with the License. |
<> | 144:ef7eb2e8f9f7 | 7 | * You may obtain a copy of the License at |
<> | 144:ef7eb2e8f9f7 | 8 | * |
<> | 144:ef7eb2e8f9f7 | 9 | * http://www.apache.org/licenses/LICENSE-2.0 |
<> | 144:ef7eb2e8f9f7 | 10 | * |
<> | 144:ef7eb2e8f9f7 | 11 | * Unless required by applicable law or agreed to in writing, software |
<> | 144:ef7eb2e8f9f7 | 12 | * distributed under the License is distributed on an "AS IS" BASIS, |
<> | 144:ef7eb2e8f9f7 | 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
<> | 144:ef7eb2e8f9f7 | 14 | * See the License for the specific language governing permissions and |
<> | 144:ef7eb2e8f9f7 | 15 | * limitations under the License. |
<> | 144:ef7eb2e8f9f7 | 16 | */ |
<> | 144:ef7eb2e8f9f7 | 17 | |
<> | 144:ef7eb2e8f9f7 | 18 | #include "cmsis.h" |
<> | 144:ef7eb2e8f9f7 | 19 | #include "systick_timer.h" |
<> | 144:ef7eb2e8f9f7 | 20 | |
<> | 144:ef7eb2e8f9f7 | 21 | volatile uint32_t MyTicks; |
<> | 144:ef7eb2e8f9f7 | 22 | |
<> | 144:ef7eb2e8f9f7 | 23 | /* Private Data SysTick */ |
<> | 144:ef7eb2e8f9f7 | 24 | static uint32_t clock; |
<> | 144:ef7eb2e8f9f7 | 25 | |
<> | 144:ef7eb2e8f9f7 | 26 | /* |
<> | 144:ef7eb2e8f9f7 | 27 | * This Timer is written for MBED OS so the interrupt |
<> | 144:ef7eb2e8f9f7 | 28 | * is used to keep track of the overflow. |
<> | 144:ef7eb2e8f9f7 | 29 | */ |
<> | 144:ef7eb2e8f9f7 | 30 | #define SYSTICK_MAX_RELOAD 0xFFFFFFFF |
<> | 144:ef7eb2e8f9f7 | 31 | #define SYSTICK_DIVIDER_US (SystemCoreClock/1000000) |
<> | 144:ef7eb2e8f9f7 | 32 | |
<> | 144:ef7eb2e8f9f7 | 33 | void SysTick_IRQ_Handler(void) |
<> | 144:ef7eb2e8f9f7 | 34 | { |
<> | 144:ef7eb2e8f9f7 | 35 | MyTicks++; |
<> | 144:ef7eb2e8f9f7 | 36 | #if 0 |
<> | 144:ef7eb2e8f9f7 | 37 | printf("System Tick Interrupt: %u\n\r", MyTicks); |
<> | 144:ef7eb2e8f9f7 | 38 | #endif |
<> | 144:ef7eb2e8f9f7 | 39 | } |
<> | 144:ef7eb2e8f9f7 | 40 | |
<> | 144:ef7eb2e8f9f7 | 41 | /* |
<> | 144:ef7eb2e8f9f7 | 42 | * SysTick_Initialize(): Initializes the SysTick timer |
<> | 144:ef7eb2e8f9f7 | 43 | */ |
<> | 144:ef7eb2e8f9f7 | 44 | void SysTick_Initialize(void) |
<> | 144:ef7eb2e8f9f7 | 45 | { |
<> | 144:ef7eb2e8f9f7 | 46 | clock = SYSTICK_MAX_RELOAD; |
<> | 144:ef7eb2e8f9f7 | 47 | #if 0 |
<> | 144:ef7eb2e8f9f7 | 48 | printf("\n\rEnable System Tick Interrupt...\n\r"); |
<> | 144:ef7eb2e8f9f7 | 49 | #endif |
<> | 144:ef7eb2e8f9f7 | 50 | MyTicks=0; |
<> | 144:ef7eb2e8f9f7 | 51 | |
<> | 144:ef7eb2e8f9f7 | 52 | /* SysTick Reload Value Register */ |
<> | 144:ef7eb2e8f9f7 | 53 | SysTick->LOAD = clock; |
<> | 144:ef7eb2e8f9f7 | 54 | |
<> | 144:ef7eb2e8f9f7 | 55 | /* |
<> | 144:ef7eb2e8f9f7 | 56 | * SysTick_CTRL_CLKSOURCE_Msk : Use core's clock |
<> | 144:ef7eb2e8f9f7 | 57 | * SysTick_CTRL_ENABLE_Msk : Enable SysTick |
<> | 144:ef7eb2e8f9f7 | 58 | * SysTick_CTRL_TICKINT_Msk : Active the SysTick interrupt on the NVIC |
<> | 144:ef7eb2e8f9f7 | 59 | */ |
<> | 144:ef7eb2e8f9f7 | 60 | SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
<> | 144:ef7eb2e8f9f7 | 61 | | SysTick_CTRL_ENABLE_Msk |
<> | 144:ef7eb2e8f9f7 | 62 | | SysTick_CTRL_TICKINT_Msk; |
<> | 144:ef7eb2e8f9f7 | 63 | |
<> | 144:ef7eb2e8f9f7 | 64 | /* Register the Interrupt */ |
<> | 144:ef7eb2e8f9f7 | 65 | NVIC_SetVector(SysTick_IRQn, (uint32_t)SysTick_IRQ_Handler); |
<> | 144:ef7eb2e8f9f7 | 66 | NVIC_EnableIRQ(SysTick_IRQn); |
<> | 144:ef7eb2e8f9f7 | 67 | } |
<> | 144:ef7eb2e8f9f7 | 68 | |
<> | 144:ef7eb2e8f9f7 | 69 | /* |
<> | 144:ef7eb2e8f9f7 | 70 | * SysTick_Disable(): Disables the SysTick timer |
<> | 144:ef7eb2e8f9f7 | 71 | */ |
<> | 144:ef7eb2e8f9f7 | 72 | void SysTick_Disable(void) |
<> | 144:ef7eb2e8f9f7 | 73 | { |
<> | 144:ef7eb2e8f9f7 | 74 | /* Disable SysTick */ |
<> | 144:ef7eb2e8f9f7 | 75 | SysTick->CTRL = 0; |
<> | 144:ef7eb2e8f9f7 | 76 | } |
<> | 144:ef7eb2e8f9f7 | 77 | |
<> | 144:ef7eb2e8f9f7 | 78 | /* |
<> | 144:ef7eb2e8f9f7 | 79 | * SysTick_Read(): Read SysTick Value |
<> | 144:ef7eb2e8f9f7 | 80 | * @return: the SysTick VALUE |
<> | 144:ef7eb2e8f9f7 | 81 | */ |
<> | 144:ef7eb2e8f9f7 | 82 | uint32_t SysTick_Read(void) |
<> | 144:ef7eb2e8f9f7 | 83 | { |
<> | 144:ef7eb2e8f9f7 | 84 | return ((clock - (SysTick->VAL)) / SYSTICK_DIVIDER_US); |
<> | 144:ef7eb2e8f9f7 | 85 | } |
<> | 144:ef7eb2e8f9f7 | 86 | |
<> | 144:ef7eb2e8f9f7 | 87 | /* |
<> | 144:ef7eb2e8f9f7 | 88 | * SysTick_Overflow(): Read SysTick Overflow Value |
<> | 144:ef7eb2e8f9f7 | 89 | * @return: the SysTick Overflow VALUE |
<> | 144:ef7eb2e8f9f7 | 90 | */ |
<> | 144:ef7eb2e8f9f7 | 91 | uint32_t SysTick_Overflow(void) |
<> | 144:ef7eb2e8f9f7 | 92 | { |
<> | 144:ef7eb2e8f9f7 | 93 | return MyTicks; |
<> | 144:ef7eb2e8f9f7 | 94 | } |