Added macros in st_lld for Tiva defices to wait until a timer is ready before using it.

This commit is contained in:
marcoveeneman 2015-03-22 22:40:22 +01:00
parent 61f2081d66
commit 2d6792780a
1 changed files with 14 additions and 3 deletions

View File

@ -39,36 +39,42 @@
#define ST_NUMBER TIVA_WGPT0A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCWTIMER |= (1 << 0))
#define ST_WAIT_CLOCK() while (!(SYSCTL->PRWTIMER & (1 << 0)))
#elif TIVA_ST_TIMER_NUMBER == 1
#define ST_HANDLER TIVA_WGPT1A_HANDLER
#define ST_NUMBER TIVA_WGPT1A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCWTIMER |= (1 << 1))
#define ST_WAIT_CLOCK() while (!(SYSCTL->PRWTIMER & (1 << 1)))
#elif TIVA_ST_TIMER_NUMBER == 2
#define ST_HANDLER TIVA_WGPT2A_HANDLER
#define ST_NUMBER TIVA_WGPT2A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCWTIMER |= (1 << 2))
#define ST_WAIT_CLOCK() while (!(SYSCTL->PRWTIMER & (1 << 2)))
#elif TIVA_ST_TIMER_NUMBER == 3
#define ST_HANDLER TIVA_WGPT3A_HANDLER
#define ST_NUMBER TIVA_WGPT3A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCWTIMER |= (1 << 3))
#define ST_WAIT_CLOCK() while (!(SYSCTL->PRWTIMER & (1 << 3)))
#elif TIVA_ST_TIMER_NUMBER == 4
#define ST_HANDLER TIVA_WGPT4A_HANDLER
#define ST_NUMBER TIVA_WGPT4A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCWTIMER |= (1 << 4))
#define ST_WAIT_CLOCK() while (!(SYSCTL->PRWTIMER & (1 << 4)))
#elif TIVA_ST_TIMER_NUMBER == 5
#define ST_HANDLER TIVA_WGPT5A_HANDLER
#define ST_NUMBER TIVA_WGPT5A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCWTIMER |= (1 << 5))
#define ST_WAIT_CLOCK() while (!(SYSCTL->PRWTIMER & (1 << 5)))
#else
#error "TIVA_ST_USE_TIMER specifies an unsupported timer"
@ -85,36 +91,42 @@
#define ST_NUMBER TIVA_GPT0A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCTIMER |= (1 << 0))
#define ST_WAIT_CLOCK() while (!(SYSCTL->PRTIMER & (1 << 0)))
#elif TIVA_ST_TIMER_NUMBER == 1
#define ST_HANDLER TIVA_GPT1A_HANDLER
#define ST_NUMBER TIVA_GPT1A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCTIMER |= (1 << 1))
#define ST_WAIT_CLOCK() while (!(SYSCTL->PRTIMER & (1 << 1)))
#elif TIVA_ST_TIMER_NUMBER == 2
#define ST_HANDLER TIVA_GPT2A_HANDLER
#define ST_NUMBER TIVA_GPT2A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCTIMER |= (1 << 2))
#define ST_WAIT_CLOCK() while (!(SYSCTL->PRTIMER & (1 << 2)))
#elif TIVA_ST_TIMER_NUMBER == 3
#define ST_HANDLER TIVA_GPT3A_HANDLER
#define ST_NUMBER TIVA_GPT3A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCTIMER |= (1 << 3))
#define ST_WAIT_CLOCK() while (!(SYSCTL->PRTIMER & (1 << 3)))
#elif TIVA_ST_TIMER_NUMBER == 4
#define ST_HANDLER TIVA_GPT4A_HANDLER
#define ST_NUMBER TIVA_GPT4A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCTIMER |= (1 << 4))
#define ST_WAIT_CLOCK() while (!(SYSCTL->PRTIMER & (1 << 4)))
#elif TIVA_ST_TIMER_NUMBER == 5
#define ST_HANDLER TIVA_GPT5A_HANDLER
#define ST_NUMBER TIVA_GPT5A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCTIMER |= (1 << 5))
#define ST_WAIT_CLOCK() while (!(SYSCTL->PRTIMER & (1 << 5)))
#else
#error "TIVA_ST_USE_TIMER specifies an unsupported timer"
@ -214,9 +226,8 @@ void st_lld_init(void)
/* Enabling timer clock.*/
ST_ENABLE_CLOCK();
/* TODO: dynamic for all timers instead of hardcoded.*/
while (!(SYSCTL->PRWTIMER & (1 << 5)))
;
/* Wait until timer peripheral is ready */
ST_WAIT_CLOCK();
/* Initializing the counter in free running down mode.*/
TIVA_ST_TIM->CTL = 0;