added Olimex stm32f407-E407 ChibiOS example
This commit is contained in:
parent
196986fb89
commit
4647b4236c
1004 changed files with 1217137 additions and 0 deletions
552
eigener_ctrl/stm32f407-olimex/chibios/os/common/abstractions/cmsis_os/cmsis_os.c
Executable file
552
eigener_ctrl/stm32f407-olimex/chibios/os/common/abstractions/cmsis_os/cmsis_os.c
Executable file
|
|
@ -0,0 +1,552 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
/*
|
||||
Concepts and parts of this file have been contributed by Andre R.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file cmsis_os.c
|
||||
* @brief CMSIS RTOS module code.
|
||||
*
|
||||
* @addtogroup CMSIS_OS
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include "cmsis_os.h"
|
||||
#include <string.h>
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local definitions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
int32_t cmsis_os_started;
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
static memory_pool_t sempool;
|
||||
static semaphore_t semaphores[CMSIS_CFG_NUM_SEMAPHORES];
|
||||
|
||||
static memory_pool_t timpool;
|
||||
static struct os_timer_cb timers[CMSIS_CFG_NUM_TIMERS];
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Virtual timers common callback.
|
||||
*/
|
||||
static void timer_cb(void const *arg) {
|
||||
|
||||
osTimerId timer_id = (osTimerId)arg;
|
||||
timer_id->ptimer(timer_id->argument);
|
||||
if (timer_id->type == osTimerPeriodic) {
|
||||
chSysLockFromISR();
|
||||
chVTDoSetI(&timer_id->vt, MS2ST(timer_id->millisec),
|
||||
(vtfunc_t)timer_cb, timer_id);
|
||||
chSysUnlockFromISR();
|
||||
}
|
||||
}
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Kernel initialization.
|
||||
*/
|
||||
osStatus osKernelInitialize(void) {
|
||||
|
||||
cmsis_os_started = 0;
|
||||
|
||||
chSysInit();
|
||||
chThdSetPriority(HIGHPRIO);
|
||||
|
||||
chPoolObjectInit(&sempool, sizeof(semaphore_t), chCoreAllocAligned);
|
||||
chPoolLoadArray(&sempool, semaphores, CMSIS_CFG_NUM_SEMAPHORES);
|
||||
|
||||
chPoolObjectInit(&timpool, sizeof(struct os_timer_cb), chCoreAllocAligned);
|
||||
chPoolLoadArray(&timpool, timers, CMSIS_CFG_NUM_TIMERS);
|
||||
|
||||
return osOK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Kernel start.
|
||||
*/
|
||||
osStatus osKernelStart(void) {
|
||||
|
||||
cmsis_os_started = 1;
|
||||
|
||||
chThdSetPriority(NORMALPRIO);
|
||||
|
||||
return osOK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Creates a thread.
|
||||
*/
|
||||
osThreadId osThreadCreate(const osThreadDef_t *thread_def, void *argument) {
|
||||
size_t size;
|
||||
|
||||
size = thread_def->stacksize == 0 ? CMSIS_CFG_DEFAULT_STACK :
|
||||
thread_def->stacksize;
|
||||
return (osThreadId)chThdCreateFromHeap(0,
|
||||
THD_WORKING_AREA_SIZE(size),
|
||||
thread_def->name,
|
||||
NORMALPRIO+thread_def->tpriority,
|
||||
(tfunc_t)thread_def->pthread,
|
||||
argument);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Thread termination.
|
||||
* @note The thread is not really terminated but asked to terminate which
|
||||
* is not compliant.
|
||||
*/
|
||||
osStatus osThreadTerminate(osThreadId thread_id) {
|
||||
|
||||
if (thread_id == osThreadGetId()) {
|
||||
/* Note, no memory will be recovered unless a cleaner thread is
|
||||
implemented using the registry.*/
|
||||
chThdExit(0);
|
||||
}
|
||||
chThdTerminate(thread_id);
|
||||
chThdWait((thread_t *)thread_id);
|
||||
|
||||
return osOK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Change thread priority.
|
||||
* @note This can interfere with the priority inheritance mechanism.
|
||||
*/
|
||||
osStatus osThreadSetPriority(osThreadId thread_id, osPriority newprio) {
|
||||
thread_t * tp = (thread_t *)thread_id;
|
||||
|
||||
chSysLock();
|
||||
|
||||
/* Changing priority.*/
|
||||
#if CH_CFG_USE_MUTEXES
|
||||
if ((tp->prio == tp->realprio) || ((tprio_t)newprio > tp->prio))
|
||||
tp->prio = (tprio_t)newprio;
|
||||
tp->realprio = (tprio_t)newprio;
|
||||
#else
|
||||
tp->prio = (tprio_t)newprio;
|
||||
#endif
|
||||
|
||||
/* The following states need priority queues reordering.*/
|
||||
switch (tp->state) {
|
||||
#if CH_CFG_USE_MUTEXES | \
|
||||
CH_CFG_USE_CONDVARS | \
|
||||
(CH_CFG_USE_SEMAPHORES && CH_CFG_USE_SEMAPHORES_PRIORITY) | \
|
||||
(CH_CFG_USE_MESSAGES && CH_CFG_USE_MESSAGES_PRIORITY)
|
||||
#if CH_CFG_USE_MUTEXES
|
||||
case CH_STATE_WTMTX:
|
||||
#endif
|
||||
#if CH_CFG_USE_CONDVARS
|
||||
case CH_STATE_WTCOND:
|
||||
#endif
|
||||
#if CH_CFG_USE_SEMAPHORES && CH_CFG_USE_SEMAPHORES_PRIORITY
|
||||
case CH_STATE_WTSEM:
|
||||
#endif
|
||||
#if CH_CFG_USE_MESSAGES && CH_CFG_USE_MESSAGES_PRIORITY
|
||||
case CH_STATE_SNDMSGQ:
|
||||
#endif
|
||||
/* Re-enqueues tp with its new priority on the queue.*/
|
||||
queue_prio_insert(queue_dequeue(tp),
|
||||
(threads_queue_t *)tp->u.wtobjp);
|
||||
break;
|
||||
#endif
|
||||
case CH_STATE_READY:
|
||||
#if CH_DBG_ENABLE_ASSERTS
|
||||
/* Prevents an assertion in chSchReadyI().*/
|
||||
tp->state = CH_STATE_CURRENT;
|
||||
#endif
|
||||
/* Re-enqueues tp with its new priority on the ready list.*/
|
||||
chSchReadyI(queue_dequeue(tp));
|
||||
break;
|
||||
}
|
||||
|
||||
/* Rescheduling.*/
|
||||
chSchRescheduleS();
|
||||
|
||||
chSysUnlock();
|
||||
|
||||
return osOK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Create a timer.
|
||||
*/
|
||||
osTimerId osTimerCreate(const osTimerDef_t *timer_def,
|
||||
os_timer_type type,
|
||||
void *argument) {
|
||||
|
||||
osTimerId timer = chPoolAlloc(&timpool);
|
||||
chVTObjectInit(&timer->vt);
|
||||
timer->ptimer = timer_def->ptimer;
|
||||
timer->type = type;
|
||||
timer->argument = argument;
|
||||
return timer;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Start a timer.
|
||||
*/
|
||||
osStatus osTimerStart(osTimerId timer_id, uint32_t millisec) {
|
||||
|
||||
if ((millisec == 0) || (millisec == osWaitForever))
|
||||
return osErrorValue;
|
||||
|
||||
timer_id->millisec = millisec;
|
||||
chVTSet(&timer_id->vt, MS2ST(millisec), (vtfunc_t)timer_cb, timer_id);
|
||||
|
||||
return osOK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Stop a timer.
|
||||
*/
|
||||
osStatus osTimerStop(osTimerId timer_id) {
|
||||
|
||||
chVTReset(&timer_id->vt);
|
||||
|
||||
return osOK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Delete a timer.
|
||||
*/
|
||||
osStatus osTimerDelete(osTimerId timer_id) {
|
||||
|
||||
chVTReset(&timer_id->vt);
|
||||
chPoolFree(&timpool, (void *)timer_id);
|
||||
|
||||
return osOK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Send signals.
|
||||
*/
|
||||
int32_t osSignalSet(osThreadId thread_id, int32_t signals) {
|
||||
int32_t oldsignals;
|
||||
|
||||
syssts_t sts = chSysGetStatusAndLockX();
|
||||
oldsignals = (int32_t)thread_id->epending;
|
||||
chEvtSignalI((thread_t *)thread_id, (eventmask_t)signals);
|
||||
chSysRestoreStatusX(sts);
|
||||
|
||||
return oldsignals;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Clear signals.
|
||||
*/
|
||||
int32_t osSignalClear(osThreadId thread_id, int32_t signals) {
|
||||
eventmask_t m;
|
||||
|
||||
chSysLock();
|
||||
|
||||
m = thread_id->epending & (eventmask_t)signals;
|
||||
thread_id->epending &= ~(eventmask_t)signals;
|
||||
|
||||
chSysUnlock();
|
||||
|
||||
return (int32_t)m;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Wait for signals.
|
||||
*/
|
||||
osEvent osSignalWait(int32_t signals, uint32_t millisec) {
|
||||
osEvent event;
|
||||
systime_t timeout = ((millisec == 0) || (millisec == osWaitForever)) ?
|
||||
TIME_INFINITE : MS2ST(millisec);
|
||||
|
||||
if (signals == 0)
|
||||
event.value.signals = (uint32_t)chEvtWaitAnyTimeout(ALL_EVENTS, timeout);
|
||||
else
|
||||
event.value.signals = (uint32_t)chEvtWaitAllTimeout((eventmask_t)signals,
|
||||
timeout);
|
||||
|
||||
/* Type of event.*/
|
||||
if (event.value.signals == 0)
|
||||
event.status = osEventTimeout;
|
||||
else
|
||||
event.status = osEventSignal;
|
||||
|
||||
return event;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Create a semaphore.
|
||||
* @note @p semaphore_def is not used.
|
||||
* @note Can involve memory allocation.
|
||||
*/
|
||||
osSemaphoreId osSemaphoreCreate(const osSemaphoreDef_t *semaphore_def,
|
||||
int32_t count) {
|
||||
|
||||
(void)semaphore_def;
|
||||
|
||||
semaphore_t *sem = chPoolAlloc(&sempool);
|
||||
chSemObjectInit(sem, (cnt_t)count);
|
||||
return sem;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Wait on a semaphore.
|
||||
*/
|
||||
int32_t osSemaphoreWait(osSemaphoreId semaphore_id, uint32_t millisec) {
|
||||
systime_t timeout = ((millisec == 0) || (millisec == osWaitForever)) ?
|
||||
TIME_INFINITE : MS2ST(millisec);
|
||||
|
||||
msg_t msg = chSemWaitTimeout((semaphore_t *)semaphore_id, timeout);
|
||||
switch (msg) {
|
||||
case MSG_OK:
|
||||
return osOK;
|
||||
case MSG_TIMEOUT:
|
||||
return osErrorTimeoutResource;
|
||||
}
|
||||
return osErrorResource;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Release a semaphore.
|
||||
*/
|
||||
osStatus osSemaphoreRelease(osSemaphoreId semaphore_id) {
|
||||
|
||||
syssts_t sts = chSysGetStatusAndLockX();
|
||||
chSemSignalI((semaphore_t *)semaphore_id);
|
||||
chSysRestoreStatusX(sts);
|
||||
|
||||
return osOK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Deletes a semaphore.
|
||||
* @note After deletion there could be references in the system to a
|
||||
* non-existent semaphore.
|
||||
*/
|
||||
osStatus osSemaphoreDelete(osSemaphoreId semaphore_id) {
|
||||
|
||||
chSemReset((semaphore_t *)semaphore_id, 0);
|
||||
chPoolFree(&sempool, (void *)semaphore_id);
|
||||
|
||||
return osOK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Create a mutex.
|
||||
* @note @p mutex_def is not used.
|
||||
* @note Can involve memory allocation.
|
||||
*/
|
||||
osMutexId osMutexCreate(const osMutexDef_t *mutex_def) {
|
||||
|
||||
(void)mutex_def;
|
||||
|
||||
binary_semaphore_t *mtx = chPoolAlloc(&sempool);
|
||||
chBSemObjectInit(mtx, false);
|
||||
return mtx;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Wait on a mutex.
|
||||
*/
|
||||
osStatus osMutexWait(osMutexId mutex_id, uint32_t millisec) {
|
||||
systime_t timeout = ((millisec == 0) || (millisec == osWaitForever)) ?
|
||||
TIME_INFINITE : MS2ST(millisec);
|
||||
|
||||
msg_t msg = chBSemWaitTimeout((binary_semaphore_t *)mutex_id, timeout);
|
||||
switch (msg) {
|
||||
case MSG_OK:
|
||||
return osOK;
|
||||
case MSG_TIMEOUT:
|
||||
return osErrorTimeoutResource;
|
||||
}
|
||||
return osErrorResource;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Release a mutex.
|
||||
*/
|
||||
osStatus osMutexRelease(osMutexId mutex_id) {
|
||||
|
||||
syssts_t sts = chSysGetStatusAndLockX();
|
||||
chBSemSignalI((binary_semaphore_t *)mutex_id);
|
||||
chSysRestoreStatusX(sts);
|
||||
|
||||
return osOK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Deletes a mutex.
|
||||
* @note After deletion there could be references in the system to a
|
||||
* non-existent semaphore.
|
||||
*/
|
||||
osStatus osMutexDelete(osMutexId mutex_id) {
|
||||
|
||||
chSemReset((semaphore_t *)mutex_id, 0);
|
||||
chPoolFree(&sempool, (void *)mutex_id);
|
||||
|
||||
return osOK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Create a memory pool.
|
||||
* @note The pool is not really created because it is allocated statically,
|
||||
* this function just re-initializes it.
|
||||
*/
|
||||
osPoolId osPoolCreate(const osPoolDef_t *pool_def) {
|
||||
|
||||
chPoolObjectInit(pool_def->pool, (size_t)pool_def->item_sz, NULL);
|
||||
chPoolLoadArray(pool_def->pool, pool_def->items, (size_t)pool_def->pool_sz);
|
||||
|
||||
return (osPoolId)pool_def->pool;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Allocate an object.
|
||||
*/
|
||||
void *osPoolAlloc(osPoolId pool_id) {
|
||||
void *object;
|
||||
|
||||
syssts_t sts = chSysGetStatusAndLockX();
|
||||
object = chPoolAllocI((memory_pool_t *)pool_id);
|
||||
chSysRestoreStatusX(sts);
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Allocate an object clearing it.
|
||||
*/
|
||||
void *osPoolCAlloc(osPoolId pool_id) {
|
||||
void *object;
|
||||
|
||||
object = chPoolAllocI((memory_pool_t *)pool_id);
|
||||
memset(object, 0, pool_id->object_size);
|
||||
return object;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Free an object.
|
||||
*/
|
||||
osStatus osPoolFree(osPoolId pool_id, void *block) {
|
||||
|
||||
syssts_t sts = chSysGetStatusAndLockX();
|
||||
chPoolFreeI((memory_pool_t *)pool_id, block);
|
||||
chSysRestoreStatusX(sts);
|
||||
|
||||
return osOK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Create a message queue.
|
||||
* @note The queue is not really created because it is allocated statically,
|
||||
* this function just re-initializes it.
|
||||
*/
|
||||
osMessageQId osMessageCreate(const osMessageQDef_t *queue_def,
|
||||
osThreadId thread_id) {
|
||||
|
||||
/* Ignoring this parameter for now.*/
|
||||
(void)thread_id;
|
||||
|
||||
if (queue_def->item_sz > sizeof (msg_t))
|
||||
return NULL;
|
||||
|
||||
chMBObjectInit(queue_def->mailbox,
|
||||
queue_def->items,
|
||||
(size_t)queue_def->queue_sz);
|
||||
|
||||
return (osMessageQId) queue_def->mailbox;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Put a message in the queue.
|
||||
*/
|
||||
osStatus osMessagePut(osMessageQId queue_id,
|
||||
uint32_t info,
|
||||
uint32_t millisec) {
|
||||
msg_t msg;
|
||||
systime_t timeout = ((millisec == 0) || (millisec == osWaitForever)) ?
|
||||
TIME_INFINITE : MS2ST(millisec);
|
||||
|
||||
if (port_is_isr_context()) {
|
||||
|
||||
/* Waiting makes no sense in ISRs so any value except "immediate"
|
||||
makes no sense.*/
|
||||
if (millisec != 0)
|
||||
return osErrorValue;
|
||||
|
||||
chSysLockFromISR();
|
||||
msg = chMBPostI((mailbox_t *)queue_id, (msg_t)info);
|
||||
chSysUnlockFromISR();
|
||||
}
|
||||
else
|
||||
msg = chMBPost((mailbox_t *)queue_id, (msg_t)info, timeout);
|
||||
|
||||
return msg == MSG_OK ? osOK : osEventTimeout;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get a message from the queue.
|
||||
*/
|
||||
osEvent osMessageGet(osMessageQId queue_id,
|
||||
uint32_t millisec) {
|
||||
msg_t msg;
|
||||
osEvent event;
|
||||
systime_t timeout = ((millisec == 0) || (millisec == osWaitForever)) ?
|
||||
TIME_INFINITE : MS2ST(millisec);
|
||||
|
||||
event.def.message_id = queue_id;
|
||||
|
||||
if (port_is_isr_context()) {
|
||||
|
||||
/* Waiting makes no sense in ISRs so any value except "immediate"
|
||||
makes no sense.*/
|
||||
if (millisec != 0) {
|
||||
event.status = osErrorValue;
|
||||
return event;
|
||||
}
|
||||
|
||||
chSysLockFromISR();
|
||||
msg = chMBFetchI((mailbox_t *)queue_id, (msg_t*)&event.value.v);
|
||||
chSysUnlockFromISR();
|
||||
}
|
||||
else {
|
||||
msg = chMBFetch((mailbox_t *)queue_id, (msg_t*)&event.value.v, timeout);
|
||||
}
|
||||
|
||||
/* Returned event type.*/
|
||||
event.status = msg == MSG_OK ? osEventMessage : osEventTimeout;
|
||||
return event;
|
||||
}
|
||||
|
||||
/** @} */
|
||||
522
eigener_ctrl/stm32f407-olimex/chibios/os/common/abstractions/cmsis_os/cmsis_os.h
Executable file
522
eigener_ctrl/stm32f407-olimex/chibios/os/common/abstractions/cmsis_os/cmsis_os.h
Executable file
|
|
@ -0,0 +1,522 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio.
|
||||
|
||||
This file is part of ChibiOS.
|
||||
|
||||
ChibiOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ChibiOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
/*
|
||||
Concepts and parts of this file have been contributed by Andre R.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file cmsis_os.h
|
||||
* @brief CMSIS RTOS module macros and structures.
|
||||
*
|
||||
* @addtogroup CMSIS_OS
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef CMSIS_OS_H
|
||||
#define CMSIS_OS_H
|
||||
|
||||
#include "ch.h"
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module constants. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief API version.
|
||||
*/
|
||||
#define osCMSIS 0x10002
|
||||
|
||||
/**
|
||||
* @brief Kernel version.
|
||||
*/
|
||||
#define osKernelSystemId "KERNEL V1.00"
|
||||
|
||||
/**
|
||||
* @brief ChibiOS/RT version encoded for CMSIS.
|
||||
*/
|
||||
#define osCMSIS_KERNEL ((CH_KERNEL_MAJOR << 16) | \
|
||||
(CH_KERNEL_MINOR << 8) | \
|
||||
(CH_KERNEL_PATCH))
|
||||
|
||||
/**
|
||||
* @name CMSIS Capabilities
|
||||
* @{
|
||||
*/
|
||||
#define osFeature_MainThread 1
|
||||
#define osFeature_Pool 1
|
||||
#define osFeature_MailQ 0
|
||||
#define osFeature_MessageQ 1
|
||||
#define osFeature_Signals 24
|
||||
#define osFeature_Semaphore ((1U << 31) - 1U)
|
||||
#define osFeature_Wait 0
|
||||
#define osFeature_SysTick 1
|
||||
/**< @} */
|
||||
|
||||
/**
|
||||
* @brief Wait forever specification for timeouts.
|
||||
*/
|
||||
#define osWaitForever TIME_INFINITE
|
||||
|
||||
/**
|
||||
* @brief System tick frequency.
|
||||
*/
|
||||
#define osKernelSysTickFrequency CH_CFG_ST_FREQUENCY
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module pre-compile time settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of pre-allocated static semaphores/mutexes.
|
||||
*/
|
||||
#if !defined(CMSIS_CFG_DEFAULT_STACK)
|
||||
#define CMSIS_CFG_DEFAULT_STACK 256
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Number of pre-allocated static semaphores/mutexes.
|
||||
*/
|
||||
#if !defined(CMSIS_CFG_NUM_SEMAPHORES)
|
||||
#define CMSIS_CFG_NUM_SEMAPHORES 4
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Number of pre-allocated static timers.
|
||||
*/
|
||||
#if !defined(CMSIS_CFG_NUM_TIMERS)
|
||||
#define CMSIS_CFG_NUM_TIMERS 4
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if !CH_CFG_USE_MEMPOOLS
|
||||
#error "CMSIS RTOS requires CH_CFG_USE_MEMPOOLS"
|
||||
#endif
|
||||
|
||||
#if !CH_CFG_USE_EVENTS
|
||||
#error "CMSIS RTOS requires CH_CFG_USE_EVENTS"
|
||||
#endif
|
||||
|
||||
#if !CH_CFG_USE_EVENTS_TIMEOUT
|
||||
#error "CMSIS RTOS requires CH_CFG_USE_EVENTS_TIMEOUT"
|
||||
#endif
|
||||
|
||||
#if !CH_CFG_USE_SEMAPHORES
|
||||
#error "CMSIS RTOS requires CH_CFG_USE_SEMAPHORES"
|
||||
#endif
|
||||
|
||||
#if !CH_CFG_USE_DYNAMIC
|
||||
#error "CMSIS RTOS requires CH_CFG_USE_DYNAMIC"
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module data structures and types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Type of priority levels.
|
||||
*/
|
||||
typedef enum {
|
||||
osPriorityIdle = -3,
|
||||
osPriorityLow = -2,
|
||||
osPriorityBelowNormal = -1,
|
||||
osPriorityNormal = 0,
|
||||
osPriorityAboveNormal = +1,
|
||||
osPriorityHigh = +2,
|
||||
osPriorityRealtime = +3,
|
||||
osPriorityError = 0x84
|
||||
} osPriority;
|
||||
|
||||
/**
|
||||
* @brief Type of error codes.
|
||||
*/
|
||||
typedef enum {
|
||||
osOK = 0,
|
||||
osEventSignal = 0x08,
|
||||
osEventMessage = 0x10,
|
||||
osEventMail = 0x20,
|
||||
osEventTimeout = 0x40,
|
||||
osErrorParameter = 0x80,
|
||||
osErrorResource = 0x81,
|
||||
osErrorTimeoutResource = 0xC1,
|
||||
osErrorISR = 0x82,
|
||||
osErrorISRRecursive = 0x83,
|
||||
osErrorPriority = 0x84,
|
||||
osErrorNoMemory = 0x85,
|
||||
osErrorValue = 0x86,
|
||||
osErrorOS = 0xFF,
|
||||
os_status_reserved = 0x7FFFFFFF
|
||||
} osStatus;
|
||||
|
||||
/**
|
||||
* @brief Type of a timer mode.
|
||||
*/
|
||||
typedef enum {
|
||||
osTimerOnce = 0,
|
||||
osTimerPeriodic = 1
|
||||
} os_timer_type;
|
||||
|
||||
/**
|
||||
* @brief Type of thread functions.
|
||||
*/
|
||||
typedef void (*os_pthread) (void const *argument);
|
||||
|
||||
/**
|
||||
* @brief Type of timer callback.
|
||||
*/
|
||||
typedef void (*os_ptimer) (void const *argument);
|
||||
|
||||
/**
|
||||
* @brief Type of pointer to thread control block.
|
||||
*/
|
||||
typedef thread_t *osThreadId;
|
||||
|
||||
/**
|
||||
* @brief Type of pointer to timer control block.
|
||||
*/
|
||||
typedef struct os_timer_cb {
|
||||
virtual_timer_t vt;
|
||||
os_timer_type type;
|
||||
os_ptimer ptimer;
|
||||
void *argument;
|
||||
uint32_t millisec;
|
||||
} *osTimerId;
|
||||
|
||||
/**
|
||||
* @brief Type of pointer to mutex control block.
|
||||
*/
|
||||
typedef binary_semaphore_t *osMutexId;
|
||||
|
||||
/**
|
||||
* @brief Type of pointer to semaphore control block.
|
||||
*/
|
||||
typedef semaphore_t *osSemaphoreId;
|
||||
|
||||
/**
|
||||
* @brief Type of pointer to memory pool control block.
|
||||
*/
|
||||
typedef memory_pool_t *osPoolId;
|
||||
|
||||
/**
|
||||
* @brief Type of pointer to message queue control block.
|
||||
*/
|
||||
typedef struct mailbox *osMessageQId;
|
||||
|
||||
/**
|
||||
* @brief Type of an event.
|
||||
*/
|
||||
typedef struct {
|
||||
osStatus status;
|
||||
union {
|
||||
uint32_t v;
|
||||
void *p;
|
||||
int32_t signals;
|
||||
} value;
|
||||
union {
|
||||
/* osMailQId mail_id;*/
|
||||
osMessageQId message_id;
|
||||
} def;
|
||||
} osEvent;
|
||||
|
||||
/**
|
||||
* @brief Type of a thread definition block.
|
||||
*/
|
||||
typedef struct os_thread_def {
|
||||
os_pthread pthread;
|
||||
osPriority tpriority;
|
||||
uint32_t stacksize;
|
||||
const char *name;
|
||||
} osThreadDef_t;
|
||||
|
||||
/**
|
||||
* @brief Type of a timer definition block.
|
||||
*/
|
||||
typedef struct os_timer_def {
|
||||
os_ptimer ptimer;
|
||||
} osTimerDef_t;
|
||||
|
||||
/**
|
||||
* @brief Type of a mutex definition block.
|
||||
*/
|
||||
typedef struct os_mutex_def {
|
||||
uint32_t dummy;
|
||||
} osMutexDef_t;
|
||||
|
||||
/**
|
||||
* @brief Type of a semaphore definition block.
|
||||
*/
|
||||
typedef struct os_semaphore_def {
|
||||
uint32_t dummy;
|
||||
} osSemaphoreDef_t;
|
||||
|
||||
/**
|
||||
* @brief Type of a memory pool definition block.
|
||||
*/
|
||||
typedef struct os_pool_def {
|
||||
uint32_t pool_sz;
|
||||
uint32_t item_sz;
|
||||
memory_pool_t *pool;
|
||||
void *items;
|
||||
} osPoolDef_t;
|
||||
|
||||
/**
|
||||
* @brief Type of a message queue definition block.
|
||||
*/
|
||||
typedef struct os_messageQ_def {
|
||||
uint32_t queue_sz;
|
||||
uint32_t item_sz;
|
||||
mailbox_t *mailbox;
|
||||
void *items;
|
||||
} osMessageQDef_t;
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module macros. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Convert a microseconds value to a RTOS kernel system timer value.
|
||||
*/
|
||||
#define osKernelSysTickMicroSec(microsec) (((uint64_t)microsec * \
|
||||
(osKernelSysTickFrequency)) / \
|
||||
1000000)
|
||||
|
||||
/**
|
||||
* @brief Create a Thread definition.
|
||||
*/
|
||||
#if defined(osObjectsExternal)
|
||||
#define osThreadDef(thd, priority, stacksz, name) \
|
||||
extern const osThreadDef_t os_thread_def_##thd
|
||||
#else
|
||||
#define osThreadDef(thd, priority, stacksz, name) \
|
||||
const osThreadDef_t os_thread_def_##thd = { \
|
||||
(thd), \
|
||||
(priority), \
|
||||
(stacksz), \
|
||||
(name) \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Access a Thread definition.
|
||||
*/
|
||||
#define osThread(name) &os_thread_def_##name
|
||||
|
||||
/**
|
||||
* @brief Define a Timer object.
|
||||
*/
|
||||
#if defined(osObjectsExternal)
|
||||
#define osTimerDef(name, function) \
|
||||
extern const osTimerDef_t os_timer_def_##name
|
||||
#else
|
||||
#define osTimerDef(name, function) \
|
||||
const osTimerDef_t os_timer_def_##name = { \
|
||||
(function) \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Access a Timer definition.
|
||||
*/
|
||||
#define osTimer(name) &os_timer_def_##name
|
||||
|
||||
/**
|
||||
* @brief Define a Mutex.
|
||||
*/
|
||||
#if defined(osObjectsExternal)
|
||||
#define osMutexDef(name) extern const osMutexDef_t os_mutex_def_##name
|
||||
#else
|
||||
#define osMutexDef(name) const osMutexDef_t os_mutex_def_##name = {0}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Access a Mutex definition.
|
||||
*/
|
||||
#define osMutex(name) &os_mutex_def_##name
|
||||
|
||||
/**
|
||||
* @brief Define a Semaphore.
|
||||
*/
|
||||
#if defined(osObjectsExternal)
|
||||
#define osSemaphoreDef(name) \
|
||||
extern const osSemaphoreDef_t os_semaphore_def_##name
|
||||
#else // define the object
|
||||
#define osSemaphoreDef(name) \
|
||||
const osSemaphoreDef_t os_semaphore_def_##name = {0}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Access a Semaphore definition.
|
||||
*/
|
||||
#define osSemaphore(name) &os_semaphore_def_##name
|
||||
|
||||
/**
|
||||
* @brief Define a Memory Pool.
|
||||
*/
|
||||
#if defined(osObjectsExternal)
|
||||
#define osPoolDef(name, no, type) \
|
||||
extern const osPoolDef_t os_pool_def_##name
|
||||
#else
|
||||
#define osPoolDef(name, no, type) \
|
||||
static const type os_pool_buf_##name[no]; \
|
||||
static memory_pool_t os_pool_obj_##name; \
|
||||
const osPoolDef_t os_pool_def_##name = { \
|
||||
(no), \
|
||||
sizeof (type), \
|
||||
(void *)&os_pool_obj_##name, \
|
||||
(void *)&os_pool_buf_##name[0] \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Access a Memory Pool definition.
|
||||
*/
|
||||
#define osPool(name) &os_pool_def_##name
|
||||
|
||||
/**
|
||||
* @brief Define a Message Queue.
|
||||
*/
|
||||
#if defined(osObjectsExternal)
|
||||
#define osMessageQDef(name, queue_sz, type) \
|
||||
extern const osMessageQDef_t os_messageQ_def_##name
|
||||
#else
|
||||
#define osMessageQDef(name, queue_sz, type) \
|
||||
static const msg_t os_messageQ_buf_##name[queue_sz]; \
|
||||
static mailbox_t os_messageQ_obj_##name; \
|
||||
const osMessageQDef_t os_messageQ_def_##name = { \
|
||||
(queue_sz), \
|
||||
sizeof (type), \
|
||||
(void *)&os_messageQ_obj_##name, \
|
||||
(void *)&os_messageQ_buf_##name[0] \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Access a Message Queue definition.
|
||||
*/
|
||||
#define osMessageQ(name) &os_messageQ_def_##name
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
||||
extern int32_t cmsis_os_started;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
osStatus osKernelInitialize(void);
|
||||
osStatus osKernelStart(void);
|
||||
osThreadId osThreadCreate(const osThreadDef_t *thread_def, void *argument);
|
||||
osStatus osThreadTerminate(osThreadId thread_id);
|
||||
osStatus osThreadSetPriority(osThreadId thread_id, osPriority newprio);
|
||||
/*osEvent osWait(uint32_t millisec);*/
|
||||
osTimerId osTimerCreate(const osTimerDef_t *timer_def,
|
||||
os_timer_type type,
|
||||
void *argument);
|
||||
osStatus osTimerStart(osTimerId timer_id, uint32_t millisec);
|
||||
osStatus osTimerStop(osTimerId timer_id);
|
||||
osStatus osTimerDelete(osTimerId timer_id);
|
||||
int32_t osSignalSet(osThreadId thread_id, int32_t signals);
|
||||
int32_t osSignalClear(osThreadId thread_id, int32_t signals);
|
||||
osEvent osSignalWait(int32_t signals, uint32_t millisec);
|
||||
osSemaphoreId osSemaphoreCreate(const osSemaphoreDef_t *semaphore_def,
|
||||
int32_t count);
|
||||
int32_t osSemaphoreWait(osSemaphoreId semaphore_id, uint32_t millisec);
|
||||
osStatus osSemaphoreRelease(osSemaphoreId semaphore_id);
|
||||
osStatus osSemaphoreDelete(osSemaphoreId semaphore_id);
|
||||
osMutexId osMutexCreate(const osMutexDef_t *mutex_def);
|
||||
osStatus osMutexWait(osMutexId mutex_id, uint32_t millisec);
|
||||
osStatus osMutexRelease(osMutexId mutex_id);
|
||||
osStatus osMutexDelete(osMutexId mutex_id);
|
||||
osPoolId osPoolCreate(const osPoolDef_t *pool_def);
|
||||
void *osPoolAlloc(osPoolId pool_id);
|
||||
void *osPoolCAlloc(osPoolId pool_id);
|
||||
osStatus osPoolFree(osPoolId pool_id, void *block);
|
||||
osMessageQId osMessageCreate(const osMessageQDef_t *queue_def,
|
||||
osThreadId thread_id);
|
||||
osStatus osMessagePut(osMessageQId queue_id,
|
||||
uint32_t info,
|
||||
uint32_t millisec);
|
||||
osEvent osMessageGet(osMessageQId queue_id,
|
||||
uint32_t millisec);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module inline functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief To be or not to be.
|
||||
*/
|
||||
static inline int32_t osKernelRunning(void) {
|
||||
|
||||
return cmsis_os_started;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief System ticks since start.
|
||||
*/
|
||||
static inline uint32_t osKernelSysTick(void) {
|
||||
|
||||
return (uint32_t)chVTGetSystemTimeX();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the current thread.
|
||||
*/
|
||||
static inline osThreadId osThreadGetId(void) {
|
||||
|
||||
return (osThreadId)chThdGetSelfX();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Thread time slice yield.
|
||||
*/
|
||||
static inline osStatus osThreadYield(void) {
|
||||
|
||||
chThdYield();
|
||||
|
||||
return osOK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns priority of a thread.
|
||||
*/
|
||||
static inline osPriority osThreadGetPriority(osThreadId thread_id) {
|
||||
|
||||
return (osPriority)(NORMALPRIO - thread_id->prio);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Thread delay in milliseconds.
|
||||
*/
|
||||
static inline osStatus osDelay(uint32_t millisec) {
|
||||
|
||||
chThdSleepMilliseconds(millisec);
|
||||
|
||||
return osOK;
|
||||
}
|
||||
|
||||
#endif /* CMSIS_OS_H */
|
||||
|
||||
/** @} */
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
# List of the ChibiOS/RT CMSIS RTOS wrapper.
|
||||
CMSISRTOSSRC = ${CHIBIOS}/os/common/abstractions/cmsis_os/cmsis_os.c
|
||||
|
||||
CMSISRTOSINC = ${CHIBIOS}/os/common/abstractions/cmsis_os
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
# NASA CFE OSAL files.
|
||||
CFEOSALSRC = $(CHIBIOS)/os/common/abstractions/nasa_cfe/osal/src/osapi.c
|
||||
|
||||
CFEOSALINC = $(CHIBIOS)/os/common/abstractions/nasa_cfe/osal/include
|
||||
|
|
@ -0,0 +1,267 @@
|
|||
/*---------------------------------------------------------------------------
|
||||
**
|
||||
** Filename:
|
||||
** $Id: common_types.h 1.9 2014/01/14 16:28:32GMT-05:00 acudmore Exp $
|
||||
**
|
||||
** Copyright (c) 2004-2006, United States government as represented by the
|
||||
** administrator of the National Aeronautics Space Administration.
|
||||
** All rights reserved. This software was created at NASAs Goddard
|
||||
** Space Flight Center pursuant to government contracts.
|
||||
**
|
||||
** This is governed by the NASA Open Source Agreement and may be used,
|
||||
** distributed and modified only pursuant to the terms of that agreement.
|
||||
**
|
||||
** Purpose:
|
||||
** Unit specification for common types.
|
||||
**
|
||||
** Design Notes:
|
||||
** Assumes make file has defined processor family
|
||||
**
|
||||
** References:
|
||||
** Flight Software Branch C Coding Standard Version 1.0a
|
||||
**
|
||||
**
|
||||
** Notes:
|
||||
**
|
||||
**
|
||||
** $Date: 2014/01/14 16:28:32GMT-05:00 $
|
||||
** $Revision: 1.9 $
|
||||
** $Log: common_types.h $
|
||||
** Revision 1.9 2014/01/14 16:28:32GMT-05:00 acudmore
|
||||
** Fixed typo in macro for x86-64
|
||||
** Revision 1.8 2013/08/09 13:58:04GMT-05:00 acudmore
|
||||
** Added int64 type, added support for ARM arch, added 64 bit x86 arch, added arch check for GCC arch macros, added check for proper data type sizes
|
||||
** Revision 1.7 2013/07/25 10:01:29GMT-05:00 acudmore
|
||||
** Added C++ support
|
||||
** Revision 1.6 2012/04/11 09:19:03GMT-05:00 acudmore
|
||||
** added OS_USED attribute
|
||||
** Revision 1.5 2010/02/18 16:43:29EST acudmore
|
||||
** Added SPARC processor section
|
||||
** Removed special characters from comments that cause problems with some tools.
|
||||
** Revision 1.4 2010/02/18 16:41:39EST acudmore
|
||||
** Added a block of defines for GCC specific pragmas and extensions.
|
||||
** Removed RTEMS boolean related ifdefs
|
||||
** moved OS_PACK into the GCC specific block
|
||||
** Revision 1.3 2010/02/01 12:31:17EST acudmore
|
||||
** Added uint64 type
|
||||
** Revision 1.2 2009/07/07 16:30:05EDT acudmore
|
||||
** Removed conditinal comp. around boolean for m68k.
|
||||
** This will need to be done for all RTEMS targets
|
||||
** Revision 1.1 2009/06/02 10:04:58EDT acudmore
|
||||
** Initial revision
|
||||
** Member added to project c:/MKSDATA/MKS-REPOSITORY/MKS-OSAL-REPOSITORY/src/os/inc/project.pj
|
||||
** Revision 1.1 2008/04/20 22:35:58EDT ruperera
|
||||
** Initial revision
|
||||
** Member added to project c:/MKSDATA/MKS-REPOSITORY/MKS-OSAL-REPOSITORY/src/inc/project.pj
|
||||
** Revision 1.1 2007/10/16 16:14:49EDT apcudmore
|
||||
** Initial revision
|
||||
** Member added to project d:/mksdata/MKS-OSAL-REPOSITORY/src/inc/project.pj
|
||||
** Revision 1.2 2006/06/08 14:28:32EDT David Kobe (dlkobe)
|
||||
** Added NASA Open Source Legal Statement
|
||||
** Revision 1.1 2005/06/09 09:57:51GMT-05:00 rperera
|
||||
** Initial revision
|
||||
** Member added to project d:/mksdata/MKS-CFE-REPOSITORY/cfe-core/inc/project.pj
|
||||
** Revision 1.6 2005/03/24 19:20:52 rmcgraw
|
||||
** Wrapped the boolean defintion for all three processors with #ifndef _USING_RTEMS_INCLUDES_
|
||||
**
|
||||
** Revision 1.5 2005/03/10 16:59:08 acudmore
|
||||
** removed boolean prefix to TRUE and FALSE defintion to avoid vxWorks conflict.
|
||||
**
|
||||
** Revision 1.4 2005/03/07 20:23:34 acudmore
|
||||
** removed duplicate boolean definition
|
||||
**
|
||||
** Revision 1.3 2005/03/07 20:05:17 acudmore
|
||||
** updated with __PPC__ macro that gnu compiler uses
|
||||
**
|
||||
** Revision 1.2 2005/03/04 16:02:44 acudmore
|
||||
** added coldfire architecture
|
||||
**
|
||||
** Revision 1.1 2005/03/04 15:58:45 acudmore
|
||||
** Added common_types.h
|
||||
**
|
||||
**
|
||||
**
|
||||
**-------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef _common_types_
|
||||
#define _common_types_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Includes
|
||||
*/
|
||||
|
||||
/*
|
||||
** Macro Definitions
|
||||
*/
|
||||
|
||||
/*
|
||||
** Condition = TRUE is ok, Condition = FALSE is error
|
||||
*/
|
||||
#define CompileTimeAssert(Condition, Message) typedef char Message[(Condition) ? 1 : -1]
|
||||
|
||||
|
||||
/*
|
||||
** Define compiler specific macros
|
||||
** The __extension__ compiler pragma is required
|
||||
** for the uint64 type using GCC with the ANSI C90 standard.
|
||||
** Other macros can go in here as needed, for example alignment
|
||||
** pragmas.
|
||||
*/
|
||||
#if defined (__GNUC__)
|
||||
#define _EXTENSION_ __extension__
|
||||
#define OS_PACK __attribute__ ((packed))
|
||||
#define OS_ALIGN(n) __attribute__((aligned(n)))
|
||||
#define OS_USED __attribute__((used))
|
||||
#else
|
||||
#define _EXTENSION_
|
||||
#define OS_PACK
|
||||
#define OS_ALIGN(n)
|
||||
#define OS_USED
|
||||
#endif
|
||||
|
||||
#if defined(_ix86_) || defined (__i386__)
|
||||
/* ----------------------- Intel x86 processor family -------------------------*/
|
||||
/* Little endian */
|
||||
#undef _STRUCT_HIGH_BIT_FIRST_
|
||||
#define _STRUCT_LOW_BIT_FIRST_
|
||||
|
||||
typedef unsigned char boolean;
|
||||
typedef signed char int8;
|
||||
typedef short int int16;
|
||||
typedef long int int32;
|
||||
_EXTENSION_ typedef long long int int64;
|
||||
typedef unsigned char uint8;
|
||||
typedef unsigned short int uint16;
|
||||
typedef unsigned long int uint32;
|
||||
_EXTENSION_ typedef unsigned long long int uint64;
|
||||
|
||||
typedef unsigned long int cpuaddr;
|
||||
|
||||
#elif defined (_ix64_) || defined (__x86_64__)
|
||||
/* ----------------------- Intel/AMD x64 processor family -------------------------*/
|
||||
/* Little endian */
|
||||
#undef _STRUCT_HIGH_BIT_FIRST_
|
||||
#define _STRUCT_LOW_BIT_FIRST_
|
||||
|
||||
typedef unsigned char boolean;
|
||||
typedef signed char int8;
|
||||
typedef short int int16;
|
||||
typedef int int32;
|
||||
typedef long int int64;
|
||||
typedef unsigned char uint8;
|
||||
typedef unsigned short int uint16;
|
||||
typedef unsigned int uint32;
|
||||
typedef unsigned long int uint64;
|
||||
|
||||
typedef unsigned long int cpuaddr;
|
||||
|
||||
#elif defined(__PPC__) || defined (__ppc__)
|
||||
/* ----------------------- Motorola Power PC family ---------------------------*/
|
||||
/* The PPC can be programmed to be big or little endian, we assume native */
|
||||
/* Big endian */
|
||||
#define _STRUCT_HIGH_BIT_FIRST_
|
||||
#undef _STRUCT_LOW_BIT_FIRST_
|
||||
|
||||
typedef unsigned char boolean;
|
||||
typedef signed char int8;
|
||||
typedef short int int16;
|
||||
typedef long int int32;
|
||||
_EXTENSION_ typedef long long int int64;
|
||||
typedef unsigned char uint8;
|
||||
typedef unsigned short int uint16;
|
||||
typedef unsigned long int uint32;
|
||||
_EXTENSION_ typedef unsigned long long int uint64;
|
||||
|
||||
typedef unsigned long int cpuaddr;
|
||||
|
||||
#elif defined(_m68k_) || defined(__m68k__)
|
||||
/* ----------------------- Motorola m68k/Coldfire family ---------------------------*/
|
||||
/* Big endian */
|
||||
#define _STRUCT_HIGH_BIT_FIRST_
|
||||
#undef _STRUCT_LOW_BIT_FIRST_
|
||||
|
||||
typedef unsigned char boolean;
|
||||
typedef signed char int8;
|
||||
typedef short int int16;
|
||||
typedef long int int32;
|
||||
_EXTENSION_ typedef long long int int64;
|
||||
typedef unsigned char uint8;
|
||||
typedef unsigned short int uint16;
|
||||
typedef unsigned long int uint32;
|
||||
_EXTENSION_ typedef unsigned long long int uint64;
|
||||
|
||||
typedef unsigned long int cpuaddr;
|
||||
|
||||
#elif defined (__ARM__) || defined(__arm__)
|
||||
/* ----------------------- ARM processor family -------------------------*/
|
||||
/* Little endian */
|
||||
#undef _STRUCT_HIGH_BIT_FIRST_
|
||||
#define _STRUCT_LOW_BIT_FIRST_
|
||||
|
||||
typedef unsigned char boolean;
|
||||
typedef signed char int8;
|
||||
typedef short int int16;
|
||||
typedef long int int32;
|
||||
_EXTENSION_ typedef long long int int64;
|
||||
typedef unsigned char uint8;
|
||||
typedef unsigned short int uint16;
|
||||
typedef unsigned long int uint32;
|
||||
_EXTENSION_ typedef unsigned long long int uint64;
|
||||
|
||||
typedef unsigned long int cpuaddr;
|
||||
|
||||
#elif defined(__SPARC__) || defined (_sparc_)
|
||||
/* ----------------------- SPARC/LEON family ---------------------------*/
|
||||
/* SPARC Big endian */
|
||||
#define _STRUCT_HIGH_BIT_FIRST_
|
||||
#undef _STRUCT_LOW_BIT_FIRST_
|
||||
|
||||
typedef unsigned char boolean;
|
||||
typedef signed char int8;
|
||||
typedef short int int16;
|
||||
typedef long int int32;
|
||||
_EXTENSION_ typedef long long int int64;
|
||||
typedef unsigned char uint8;
|
||||
typedef unsigned short int uint16;
|
||||
typedef unsigned long int uint32;
|
||||
_EXTENSION_ typedef unsigned long long int uint64;
|
||||
|
||||
typedef unsigned long int cpuaddr;
|
||||
|
||||
#else /* not any of the above */
|
||||
#error undefined processor
|
||||
#endif /* processor types */
|
||||
|
||||
#ifndef NULL /* pointer to nothing */
|
||||
#define NULL ((void *) 0)
|
||||
#endif
|
||||
|
||||
#ifndef TRUE /* Boolean true */
|
||||
#define TRUE (1)
|
||||
#endif
|
||||
|
||||
#ifndef FALSE /* Boolean false */
|
||||
#define FALSE (0)
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Check Sizes
|
||||
*/
|
||||
CompileTimeAssert(sizeof(uint8)==1, TypeUint8WrongSize);
|
||||
CompileTimeAssert(sizeof(uint16)==2, TypeUint16WrongSize);
|
||||
CompileTimeAssert(sizeof(uint32)==4, TypeUint32WrongSize);
|
||||
CompileTimeAssert(sizeof(uint64)==8, TypeUint64WrongSize);
|
||||
CompileTimeAssert(sizeof(int8)==1, Typeint8WrongSize);
|
||||
CompileTimeAssert(sizeof(int16)==2, Typeint16WrongSize);
|
||||
CompileTimeAssert(sizeof(int32)==4, Typeint32WrongSize);
|
||||
CompileTimeAssert(sizeof(int64)==8, Typeint64WrongSize);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _common_types_ */
|
||||
|
|
@ -0,0 +1,274 @@
|
|||
/*
|
||||
** File: osapi-os-core.h
|
||||
**
|
||||
** Copyright (c) 2004-2006, United States government as represented by the
|
||||
** administrator of the National Aeronautics Space Administration.
|
||||
** All rights reserved. This software was created at NASAs Goddard
|
||||
** Space Flight Center pursuant to government contracts.
|
||||
**
|
||||
** This is governed by the NASA Open Source Agreement and may be used,
|
||||
** distributed and modified only pursuant to the terms of that agreement.
|
||||
**
|
||||
** Author: Ezra Yeheksli -Code 582/Raytheon
|
||||
**
|
||||
** Purpose: Contains functions prototype definitions and variables declarations
|
||||
** for the OS Abstraction Layer, Core OS module
|
||||
**
|
||||
** $Revision: 1.8 $
|
||||
**
|
||||
** $Date: 2013/07/25 10:02:00GMT-05:00 $
|
||||
**
|
||||
** $Log: osapi-os-core.h $
|
||||
** Revision 1.8 2013/07/25 10:02:00GMT-05:00 acudmore
|
||||
** removed circular include "osapi.h"
|
||||
** Revision 1.7 2012/04/11 09:30:48GMT-05:00 acudmore
|
||||
** Added OS_printf_enable and OS_printf_disable
|
||||
** Revision 1.6 2010/11/12 12:00:17EST acudmore
|
||||
** replaced copyright character with (c) and added open source notice where needed.
|
||||
** Revision 1.5 2010/11/10 15:33:14EST acudmore
|
||||
** Updated IntAttachHandler prototype
|
||||
** Revision 1.4 2010/03/08 12:06:28EST acudmore
|
||||
** added function pointer type to get rid of warnings
|
||||
** Revision 1.3 2010/02/01 12:37:15EST acudmore
|
||||
** added return code to OS API init
|
||||
** Revision 1.2 2009/08/04 10:49:09EDT acudmore
|
||||
**
|
||||
*/
|
||||
|
||||
#ifndef _osapi_core_
|
||||
#define _osapi_core_
|
||||
|
||||
#include <stdarg.h> /* for va_list */
|
||||
|
||||
/*difines constants for OS_BinSemCreate for state of semaphore */
|
||||
#define OS_SEM_FULL 1
|
||||
#define OS_SEM_EMPTY 0
|
||||
|
||||
/* #define for enabling floating point operations on a task*/
|
||||
#define OS_FP_ENABLED 1
|
||||
|
||||
/* tables for the properties of objects */
|
||||
|
||||
/*tasks */
|
||||
typedef struct
|
||||
{
|
||||
char name [OS_MAX_API_NAME];
|
||||
uint32 creator;
|
||||
uint32 stack_size;
|
||||
uint32 priority;
|
||||
uint32 OStask_id;
|
||||
}OS_task_prop_t;
|
||||
|
||||
/* queues */
|
||||
typedef struct
|
||||
{
|
||||
char name [OS_MAX_API_NAME];
|
||||
uint32 creator;
|
||||
}OS_queue_prop_t;
|
||||
|
||||
/* Binary Semaphores */
|
||||
typedef struct
|
||||
{
|
||||
char name [OS_MAX_API_NAME];
|
||||
uint32 creator;
|
||||
int32 value;
|
||||
}OS_bin_sem_prop_t;
|
||||
|
||||
/* Counting Semaphores */
|
||||
typedef struct
|
||||
{
|
||||
char name [OS_MAX_API_NAME];
|
||||
uint32 creator;
|
||||
int32 value;
|
||||
}OS_count_sem_prop_t;
|
||||
|
||||
/* Mutexes */
|
||||
typedef struct
|
||||
{
|
||||
char name [OS_MAX_API_NAME];
|
||||
uint32 creator;
|
||||
}OS_mut_sem_prop_t;
|
||||
|
||||
|
||||
/* struct for OS_GetLocalTime() */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32 seconds;
|
||||
uint32 microsecs;
|
||||
}OS_time_t;
|
||||
|
||||
/* heap info */
|
||||
typedef struct
|
||||
{
|
||||
uint32 free_bytes;
|
||||
uint32 free_blocks;
|
||||
uint32 largest_free_block;
|
||||
}OS_heap_prop_t;
|
||||
|
||||
|
||||
/* This typedef is for the OS_GetErrorName function, to ensure
|
||||
* everyone is making an array of the same length */
|
||||
|
||||
typedef char os_err_name_t[35];
|
||||
|
||||
/*
|
||||
** These typedefs are for the task entry point
|
||||
*/
|
||||
typedef void osal_task;
|
||||
typedef osal_task ((*osal_task_entry)(void));
|
||||
|
||||
/*
|
||||
** Exported Functions
|
||||
*/
|
||||
|
||||
/*
|
||||
** Initialization of API
|
||||
*/
|
||||
int32 OS_API_Init (void);
|
||||
|
||||
|
||||
/*
|
||||
** Task API
|
||||
*/
|
||||
|
||||
int32 OS_TaskCreate (uint32 *task_id, const char *task_name,
|
||||
osal_task_entry function_pointer,
|
||||
const uint32 *stack_pointer,
|
||||
uint32 stack_size,
|
||||
uint32 priority, uint32 flags);
|
||||
|
||||
int32 OS_TaskDelete (uint32 task_id);
|
||||
void OS_TaskExit (void);
|
||||
int32 OS_TaskInstallDeleteHandler(void *function_pointer);
|
||||
int32 OS_TaskDelay (uint32 millisecond);
|
||||
int32 OS_TaskSetPriority (uint32 task_id, uint32 new_priority);
|
||||
int32 OS_TaskRegister (void);
|
||||
uint32 OS_TaskGetId (void);
|
||||
int32 OS_TaskGetIdByName (uint32 *task_id, const char *task_name);
|
||||
int32 OS_TaskGetInfo (uint32 task_id, OS_task_prop_t *task_prop);
|
||||
|
||||
/*
|
||||
** Message Queue API
|
||||
*/
|
||||
|
||||
/*
|
||||
** Queue Create now has the Queue ID returned to the caller.
|
||||
*/
|
||||
int32 OS_QueueCreate (uint32 *queue_id, const char *queue_name,
|
||||
uint32 queue_depth, uint32 data_size, uint32 flags);
|
||||
int32 OS_QueueDelete (uint32 queue_id);
|
||||
int32 OS_QueueGet (uint32 queue_id, void *data, uint32 size,
|
||||
uint32 *size_copied, int32 timeout);
|
||||
int32 OS_QueuePut (uint32 queue_id, void *data, uint32 size,
|
||||
uint32 flags);
|
||||
int32 OS_QueueGetIdByName (uint32 *queue_id, const char *queue_name);
|
||||
int32 OS_QueueGetInfo (uint32 queue_id, OS_queue_prop_t *queue_prop);
|
||||
|
||||
/*
|
||||
** Semaphore API
|
||||
*/
|
||||
|
||||
int32 OS_BinSemCreate (uint32 *sem_id, const char *sem_name,
|
||||
uint32 sem_initial_value, uint32 options);
|
||||
int32 OS_BinSemFlush (uint32 sem_id);
|
||||
int32 OS_BinSemGive (uint32 sem_id);
|
||||
int32 OS_BinSemTake (uint32 sem_id);
|
||||
int32 OS_BinSemTimedWait (uint32 sem_id, uint32 msecs);
|
||||
int32 OS_BinSemDelete (uint32 sem_id);
|
||||
int32 OS_BinSemGetIdByName (uint32 *sem_id, const char *sem_name);
|
||||
int32 OS_BinSemGetInfo (uint32 sem_id, OS_bin_sem_prop_t *bin_prop);
|
||||
|
||||
int32 OS_CountSemCreate (uint32 *sem_id, const char *sem_name,
|
||||
uint32 sem_initial_value, uint32 options);
|
||||
int32 OS_CountSemGive (uint32 sem_id);
|
||||
int32 OS_CountSemTake (uint32 sem_id);
|
||||
int32 OS_CountSemTimedWait (uint32 sem_id, uint32 msecs);
|
||||
int32 OS_CountSemDelete (uint32 sem_id);
|
||||
int32 OS_CountSemGetIdByName (uint32 *sem_id, const char *sem_name);
|
||||
int32 OS_CountSemGetInfo (uint32 sem_id, OS_count_sem_prop_t *count_prop);
|
||||
|
||||
/*
|
||||
** Mutex API
|
||||
*/
|
||||
|
||||
int32 OS_MutSemCreate (uint32 *sem_id, const char *sem_name, uint32 options);
|
||||
int32 OS_MutSemGive (uint32 sem_id);
|
||||
int32 OS_MutSemTake (uint32 sem_id);
|
||||
int32 OS_MutSemDelete (uint32 sem_id);
|
||||
int32 OS_MutSemGetIdByName (uint32 *sem_id, const char *sem_name);
|
||||
int32 OS_MutSemGetInfo (uint32 sem_id, OS_mut_sem_prop_t *mut_prop);
|
||||
|
||||
/*
|
||||
** OS Time/Tick related API
|
||||
*/
|
||||
|
||||
int32 OS_Milli2Ticks (uint32 milli_seconds);
|
||||
int32 OS_Tick2Micros (void);
|
||||
int32 OS_GetLocalTime (OS_time_t *time_struct);
|
||||
int32 OS_SetLocalTime (OS_time_t *time_struct);
|
||||
|
||||
/*
|
||||
** Exception API
|
||||
*/
|
||||
|
||||
int32 OS_ExcAttachHandler (uint32 ExceptionNumber,
|
||||
void (*ExceptionHandler)(uint32, uint32 *,uint32),
|
||||
int32 parameter);
|
||||
int32 OS_ExcEnable (int32 ExceptionNumber);
|
||||
int32 OS_ExcDisable (int32 ExceptionNumber);
|
||||
|
||||
/*
|
||||
** Floating Point Unit API
|
||||
*/
|
||||
|
||||
int32 OS_FPUExcAttachHandler (uint32 ExceptionNumber, void * ExceptionHandler ,
|
||||
int32 parameter);
|
||||
int32 OS_FPUExcEnable (int32 ExceptionNumber);
|
||||
int32 OS_FPUExcDisable (int32 ExceptionNumber);
|
||||
int32 OS_FPUExcSetMask (uint32 mask);
|
||||
int32 OS_FPUExcGetMask (uint32 *mask);
|
||||
|
||||
/*
|
||||
** Interrupt API
|
||||
*/
|
||||
int32 OS_IntAttachHandler (uint32 InterruptNumber, osal_task_entry InterruptHandler, int32 parameter);
|
||||
int32 OS_IntUnlock (int32 IntLevel);
|
||||
int32 OS_IntLock (void);
|
||||
|
||||
int32 OS_IntEnable (int32 Level);
|
||||
int32 OS_IntDisable (int32 Level);
|
||||
|
||||
int32 OS_IntSetMask (uint32 mask);
|
||||
int32 OS_IntGetMask (uint32 *mask);
|
||||
int32 OS_IntAck (int32 InterruptNumber);
|
||||
|
||||
/*
|
||||
** Shared memory API
|
||||
*/
|
||||
int32 OS_ShMemInit (void);
|
||||
int32 OS_ShMemCreate (uint32 *Id, uint32 NBytes, char* SegName);
|
||||
int32 OS_ShMemSemTake (uint32 Id);
|
||||
int32 OS_ShMemSemGive (uint32 Id);
|
||||
int32 OS_ShMemAttach (uint32 * Address, uint32 Id);
|
||||
int32 OS_ShMemGetIdByName (uint32 *ShMemId, const char *SegName );
|
||||
|
||||
/*
|
||||
** Heap API
|
||||
*/
|
||||
int32 OS_HeapGetInfo (OS_heap_prop_t *heap_prop);
|
||||
|
||||
/*
|
||||
** API for useful debugging function
|
||||
*/
|
||||
int32 OS_GetErrorName (int32 error_num, os_err_name_t* err_name);
|
||||
|
||||
|
||||
/*
|
||||
** Abstraction for printf statements
|
||||
*/
|
||||
void OS_printf( const char *string, ...);
|
||||
void OS_printf_disable(void);
|
||||
void OS_printf_enable(void);
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file osapi-os-custom.h
|
||||
* @brief Custom OSAPI extensions header.
|
||||
*
|
||||
* @addtogroup osapi-custom
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef OSAPI_CUSTOM_H
|
||||
#define OSAPI_CUSTOM_H
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module constants. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module pre-compile time settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module data structures and types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module macros. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
void OS_set_printf(int (*printf)(const char *fmt, ...));
|
||||
boolean OS_TaskDeleteCheck(void);
|
||||
int32 OS_TaskWait(uint32 task_id);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module inline functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#endif /* OSAPI_CUSTOM_H */
|
||||
|
||||
/** @} */
|
||||
|
|
@ -0,0 +1,419 @@
|
|||
/*
|
||||
** File: osapi-os-filesys.h
|
||||
**
|
||||
** Copyright (c) 2004-2006, United States government as represented by the
|
||||
** administrator of the National Aeronautics Space Administration.
|
||||
** All rights reserved. This software was created at NASAs Goddard
|
||||
** Space Flight Center pursuant to government contracts.
|
||||
**
|
||||
** This is governed by the NASA Open Source Agreement and may be used,
|
||||
** distributed and modified only pursuant to the terms of that agreement.
|
||||
**
|
||||
** Author: Alan Cudmore Code 582
|
||||
**
|
||||
** Purpose: Contains functions prototype definitions and variables declarations
|
||||
** for the OS Abstraction Layer, File System module
|
||||
**
|
||||
** $Revision: 1.11 $
|
||||
**
|
||||
** $Date: 2013/12/16 12:57:41GMT-05:00 $
|
||||
**
|
||||
** $Log: osapi-os-filesys.h $
|
||||
** Revision 1.11 2013/12/16 12:57:41GMT-05:00 acudmore
|
||||
** Added macros for Volume name length and physical device name length
|
||||
** Revision 1.10 2013/07/29 12:05:48GMT-05:00 acudmore
|
||||
** Added define for device and volume name length
|
||||
** Revision 1.9 2013/07/25 14:31:21GMT-05:00 acudmore
|
||||
** Added prototype and datatype for OS_GetFsInfo
|
||||
** Revision 1.8 2011/12/05 12:04:21GMT-05:00 acudmore
|
||||
** Added OS_rewinddir API
|
||||
** Revision 1.7 2011/04/05 16:01:12EDT acudmore
|
||||
** Added OS_CloseFileByName and OS_CloseAllFiles
|
||||
** Revision 1.6 2010/11/15 11:04:38EST acudmore
|
||||
** Added OS_FileOpenCheck function.
|
||||
** Revision 1.5 2010/11/12 12:00:18EST acudmore
|
||||
** replaced copyright character with (c) and added open source notice where needed.
|
||||
** Revision 1.4 2010/02/01 12:28:57EST acudmore
|
||||
** Added OS_fsBytesFree API
|
||||
** Revision 1.3 2010/01/25 14:44:26EST acudmore
|
||||
** renamed "new" variable to avoid C++ reserved name conflict.
|
||||
** Revision 1.2 2009/07/14 15:16:05EDT acudmore
|
||||
** Added OS_TranslatePath to the API
|
||||
** Revision 1.1 2008/04/20 22:36:01EDT ruperera
|
||||
** Initial revision
|
||||
** Member added to project c:/MKSDATA/MKS-REPOSITORY/MKS-OSAL-REPOSITORY/src/os/inc/project.pj
|
||||
** Revision 1.1 2007/10/16 16:14:52EDT apcudmore
|
||||
** Initial revision
|
||||
** Member added to project d:/mksdata/MKS-OSAL-REPOSITORY/src/os/inc/project.pj
|
||||
** Revision 1.1 2007/08/24 13:43:24EDT apcudmore
|
||||
** Initial revision
|
||||
** Member added to project d:/mksdata/MKS-CFE-PROJECT/fsw/cfe-core/os/inc/project.pj
|
||||
** Revision 1.17 2007/06/07 09:59:14EDT njyanchik
|
||||
** I replaced the second OS_cp definition with OS_mv
|
||||
** Revision 1.16 2007/06/05 16:25:33EDT apcudmore
|
||||
** Increased Number of volume table entries from 10 to 14.
|
||||
** Added 2 extra EEPROM disk mappings to RAD750 Volume table + 2 spares
|
||||
** Added 4 spares to every other volume table.
|
||||
** Revision 1.15 2007/05/25 09:17:56EDT njyanchik
|
||||
** I added the rmfs call to the OSAL and updated the unit test stubs to match
|
||||
** Revision 1.14 2007/03/21 10:15:29EST njyanchik
|
||||
** I mistakenly put the wrong length in for the path in the OS_FDTableEntry structure, and I added
|
||||
** some code that will set and out of range file descriptors .IsValid flag to false in OS_FDGetInfo
|
||||
** Revision 1.13 2007/03/06 11:52:46EST njyanchik
|
||||
** This change goes with the previous CP, I forgot to include it
|
||||
** Revision 1.12 2007/02/28 14:57:45EST njyanchik
|
||||
** The updates for supporting copying and moving files are now supported
|
||||
** Revision 1.11 2007/02/27 15:22:11EST njyanchik
|
||||
** This CP has the initial import of the new file descripor table mechanism
|
||||
** Revision 1.10 2006/12/20 10:27:09EST njyanchik
|
||||
** This change package incorporates all the changes necessary for the addition
|
||||
** of a new API to get the real physical drive undernieth a mount point
|
||||
** Revision 1.9 2006/11/14 14:44:28GMT-05:00 njyanchik
|
||||
** Checks were added to the OS fs calls that look at the return of a function that
|
||||
** changes the name of paths from abstracted to local path names.
|
||||
** Revision 1.8 2006/10/30 16:12:19GMT-05:00 apcudmore
|
||||
** Updated Compact flash and RAM device names for vxWorks 6.2 changes.
|
||||
** Revision 1.7 2006/10/25 11:31:18EDT njyanchik
|
||||
** This CP incorporates changes to every bsp_voltab.c file. I increased the number
|
||||
** entries in the volume table to 10. I also changed the #define in the os_filesys.h
|
||||
** file for the number of entries to match.
|
||||
**
|
||||
** This update also includes adding the prototype for OS_initfs in os_filesys.h
|
||||
** Revision 1.6 2006/09/26 09:03:46GMT-05:00 njyanchik
|
||||
** Contains the initial import of the ES Shell commands interface
|
||||
** Revision 1.5 2006/07/25 15:37:52EDT njyanchik
|
||||
** It turns out the both the FS app and the OSAL were incorrect where file descriptors are
|
||||
** concerned. the file descriptors should be int32 across the board.
|
||||
** Revision 1.4 2006/01/20 11:56:18EST njyanchik
|
||||
** Fixed header file information to match api document
|
||||
** Revision 1.26 2005/07/12 17:13:56 nyanchik
|
||||
** Moved the Volume table to a bsp table in the arch directories.
|
||||
**
|
||||
** Revision 1.2 2005/07/11 16:26:57EDT apcudmore
|
||||
** OSAPI 2.0 integration
|
||||
** Revision 1.25 2005/07/06 16:11:17 nyanchik
|
||||
** *** empty log message ***
|
||||
**
|
||||
** Revision 1.24 2005/07/05 18:34:55 nyanchik
|
||||
** fixed issues found in code walkthrogh. Also removed the OS_Info* functions that are going in the BSP
|
||||
**
|
||||
** Revision 1.23 2005/06/17 19:46:34 nyanchik
|
||||
** added new file system style to linux and rtems.
|
||||
**
|
||||
** Revision 1.22 2005/06/15 16:43:48 nyanchik
|
||||
** added extra parenthesis for the .h file # defines
|
||||
**
|
||||
** Revision 1.21 2005/06/06 14:17:42 nyanchik
|
||||
** added headers to osapi-os-core.h and osapi-os-filesys.h
|
||||
**
|
||||
** Revision 1.20 2005/06/02 18:04:24 nyanchik
|
||||
** *** empty log message ***
|
||||
**
|
||||
** Revision 1.1 2005/03/15 18:26:32 nyanchik
|
||||
** *** empty log message ***
|
||||
**
|
||||
**
|
||||
** Date Written:
|
||||
**
|
||||
**
|
||||
*/
|
||||
|
||||
#ifndef _osapi_filesys_
|
||||
#define _osapi_filesys_
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <dirent.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#define OS_READ_ONLY 0
|
||||
#define OS_WRITE_ONLY 1
|
||||
#define OS_READ_WRITE 2
|
||||
|
||||
#define OS_SEEK_SET 0
|
||||
#define OS_SEEK_CUR 1
|
||||
#define OS_SEEK_END 2
|
||||
|
||||
#define OS_CHK_ONLY 0
|
||||
#define OS_REPAIR 1
|
||||
|
||||
#define FS_BASED 0
|
||||
#define RAM_DISK 1
|
||||
#define EEPROM_DISK 2
|
||||
#define ATA_DISK 3
|
||||
|
||||
|
||||
/*
|
||||
** Number of entries in the internal volume table
|
||||
*/
|
||||
#define NUM_TABLE_ENTRIES 14
|
||||
|
||||
/*
|
||||
** Length of a Device and Volume name
|
||||
*/
|
||||
#define OS_FS_DEV_NAME_LEN 32
|
||||
#define OS_FS_PHYS_NAME_LEN 64
|
||||
#define OS_FS_VOL_NAME_LEN 32
|
||||
|
||||
|
||||
/*
|
||||
** Defines for File System Calls
|
||||
*/
|
||||
#define OS_FS_SUCCESS 0
|
||||
#define OS_FS_ERROR (-1)
|
||||
#define OS_FS_ERR_INVALID_POINTER (-2)
|
||||
#define OS_FS_ERR_PATH_TOO_LONG (-3)
|
||||
#define OS_FS_ERR_NAME_TOO_LONG (-4)
|
||||
#define OS_FS_UNIMPLEMENTED (-5)
|
||||
#define OS_FS_ERR_DRIVE_NOT_CREATED (-6)
|
||||
#define OS_FS_ERR_DEVICE_NOT_FREE (-7)
|
||||
#define OS_FS_ERR_PATH_INVALID (-8)
|
||||
#define OS_FS_ERR_NO_FREE_FDS (-9)
|
||||
#define OS_FS_ERR_INVALID_FD (-10)
|
||||
|
||||
/* This typedef is for the OS_FS_GetErrorName function, to ensure
|
||||
* everyone is making an array of the same length */
|
||||
|
||||
typedef char os_fs_err_name_t[35];
|
||||
|
||||
|
||||
/*
|
||||
** Internal structure of the OS volume table for
|
||||
** mounted file systems and path translation
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
char DeviceName [OS_FS_DEV_NAME_LEN];
|
||||
char PhysDevName [OS_FS_PHYS_NAME_LEN];
|
||||
uint32 VolumeType;
|
||||
uint8 VolatileFlag;
|
||||
uint8 FreeFlag;
|
||||
uint8 IsMounted;
|
||||
char VolumeName [OS_FS_VOL_NAME_LEN];
|
||||
char MountPoint [OS_MAX_PATH_LEN];
|
||||
uint32 BlockSize;
|
||||
|
||||
}OS_VolumeInfo_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int32 OSfd; /* The underlying OS's file descriptor */
|
||||
char Path[OS_MAX_PATH_LEN]; /* The path of the file opened */
|
||||
uint32 User; /* The task id of the task who opened the file*/
|
||||
uint8 IsValid; /* Whether or not this entry is valid */
|
||||
}OS_FDTableEntry;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32 MaxFds; /* Total number of file descriptors */
|
||||
uint32 FreeFds; /* Total number that are free */
|
||||
uint32 MaxVolumes; /* Maximum number of volumes */
|
||||
uint32 FreeVolumes; /* Total number of volumes free */
|
||||
} os_fsinfo_t;
|
||||
|
||||
/* modified to posix calls, since all of the
|
||||
* applicable OSes use the posix calls */
|
||||
|
||||
typedef struct stat os_fstat_t;
|
||||
typedef DIR* os_dirp_t;
|
||||
typedef struct dirent os_dirent_t;
|
||||
/* still don't know what this should be*/
|
||||
typedef unsigned long int os_fshealth_t;
|
||||
|
||||
/*
|
||||
* Exported Functions
|
||||
*/
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
** Standard File system API
|
||||
******************************************************************************/
|
||||
/*
|
||||
* Initializes the File System functions
|
||||
*/
|
||||
|
||||
int32 OS_FS_Init(void);
|
||||
|
||||
/*
|
||||
* Creates a file specified by path
|
||||
*/
|
||||
int32 OS_creat (const char *path, int32 access);
|
||||
|
||||
/*
|
||||
* Opend a file for reading/writing. Returns file descriptor
|
||||
*/
|
||||
int32 OS_open (const char *path, int32 access, uint32 mode);
|
||||
|
||||
/*
|
||||
* Closes an open file.
|
||||
*/
|
||||
int32 OS_close (int32 filedes);
|
||||
|
||||
/*
|
||||
* Reads nbytes bytes from file into buffer
|
||||
*/
|
||||
int32 OS_read (int32 filedes, void *buffer, uint32 nbytes);
|
||||
|
||||
/*
|
||||
* Write nybytes bytes of buffer into the file
|
||||
*/
|
||||
int32 OS_write (int32 filedes, void *buffer, uint32 nbytes);
|
||||
|
||||
/*
|
||||
* Changes the permissions of a file
|
||||
*/
|
||||
int32 OS_chmod (const char *path, uint32 access);
|
||||
|
||||
/*
|
||||
* Returns file status information in filestats
|
||||
*/
|
||||
int32 OS_stat (const char *path, os_fstat_t *filestats);
|
||||
|
||||
/*
|
||||
* Seeks to the specified position of an open file
|
||||
*/
|
||||
int32 OS_lseek (int32 filedes, int32 offset, uint32 whence);
|
||||
|
||||
/*
|
||||
* Removes a file from the file system
|
||||
*/
|
||||
int32 OS_remove (const char *path);
|
||||
|
||||
/*
|
||||
* Renames a file in the file system
|
||||
*/
|
||||
int32 OS_rename (const char *old_filename, const char *new_filename);
|
||||
|
||||
/*
|
||||
* copies a single file from src to dest
|
||||
*/
|
||||
int32 OS_cp (const char *src, const char *dest);
|
||||
|
||||
/*
|
||||
* moves a single file from src to dest
|
||||
*/
|
||||
int32 OS_mv (const char *src, const char *dest);
|
||||
|
||||
/*
|
||||
* Copies the info of an open file to the structure
|
||||
*/
|
||||
int32 OS_FDGetInfo (int32 filedes, OS_FDTableEntry *fd_prop);
|
||||
|
||||
/*
|
||||
** Check to see if a file is open
|
||||
*/
|
||||
int32 OS_FileOpenCheck(char *Filename);
|
||||
|
||||
/*
|
||||
** Close all open files
|
||||
*/
|
||||
int32 OS_CloseAllFiles(void);
|
||||
|
||||
/*
|
||||
** Close a file by filename
|
||||
*/
|
||||
int32 OS_CloseFileByName(char *Filename);
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
** Directory API
|
||||
******************************************************************************/
|
||||
|
||||
/*
|
||||
* Makes a new directory
|
||||
*/
|
||||
int32 OS_mkdir (const char *path, uint32 access);
|
||||
|
||||
/*
|
||||
* Opens a directory for searching
|
||||
*/
|
||||
os_dirp_t OS_opendir (const char *path);
|
||||
|
||||
/*
|
||||
* Closes an open directory
|
||||
*/
|
||||
int32 OS_closedir(os_dirp_t directory);
|
||||
|
||||
/*
|
||||
* Rewinds an open directory
|
||||
*/
|
||||
void OS_rewinddir(os_dirp_t directory);
|
||||
|
||||
/*
|
||||
* Reads the next object in the directory
|
||||
*/
|
||||
os_dirent_t * OS_readdir (os_dirp_t directory);
|
||||
|
||||
/*
|
||||
* Removes an empty directory from the file system.
|
||||
*/
|
||||
int32 OS_rmdir (const char *path);
|
||||
|
||||
/******************************************************************************
|
||||
** System Level API
|
||||
******************************************************************************/
|
||||
/*
|
||||
* Makes a file system
|
||||
*/
|
||||
int32 OS_mkfs (char *address,char *devname, char *volname,
|
||||
uint32 blocksize, uint32 numblocks);
|
||||
/*
|
||||
* Mounts a file system
|
||||
*/
|
||||
int32 OS_mount (const char *devname, char *mountpoint);
|
||||
|
||||
/*
|
||||
* Initializes an existing file system
|
||||
*/
|
||||
int32 OS_initfs (char *address,char *devname, char *volname,
|
||||
uint32 blocksize, uint32 numblocks);
|
||||
|
||||
/*
|
||||
* removes a file system
|
||||
*/
|
||||
int32 OS_rmfs (char *devname);
|
||||
|
||||
/*
|
||||
* Unmounts a mounted file system
|
||||
*/
|
||||
int32 OS_unmount (const char *mountpoint);
|
||||
|
||||
/*
|
||||
* Returns the number of free blocks in a file system
|
||||
*/
|
||||
int32 OS_fsBlocksFree (const char *name);
|
||||
|
||||
/*
|
||||
** Returns the number of free bytes in a file system
|
||||
** Note the 64 bit data type to support filesystems that
|
||||
** are greater than 4 Gigabytes
|
||||
*/
|
||||
int32 OS_fsBytesFree (const char *name, uint64 *bytes_free);
|
||||
|
||||
/*
|
||||
* Checks the health of a file system and repairs it if neccesary
|
||||
*/
|
||||
os_fshealth_t OS_chkfs (const char *name, boolean repair);
|
||||
|
||||
/*
|
||||
* Returns in the parameter the physical drive underneith the mount point
|
||||
*/
|
||||
int32 OS_FS_GetPhysDriveName (char * PhysDriveName, char * MountPoint);
|
||||
|
||||
/*
|
||||
** Translates a OSAL Virtual file system path to a host Local path
|
||||
*/
|
||||
int32 OS_TranslatePath ( const char *VirtualPath, char *LocalPath);
|
||||
|
||||
/*
|
||||
** Returns information about the file system in an os_fsinfo_t
|
||||
*/
|
||||
int32 OS_GetFsInfo(os_fsinfo_t *filesys_info);
|
||||
|
||||
/******************************************************************************
|
||||
** Shell API
|
||||
******************************************************************************/
|
||||
|
||||
/* executes the shell command passed into is and writes the output of that
|
||||
* command to the file specified by the given OSAPI file descriptor */
|
||||
int32 OS_ShellOutputToFile(char* Cmd, int32 OS_fd);
|
||||
#endif
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
/*
|
||||
** File: osapi-os-loader.h
|
||||
**
|
||||
** Copyright (c) 2004-2006, United States government as represented by the
|
||||
** administrator of the National Aeronautics Space Administration.
|
||||
** All rights reserved. This software was created at NASAs Goddard
|
||||
** Space Flight Center pursuant to government contracts.
|
||||
**
|
||||
** This is governed by the NASA Open Source Agreement and may be used,
|
||||
** distributed and modified only pursuant to the terms of that agreement.
|
||||
**
|
||||
** Author: Alan Cudmore - Code 582
|
||||
**
|
||||
** Purpose: Contains functions prototype definitions and variables declarations
|
||||
** for the OS Abstraction Layer, Object file loader API
|
||||
**
|
||||
** $Revision: 1.5 $
|
||||
**
|
||||
** $Date: 2013/07/25 10:02:08GMT-05:00 $
|
||||
**
|
||||
** $Log: osapi-os-loader.h $
|
||||
** Revision 1.5 2013/07/25 10:02:08GMT-05:00 acudmore
|
||||
** removed circular include "osapi.h"
|
||||
** Revision 1.4 2010/11/12 12:00:18GMT-05:00 acudmore
|
||||
** replaced copyright character with (c) and added open source notice where needed.
|
||||
** Revision 1.3 2010/02/01 12:38:06EST acudmore
|
||||
** added return code to OS_ModuleTableInit
|
||||
** Revision 1.2 2008/06/20 15:13:43EDT apcudmore
|
||||
** Checked in new Module loader/symbol table functionality
|
||||
** Revision 1.1 2008/04/20 22:36:02EDT ruperera
|
||||
** Initial revision
|
||||
** Member added to project c:/MKSDATA/MKS-REPOSITORY/MKS-OSAL-REPOSITORY/src/os/inc/project.pj
|
||||
** Revision 1.1 2008/02/07 11:08:24EST apcudmore
|
||||
** Initial revision
|
||||
** Member added to project d:/mksdata/MKS-OSAL-REPOSITORY/src/os/inc/project.pj
|
||||
**
|
||||
**
|
||||
*/
|
||||
|
||||
#ifndef _osapi_loader_
|
||||
#define _osapi_loader_
|
||||
|
||||
/*
|
||||
** Defines
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
** Typedefs
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32 valid;
|
||||
uint32 code_address;
|
||||
uint32 code_size;
|
||||
uint32 data_address;
|
||||
uint32 data_size;
|
||||
uint32 bss_address;
|
||||
uint32 bss_size;
|
||||
uint32 flags;
|
||||
} OS_module_address_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int free;
|
||||
uint32 entry_point;
|
||||
uint32 host_module_id;
|
||||
char filename[OS_MAX_PATH_LEN];
|
||||
char name[OS_MAX_API_NAME];
|
||||
OS_module_address_t addr;
|
||||
|
||||
} OS_module_record_t;
|
||||
|
||||
/*
|
||||
** Loader API
|
||||
*/
|
||||
int32 OS_ModuleTableInit ( void );
|
||||
|
||||
int32 OS_SymbolLookup (uint32 *symbol_address, char *symbol_name );
|
||||
|
||||
int32 OS_SymbolTableDump ( char *filename, uint32 size_limit );
|
||||
|
||||
int32 OS_ModuleLoad ( uint32 *module_id, char *module_name, char *filename );
|
||||
|
||||
int32 OS_ModuleUnload ( uint32 module_id );
|
||||
|
||||
int32 OS_ModuleInfo ( uint32 module_id, OS_module_record_t *module_info );
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
** File: osapi-os-net.h
|
||||
**
|
||||
** Copyright (c) 2004-2006, United States government as represented by the
|
||||
** administrator of the National Aeronautics Space Administration.
|
||||
** All rights reserved. This software was created at NASAs Goddard
|
||||
** Space Flight Center pursuant to government contracts.
|
||||
**
|
||||
** This is governed by the NASA Open Source Agreement and may be used,
|
||||
** distributed and modified only pursuant to the terms of that agreement.
|
||||
**
|
||||
** Author: Alan Cudmore Code 582
|
||||
**
|
||||
** Purpose: Contains functions prototype definitions and variables declarations
|
||||
** for the OS Abstraction Layer, Network Module
|
||||
**
|
||||
** $Revision: 1.2 $
|
||||
**
|
||||
** $Date: 2010/11/12 12:00:19GMT-05:00 $
|
||||
**
|
||||
** $Log: osapi-os-net.h $
|
||||
** Revision 1.2 2010/11/12 12:00:19GMT-05:00 acudmore
|
||||
** replaced copyright character with (c) and added open source notice where needed.
|
||||
** Revision 1.1 2008/04/20 22:36:02EDT ruperera
|
||||
** Initial revision
|
||||
** Member added to project c:/MKSDATA/MKS-REPOSITORY/MKS-OSAL-REPOSITORY/src/os/inc/project.pj
|
||||
** Revision 1.1 2007/10/16 16:14:52EDT apcudmore
|
||||
** Initial revision
|
||||
** Member added to project d:/mksdata/MKS-OSAL-REPOSITORY/src/os/inc/project.pj
|
||||
** Revision 1.1 2007/08/24 13:43:25EDT apcudmore
|
||||
** Initial revision
|
||||
** Member added to project d:/mksdata/MKS-CFE-PROJECT/fsw/cfe-core/os/inc/project.pj
|
||||
** Revision 1.3 2006/01/20 11:56:18EST njyanchik
|
||||
** Fixed header file information to match api document
|
||||
** Revision 1.4 2005/06/07 16:49:31 nyanchik
|
||||
** changed returns code for osapi.c to all int32 from uint32
|
||||
**
|
||||
** Revision 1.3 2005/03/22 19:04:54 acudmore
|
||||
** fixed uint type
|
||||
**
|
||||
** Revision 1.2 2005/03/22 18:59:33 acudmore
|
||||
** updated prototype
|
||||
**
|
||||
** Revision 1.1 2005/03/22 18:58:51 acudmore
|
||||
** added osapi network interface
|
||||
**
|
||||
** Revision 1.1 2005/03/15 18:26:32 nyanchik
|
||||
** *** empty log message ***
|
||||
**
|
||||
**
|
||||
** Date Written:
|
||||
**
|
||||
**
|
||||
*/
|
||||
#ifndef _osapi_network_
|
||||
#define _osapi_network_
|
||||
|
||||
int32 OS_NetworkGetID (void);
|
||||
int32 OS_NetworkGetHostName (char *host_name, uint32 name_len);
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
** File: osapi-os-timer.h
|
||||
**
|
||||
** Copyright (c) 2004-2006, United States government as represented by the
|
||||
** administrator of the National Aeronautics Space Administration.
|
||||
** All rights reserved. This software was created at NASAs Goddard
|
||||
** Space Flight Center pursuant to government contracts.
|
||||
**
|
||||
** This is governed by the NASA Open Source Agreement and may be used,
|
||||
** distributed and modified only pursuant to the terms of that agreement.
|
||||
**
|
||||
** Author: Alan Cudmore - Code 582
|
||||
**
|
||||
** Purpose: Contains functions prototype definitions and variable declarations
|
||||
** for the OS Abstraction Layer, Timer API
|
||||
**
|
||||
** $Revision: 1.5 $
|
||||
**
|
||||
** $Date: 2013/07/25 10:02:20GMT-05:00 $
|
||||
**
|
||||
** $Log: osapi-os-timer.h $
|
||||
** Revision 1.5 2013/07/25 10:02:20GMT-05:00 acudmore
|
||||
** removed circular include "osapi.h"
|
||||
** Revision 1.4 2010/11/12 12:00:19GMT-05:00 acudmore
|
||||
** replaced copyright character with (c) and added open source notice where needed.
|
||||
** Revision 1.3 2010/02/01 12:38:34EST acudmore
|
||||
** Added return code to OS_TimerAPIInit
|
||||
** Revision 1.2 2008/08/26 13:52:52EDT apcudmore
|
||||
** removed linux specific define
|
||||
** Revision 1.1 2008/08/20 16:12:07EDT apcudmore
|
||||
** Initial revision
|
||||
** Member added to project c:/MKSDATA/MKS-REPOSITORY/MKS-OSAL-REPOSITORY/src/os/inc/project.pj
|
||||
**
|
||||
**
|
||||
*/
|
||||
|
||||
#ifndef _osapi_timer_
|
||||
#define _osapi_timer_
|
||||
|
||||
/*
|
||||
** Typedefs
|
||||
*/
|
||||
typedef void (*OS_TimerCallback_t)(uint32 timer_id);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char name[OS_MAX_API_NAME];
|
||||
uint32 creator;
|
||||
uint32 start_time;
|
||||
uint32 interval_time;
|
||||
uint32 accuracy;
|
||||
|
||||
} OS_timer_prop_t;
|
||||
|
||||
|
||||
/*
|
||||
** Timer API
|
||||
*/
|
||||
int32 OS_TimerAPIInit (void);
|
||||
|
||||
int32 OS_TimerCreate (uint32 *timer_id, const char *timer_name, uint32 *clock_accuracy, OS_TimerCallback_t callback_ptr);
|
||||
int32 OS_TimerSet (uint32 timer_id, uint32 start_msec, uint32 interval_msec);
|
||||
int32 OS_TimerDelete (uint32 timer_id);
|
||||
|
||||
int32 OS_TimerGetIdByName (uint32 *timer_id, const char *timer_name);
|
||||
int32 OS_TimerGetInfo (uint32 timer_id, OS_timer_prop_t *timer_prop);
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
/************************************************************************
|
||||
** File:
|
||||
** $Id: osapi-version.h 1.11 2014/05/02 13:53:14GMT-05:00 acudmore Exp $
|
||||
**
|
||||
** Copyright (c) 2004-2006, United States government as represented by the
|
||||
** administrator of the National Aeronautics Space Administration.
|
||||
** All rights reserved. This software was created at NASAs Goddard
|
||||
** Space Flight Center pursuant to government contracts.
|
||||
**
|
||||
** This is governed by the NASA Open Source Agreement and may be used,
|
||||
** distributed and modified only pursuant to the terms of that agreement.
|
||||
**
|
||||
** Purpose:
|
||||
** The OSAL version numbers
|
||||
**
|
||||
** Notes:
|
||||
**
|
||||
** $Log: osapi-version.h $
|
||||
** Revision 1.11 2014/05/02 13:53:14GMT-05:00 acudmore
|
||||
** Updated version to 4.1.1
|
||||
** Revision 1.10 2014/01/23 16:33:31GMT-05:00 acudmore
|
||||
** Update for 4.1 release
|
||||
** Revision 1.9 2013/01/16 14:35:18GMT-05:00 acudmore
|
||||
** updated version label
|
||||
** Revision 1.8 2012/04/16 14:57:04GMT-05:00 acudmore
|
||||
** Updated version label to 3.5.0.0
|
||||
** Revision 1.7 2012/01/17 16:04:29EST acudmore
|
||||
** Updated version to 3.4.1
|
||||
** Revision 1.6 2011/12/05 15:45:16EST acudmore
|
||||
** Updated version label to 3.4.0
|
||||
** Initial revision
|
||||
** Member added to project c:/MKSDATA/MKS-REPOSITORY/MKS-OSAL-REPOSITORY/src/os/inc/project.pj
|
||||
**
|
||||
*************************************************************************/
|
||||
#ifndef _osapi_version_h_
|
||||
#define _osapi_version_h_
|
||||
|
||||
#define OS_MAJOR_VERSION (4)
|
||||
#define OS_MINOR_VERSION (1)
|
||||
#define OS_REVISION (1)
|
||||
#define OS_MISSION_REV (0)
|
||||
|
||||
|
||||
#endif /* _osapi_version_h_ */
|
||||
|
||||
/************************/
|
||||
/* End of File Comment */
|
||||
/************************/
|
||||
|
|
@ -0,0 +1,143 @@
|
|||
/*
|
||||
** File: osapi.h
|
||||
**
|
||||
** Copyright (c) 2004-2006, United States government as represented by the
|
||||
** administrator of the National Aeronautics Space Administration.
|
||||
** All rights reserved. This software was created at NASAs Goddard
|
||||
** Space Flight Center pursuant to government contracts.
|
||||
**
|
||||
** This is governed by the NASA Open Source Agreement and may be used,
|
||||
** distributed and modified only pursuant to the terms of that agreement.
|
||||
**
|
||||
** Author: Alan Cudmore - Code 582
|
||||
**
|
||||
** Purpose: Contains functions prototype definitions and variables declarations
|
||||
** for the OS Abstraction Layer, Core OS module
|
||||
**
|
||||
** $Revision: 1.10 $
|
||||
**
|
||||
** $Date: 2013/07/25 10:01:32GMT-05:00 $
|
||||
**
|
||||
** $Log: osapi.h $
|
||||
** Revision 1.10 2013/07/25 10:01:32GMT-05:00 acudmore
|
||||
** Added C++ support
|
||||
** Revision 1.9 2010/11/12 12:00:17GMT-05:00 acudmore
|
||||
** replaced copyright character with (c) and added open source notice where needed.
|
||||
** Revision 1.8 2010/03/08 15:57:20EST acudmore
|
||||
** include new OSAL version header file
|
||||
** Revision 1.7 2009/08/10 14:01:10EDT acudmore
|
||||
** Reset OSAL version for trunk
|
||||
** Revision 1.6 2009/08/10 13:55:49EDT acudmore
|
||||
** Updated OSAL version defines to 3.0
|
||||
** Revision 1.5 2009/06/10 14:15:55EDT acudmore
|
||||
** Removed HAL include files. HAL code was removed from OSAL.
|
||||
** Revision 1.4 2008/08/20 16:12:51EDT apcudmore
|
||||
** Updated timer error codes
|
||||
** Revision 1.3 2008/08/20 15:46:27EDT apcudmore
|
||||
** Add support for timer API
|
||||
** Revision 1.2 2008/06/20 15:13:43EDT apcudmore
|
||||
** Checked in new Module loader/symbol table functionality
|
||||
** Revision 1.1 2008/04/20 22:36:02EDT ruperera
|
||||
** Initial revision
|
||||
** Member added to project c:/MKSDATA/MKS-REPOSITORY/MKS-OSAL-REPOSITORY/src/os/inc/project.pj
|
||||
** Revision 1.6 2008/02/14 11:29:10EST apcudmore
|
||||
** Updated version define ( 2.11 )
|
||||
** Revision 1.5 2008/02/07 11:31:58EST apcudmore
|
||||
** Fixed merge problem
|
||||
** Revision 1.4 2008/02/07 11:07:29EST apcudmore
|
||||
** Added dynamic loader / Symbol lookup API
|
||||
** -- API only, next release will have functionality
|
||||
** Revision 1.2 2008/01/29 14:30:49EST njyanchik
|
||||
** I added code to all the ports that allow the values of both binary and counting semaphores to be
|
||||
** gotten through the OS_*SemGetInfo API.
|
||||
** Revision 1.1 2007/10/16 16:14:52EDT apcudmore
|
||||
** Initial revision
|
||||
** Member added to project d:/mksdata/MKS-OSAL-REPOSITORY/src/os/inc/project.pj
|
||||
** Revision 1.2 2007/09/28 15:46:49EDT rjmcgraw
|
||||
** Updated version numbers to 5.0
|
||||
** Revision 1.1 2007/08/24 13:43:25EDT apcudmore
|
||||
** Initial revision
|
||||
** Member added to project d:/mksdata/MKS-CFE-PROJECT/fsw/cfe-core/os/inc/project.pj
|
||||
** Revision 1.9.1.1 2007/05/21 08:58:51EDT njyanchik
|
||||
** The trunk version number has been updated to version 0.0
|
||||
** Revision 1.9 2006/06/12 10:20:07EDT rjmcgraw
|
||||
** Updated OS_MINOR_VERSION from 3 to 4
|
||||
** Revision 1.8 2006/02/03 09:30:45EST njyanchik
|
||||
** Changed version number to 2.3
|
||||
** Revision 1.7 2006/01/20 11:56:16EST njyanchik
|
||||
** Fixed header file information to match api document
|
||||
** Revision 1.15 2005/11/09 13:35:49 nyanchik
|
||||
** Revisions for 2.2 include:
|
||||
** a new scheduler mapper for Linux and OS X
|
||||
** addition of OS_printf function
|
||||
** fixed issues that would cause warnings at compile time
|
||||
**
|
||||
**
|
||||
*/
|
||||
|
||||
#ifndef _osapi_
|
||||
#define _osapi_
|
||||
|
||||
#include "common_types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define OS_SUCCESS (0)
|
||||
#define OS_ERROR (-1)
|
||||
#define OS_INVALID_POINTER (-2)
|
||||
#define OS_ERROR_ADDRESS_MISALIGNED (-3)
|
||||
#define OS_ERROR_TIMEOUT (-4)
|
||||
#define OS_INVALID_INT_NUM (-5)
|
||||
#define OS_SEM_FAILURE (-6)
|
||||
#define OS_SEM_TIMEOUT (-7)
|
||||
#define OS_QUEUE_EMPTY (-8)
|
||||
#define OS_QUEUE_FULL (-9)
|
||||
#define OS_QUEUE_TIMEOUT (-10)
|
||||
#define OS_QUEUE_INVALID_SIZE (-11)
|
||||
#define OS_QUEUE_ID_ERROR (-12)
|
||||
#define OS_ERR_NAME_TOO_LONG (-13)
|
||||
#define OS_ERR_NO_FREE_IDS (-14)
|
||||
#define OS_ERR_NAME_TAKEN (-15)
|
||||
#define OS_ERR_INVALID_ID (-16)
|
||||
#define OS_ERR_NAME_NOT_FOUND (-17)
|
||||
#define OS_ERR_SEM_NOT_FULL (-18)
|
||||
#define OS_ERR_INVALID_PRIORITY (-19)
|
||||
#define OS_INVALID_SEM_VALUE (-20)
|
||||
#define OS_ERR_FILE (-27)
|
||||
#define OS_ERR_NOT_IMPLEMENTED (-28)
|
||||
#define OS_TIMER_ERR_INVALID_ARGS (-29)
|
||||
#define OS_TIMER_ERR_TIMER_ID (-30)
|
||||
#define OS_TIMER_ERR_UNAVAILABLE (-31)
|
||||
#define OS_TIMER_ERR_INTERNAL (-32)
|
||||
|
||||
/*
|
||||
** Defines for Queue Timeout parameters
|
||||
*/
|
||||
#define OS_PEND (0)
|
||||
#define OS_CHECK (-1)
|
||||
|
||||
#include "osapi-version.h"
|
||||
|
||||
/*
|
||||
** Include the configuration file
|
||||
*/
|
||||
#include "osconfig.h"
|
||||
|
||||
/*
|
||||
** Include the OS API modules
|
||||
*/
|
||||
#include "osapi-os-core.h"
|
||||
//#include "osapi-os-filesys.h"
|
||||
//#include "osapi-os-net.h"
|
||||
//#include "osapi-os-loader.h"
|
||||
#include "osapi-os-timer.h"
|
||||
#include "osapi-os-custom.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,7 @@
|
|||
# NASA CFE PSP files.
|
||||
CFEPSPSRC = $(CHIBIOS)/os/common/abstractions/nasa_cfe/psp/src/cfe_psp_support.c \
|
||||
$(CHIBIOS)/os/common/abstractions/nasa_cfe/psp/src/cfe_psp_timer.c \
|
||||
$(CHIBIOS)/os/common/abstractions/nasa_cfe/psp/src/cfe_psp_memory.c \
|
||||
$(CHIBIOS)/os/common/abstractions/nasa_cfe/psp/src/cfe_psp_exception.c
|
||||
|
||||
CFEPSPINC = $(CHIBIOS)/os/common/abstractions/nasa_cfe/psp/include
|
||||
|
|
@ -0,0 +1,375 @@
|
|||
/*
|
||||
** File Name: cfe_psp.h
|
||||
**
|
||||
** Copyright (c) 2004-2006, United States government as represented by the
|
||||
** administrator of the National Aeronautics Space Administration.
|
||||
** All rights reserved. This software(cFE) was created at NASA's Goddard
|
||||
** Space Flight Center pursuant to government contracts.
|
||||
**
|
||||
** This software may be used only pursuant to a United States government
|
||||
** sponsored project and the United States government may not be charged
|
||||
** for use thereof.
|
||||
**
|
||||
** Author: A. Cudmore
|
||||
**
|
||||
** Purpose: This file contains the cFE Platform Support Package(PSP)
|
||||
** prototypes.
|
||||
** The PSP routines serve as the "glue" between the RTOS and
|
||||
** the cFE Flight Software. The routines fill gaps that are not
|
||||
** really considered part of the OS Abstraction, but are required
|
||||
** for the cFE flight software implementation. It is possible that
|
||||
** some of these routines could migrate into the OS AL.
|
||||
**
|
||||
** $Log: cfe_psp.h $
|
||||
** Revision 1.3 2009/07/29 12:04:46GMT-05:00 acudmore
|
||||
** Added Bank parameter to EEPROM Power up/down and EEPROM write enable/disable functions.
|
||||
** Revision 1.2 2009/07/22 17:34:10EDT acudmore
|
||||
** Added new watchdog API
|
||||
** Revision 1.1 2009/06/10 09:28:44EDT acudmore
|
||||
** Initial revision
|
||||
** Member added to project c:/MKSDATA/MKS-REPOSITORY/CFE-PSP-REPOSITORY/fsw/inc/project.pj
|
||||
**
|
||||
*/
|
||||
|
||||
#ifndef _cfe_psp_
|
||||
#define _cfe_psp_
|
||||
|
||||
/*
|
||||
** Include Files
|
||||
*/
|
||||
|
||||
#include "common_types.h"
|
||||
#include "osapi.h"
|
||||
#include "cfe_psp_config.h"
|
||||
#include "psp_version.h"
|
||||
|
||||
/*
|
||||
** Macro Definitions
|
||||
*/
|
||||
|
||||
/*
|
||||
** Error and return codes
|
||||
*/
|
||||
#define CFE_PSP_SUCCESS (0)
|
||||
#define CFE_PSP_ERROR (-1)
|
||||
#define CFE_PSP_INVALID_POINTER (-2)
|
||||
#define CFE_PSP_ERROR_ADDRESS_MISALIGNED (-3)
|
||||
#define CFE_PSP_ERROR_TIMEOUT (-4)
|
||||
#define CFE_PSP_INVALID_INT_NUM (-5)
|
||||
#define CFE_PSP_INVALID_MEM_ADDR (-21)
|
||||
#define CFE_PSP_INVALID_MEM_TYPE (-22)
|
||||
#define CFE_PSP_INVALID_MEM_RANGE (-23)
|
||||
#define CFE_PSP_INVALID_MEM_WORDSIZE (-24)
|
||||
#define CFE_PSP_INVALID_MEM_SIZE (-25)
|
||||
#define CFE_PSP_INVALID_MEM_ATTR (-26)
|
||||
#define CFE_PSP_ERROR_NOT_IMPLEMENTED (-27)
|
||||
|
||||
|
||||
|
||||
/*
|
||||
** Definitions for PSP PANIC types
|
||||
*/
|
||||
#define CFE_PSP_PANIC_STARTUP 1
|
||||
#define CFE_PSP_PANIC_VOLATILE_DISK 2
|
||||
#define CFE_PSP_PANIC_MEMORY_ALLOC 3
|
||||
#define CFE_PSP_PANIC_NONVOL_DISK 4
|
||||
#define CFE_PSP_PANIC_STARTUP_SEM 5
|
||||
#define CFE_PSP_PANIC_CORE_APP 6
|
||||
#define CFE_PSP_PANIC_GENERAL_FAILURE 7
|
||||
|
||||
/*
|
||||
** Macros for the file loader
|
||||
*/
|
||||
#define BUFF_SIZE 256
|
||||
#define SIZE_BYTE 1
|
||||
#define SIZE_HALF 2
|
||||
#define SIZE_WORD 3
|
||||
|
||||
/*
|
||||
** Define memory types
|
||||
*/
|
||||
#define CFE_PSP_MEM_RAM 1
|
||||
#define CFE_PSP_MEM_EEPROM 2
|
||||
#define CFE_PSP_MEM_ANY 3
|
||||
#define CFE_PSP_MEM_INVALID 4
|
||||
|
||||
/*
|
||||
** Define Memory Read/Write Attributes
|
||||
*/
|
||||
#define CFE_PSP_MEM_ATTR_WRITE 0x01
|
||||
#define CFE_PSP_MEM_ATTR_READ 0x02
|
||||
#define CFE_PSP_MEM_ATTR_READWRITE 0x03
|
||||
|
||||
/*
|
||||
** Define the Memory Word Sizes
|
||||
*/
|
||||
#define CFE_PSP_MEM_SIZE_BYTE 0x01
|
||||
#define CFE_PSP_MEM_SIZE_WORD 0x02
|
||||
#define CFE_PSP_MEM_SIZE_DWORD 0x04
|
||||
|
||||
/*
|
||||
** Type Definitions
|
||||
*/
|
||||
|
||||
/*
|
||||
** Memory table type
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32 MemoryType;
|
||||
uint32 WordSize;
|
||||
uint32 StartAddr;
|
||||
uint32 Size;
|
||||
uint32 Attributes;
|
||||
} CFE_PSP_MemTable_t;
|
||||
|
||||
/*
|
||||
** Function prototypes
|
||||
*/
|
||||
|
||||
/*
|
||||
** PSP entry point and reset routines
|
||||
*/
|
||||
extern void CFE_PSP_Main(int ModeId, char *StartupFilePath);
|
||||
|
||||
/*
|
||||
** CFE_PSP_Main is the entry point that the real time OS calls to start our
|
||||
** software. This routine will do any BSP/OS specific setup, then call the
|
||||
** entrypoint of the flight software ( i.e. the cFE main entry point ).
|
||||
** The flight software (i.e. cFE ) should not call this routine.
|
||||
*/
|
||||
|
||||
extern void CFE_PSP_GetTime(OS_time_t *LocalTime);
|
||||
/* This call gets the local time from the hardware on the Vxworks system
|
||||
* on the mcp750s
|
||||
* on the other os/hardware setup, it will get the time the normal way */
|
||||
|
||||
|
||||
extern void CFE_PSP_Restart(uint32 resetType);
|
||||
/*
|
||||
** CFE_PSP_Restart is the entry point back to the BSP to restart the processor.
|
||||
** The flight software calls this routine to restart the processor.
|
||||
*/
|
||||
|
||||
|
||||
extern uint32 CFE_PSP_GetRestartType(uint32 *restartSubType );
|
||||
/*
|
||||
** CFE_PSP_GetRestartType returns the last reset type and if a pointer to a valid
|
||||
** memory space is passed in, it returns the reset sub-type in that memory.
|
||||
** Right now the reset types are application specific. For the cFE they
|
||||
** are defined in the cfe_es.h file.
|
||||
*/
|
||||
|
||||
|
||||
extern void CFE_PSP_FlushCaches(uint32 type, uint32 address, uint32 size);
|
||||
/*
|
||||
** This is a BSP specific cache flush routine
|
||||
*/
|
||||
|
||||
extern uint32 CFE_PSP_GetProcessorId ( void );
|
||||
/*
|
||||
** CFE_PSP_GetProcessorId returns the CPU ID as defined by the specific board
|
||||
** and BSP.
|
||||
*/
|
||||
|
||||
|
||||
extern uint32 CFE_PSP_GetSpacecraftId ( void );
|
||||
/*
|
||||
** CFE_PSP_GetSpacecraftId retuns the Spacecraft ID (if any )
|
||||
*/
|
||||
|
||||
|
||||
extern uint32 CFE_PSP_Get_Timer_Tick(void);
|
||||
/*
|
||||
** CFE_PSP_Get_Timer_Tick returns the underlying OS timer tick value
|
||||
** It is used for the performance monitoring software
|
||||
*/
|
||||
|
||||
extern uint32 CFE_PSP_GetTimerTicksPerSecond(void);
|
||||
/*
|
||||
** CFE_PSP_GetTimerTicksPerSecond provides the resolution of the least significant
|
||||
** 32 bits of the 64 bit time stamp returned by CFE_PSP_Get_Timebase in timer
|
||||
** ticks per second. The timer resolution for accuracy should not be any slower
|
||||
** than 1000000 ticks per second or 1 us per tick
|
||||
*/
|
||||
|
||||
extern uint32 CFE_PSP_GetTimerLow32Rollover(void);
|
||||
/*
|
||||
** CFE_PSP_GetTimerLow32Rollover provides the number that the least significant
|
||||
** 32 bits of the 64 bit time stamp returned by CFE_PSP_Get_Timebase rolls over.
|
||||
** If the lower 32 bits rolls at 1 second, then the CFE_PSP_TIMER_LOW32_ROLLOVER
|
||||
** will be 1000000. if the lower 32 bits rolls at its maximum value (2^32) then
|
||||
** CFE_PSP_TIMER_LOW32_ROLLOVER will be 0.
|
||||
*/
|
||||
|
||||
extern void CFE_PSP_Get_Timebase(uint32 *Tbu, uint32 *Tbl);
|
||||
/*
|
||||
** CFE_PSP_Get_Timebase
|
||||
*/
|
||||
|
||||
extern uint32 CFE_PSP_Get_Dec(void);
|
||||
/*
|
||||
** CFE_PSP_Get_Dec
|
||||
*/
|
||||
|
||||
|
||||
extern int32 CFE_PSP_InitProcessorReservedMemory(uint32 RestartType );
|
||||
/*
|
||||
** CFE_PSP_InitProcessorReservedMemory initializes all of the memory in the
|
||||
** BSP that is preserved on a processor reset. The memory includes the
|
||||
** Critical Data Store, the ES Reset Area, the Volatile Disk Memory, and
|
||||
** the User Reserved Memory. In general, the memory areas will be initialized
|
||||
** ( cleared ) on a Power On reset, and preserved during a processor reset.
|
||||
*/
|
||||
|
||||
extern int32 CFE_PSP_GetCDSSize(uint32 *SizeOfCDS);
|
||||
/*
|
||||
** CFE_PSP_GetCDSSize fetches the size of the OS Critical Data Store area.
|
||||
*/
|
||||
|
||||
extern int32 CFE_PSP_WriteToCDS(void *PtrToDataToWrite, uint32 CDSOffset, uint32 NumBytes);
|
||||
/*
|
||||
** CFE_PSP_WriteToCDS writes to the CDS Block.
|
||||
*/
|
||||
|
||||
extern int32 CFE_PSP_ReadFromCDS(void *PtrToDataToRead, uint32 CDSOffset, uint32 NumBytes);
|
||||
/*
|
||||
** CFE_PSP_ReadFromCDS reads from the CDS Block
|
||||
*/
|
||||
|
||||
extern int32 CFE_PSP_GetResetArea (void *PtrToResetArea, uint32 *SizeOfResetArea);
|
||||
/*
|
||||
** CFE_PSP_GetResetArea returns the location and size of the ES Reset information area.
|
||||
** This area is preserved during a processor reset and is used to store the
|
||||
** ER Log, System Log and reset related variables
|
||||
*/
|
||||
|
||||
extern int32 CFE_PSP_GetUserReservedArea(void *PtrToUserArea, uint32 *SizeOfUserArea );
|
||||
/*
|
||||
** CFE_PSP_GetUserReservedArea returns the location and size of the memory used for the cFE
|
||||
** User reserved area.
|
||||
*/
|
||||
|
||||
extern int32 CFE_PSP_GetVolatileDiskMem(void *PtrToVolDisk, uint32 *SizeOfVolDisk );
|
||||
/*
|
||||
** CFE_PSP_GetVolatileDiskMem returns the location and size of the memory used for the cFE
|
||||
** volatile disk.
|
||||
*/
|
||||
|
||||
extern int32 CFE_PSP_GetKernelTextSegmentInfo(void *PtrToKernelSegment, uint32 *SizeOfKernelSegment);
|
||||
/*
|
||||
** CFE_PSP_GetKernelTextSegmentInfo returns the location and size of the kernel memory.
|
||||
*/
|
||||
|
||||
extern int32 CFE_PSP_GetCFETextSegmentInfo(void *PtrToCFESegment, uint32 *SizeOfCFESegment);
|
||||
/*
|
||||
** CFE_PSP_GetCFETextSegmentInfo returns the location and size of the kernel memory.
|
||||
*/
|
||||
|
||||
extern void CFE_PSP_WatchdogInit(void);
|
||||
/*
|
||||
** CFE_PSP_WatchdogInit configures the watchdog timer.
|
||||
*/
|
||||
|
||||
extern void CFE_PSP_WatchdogEnable(void);
|
||||
/*
|
||||
** CFE_PSP_WatchdogEnable enables the watchdog timer.
|
||||
*/
|
||||
|
||||
extern void CFE_PSP_WatchdogDisable(void);
|
||||
/*
|
||||
** CFE_PSP_WatchdogDisable disables the watchdog timer.
|
||||
*/
|
||||
|
||||
extern void CFE_PSP_WatchdogService(void);
|
||||
/*
|
||||
** CFE_PSP_WatchdogService services the watchdog timer according to the
|
||||
** value set in WatchDogSet.
|
||||
*/
|
||||
|
||||
extern uint32 CFE_PSP_WatchdogGet(void);
|
||||
/*
|
||||
** CFE_PSP_WatchdogGet gets the watchdog time in milliseconds
|
||||
*/
|
||||
|
||||
extern void CFE_PSP_WatchdogSet(uint32 WatchdogValue);
|
||||
/*
|
||||
** CFE_PSP_WatchdogSet sets the watchdog time in milliseconds
|
||||
*/
|
||||
|
||||
extern void CFE_PSP_Panic(int32 ErrorCode);
|
||||
/*
|
||||
** CFE_PSP_Panic is called by the cFE Core startup code when it needs to abort the
|
||||
** cFE startup. This should not be called by applications.
|
||||
*/
|
||||
|
||||
extern int32 CFE_PSP_InitSSR(uint32 bus, uint32 device, char *DeviceName );
|
||||
/*
|
||||
** CFE_PSP_InitSSR will initialize the Solid state recorder memory for a particular platform
|
||||
*/
|
||||
|
||||
extern int32 CFE_PSP_Decompress( char * srcFileName, char * dstFileName );
|
||||
/*
|
||||
** CFE_PSP_Decompress will uncompress the source file to the file specified in the
|
||||
** destination file name. The Decompress uses the "gzip" algorithm. Files can
|
||||
** be compressed using the "gzip" program available on almost all host platforms.
|
||||
*/
|
||||
|
||||
extern void CFE_PSP_AttachExceptions(void);
|
||||
/*
|
||||
** CFE_PSP_AttachExceptions will setup the exception environment for the chosen platform
|
||||
** On a board, this can be configured to look at a debug flag or switch in order to
|
||||
** keep the standard OS exeption handlers, rather than restarting the system
|
||||
*/
|
||||
|
||||
|
||||
extern void CFE_PSP_SetDefaultExceptionEnvironment(void);
|
||||
/*
|
||||
**
|
||||
** CFE_PSP_SetDefaultExceptionEnvironment defines the CPU and FPU exceptions that are enabled for each cFE Task/App
|
||||
**
|
||||
** Notes: The exception environment is local to each task Therefore this must be
|
||||
** called for each task that that wants to do floating point and catch exceptions
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
** I/O Port API
|
||||
*/
|
||||
int32 CFE_PSP_PortRead8 (uint32 PortAddress, uint8 *ByteValue);
|
||||
int32 CFE_PSP_PortWrite8 (uint32 PortAddress, uint8 ByteValue);
|
||||
int32 CFE_PSP_PortRead16 (uint32 PortAddress, uint16 *uint16Value);
|
||||
int32 CFE_PSP_PortWrite16 (uint32 PortAddress, uint16 uint16Value);
|
||||
int32 CFE_PSP_PortRead32 (uint32 PortAddress, uint32 *uint32Value);
|
||||
int32 CFE_PSP_PortWrite32 (uint32 PortAddress, uint32 uint32Value);
|
||||
|
||||
/*
|
||||
** Memory API
|
||||
*/
|
||||
int32 CFE_PSP_MemRead8 (uint32 MemoryAddress, uint8 *ByteValue);
|
||||
int32 CFE_PSP_MemWrite8 (uint32 MemoryAddress, uint8 ByteValue);
|
||||
int32 CFE_PSP_MemRead16 (uint32 MemoryAddress, uint16 *uint16Value);
|
||||
int32 CFE_PSP_MemWrite16 (uint32 MemoryAddress, uint16 uint16Value);
|
||||
int32 CFE_PSP_MemRead32 (uint32 MemoryAddress, uint32 *uint32Value);
|
||||
int32 CFE_PSP_MemWrite32 (uint32 MemoryAddress, uint32 uint32Value);
|
||||
|
||||
int32 CFE_PSP_MemCpy (void *dest, void *src, uint32 n);
|
||||
int32 CFE_PSP_MemSet (void *dest, uint8 value, uint32 n);
|
||||
|
||||
int32 CFE_PSP_MemValidateRange (uint32 Address, uint32 Size, uint32 MemoryType);
|
||||
uint32 CFE_PSP_MemRanges (void);
|
||||
int32 CFE_PSP_MemRangeSet (uint32 RangeNum, uint32 MemoryType, uint32 StartAddr,
|
||||
uint32 Size, uint32 WordSize, uint32 Attributes);
|
||||
int32 CFE_PSP_MemRangeGet (uint32 RangeNum, uint32 *MemoryType, uint32 *StartAddr,
|
||||
uint32 *Size, uint32 *WordSize, uint32 *Attributes);
|
||||
|
||||
int32 CFE_PSP_EepromWrite8 (uint32 MemoryAddress, uint8 ByteValue);
|
||||
int32 CFE_PSP_EepromWrite16 (uint32 MemoryAddress, uint16 uint16Value);
|
||||
int32 CFE_PSP_EepromWrite32 (uint32 MemoryAddress, uint32 uint32Value);
|
||||
|
||||
int32 CFE_PSP_EepromWriteEnable (uint32 Bank);
|
||||
int32 CFE_PSP_EepromWriteDisable(uint32 Bank);
|
||||
int32 CFE_PSP_EepromPowerUp (uint32 Bank);
|
||||
int32 CFE_PSP_EepromPowerDown (uint32 Bank);
|
||||
|
||||
#endif /* _cfe_psp_ */
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
** cfe_psp_config.h
|
||||
**
|
||||
** Copyright (c) 2004-2006, United States government as represented by the
|
||||
** administrator of the National Aeronautics Space Administration.
|
||||
** All rights reserved. This software(cFE) was created at NASA Goddard
|
||||
** Space Flight Center pursuant to government contracts.
|
||||
**
|
||||
** This software may be used only pursuant to a United States government
|
||||
** sponsored project and the United States government may not be charged
|
||||
** for use thereof.
|
||||
**
|
||||
**
|
||||
*/
|
||||
|
||||
#ifndef _cfe_psp_config_
|
||||
#define _cfe_psp_config_
|
||||
|
||||
#include "common_types.h"
|
||||
|
||||
#endif /* _cfe_psp_config_ */
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
** $Id: psp_version.h 1.2.2.3 2014/10/01 15:41:27GMT-05:00 sstrege Exp $
|
||||
**
|
||||
**
|
||||
** Copyright (c) 2004-2006, United States government as represented by the
|
||||
** administrator of the National Aeronautics Space Administration.
|
||||
** All rights reserved. This software(cFE) was created at NASA's Goddard
|
||||
** Space Flight Center pursuant to government contracts.
|
||||
**
|
||||
** This software may be used only pursuant to a United States government
|
||||
** sponsored project and the United States government may not be charged
|
||||
** for use thereof.
|
||||
**
|
||||
**
|
||||
**
|
||||
** Purpose:
|
||||
** Provide version identifiers for the cFE Platform Support Packages (PSP).
|
||||
**
|
||||
*/
|
||||
|
||||
#ifndef _psp_version_
|
||||
#define _psp_version_
|
||||
|
||||
|
||||
/*
|
||||
** Macro Definitions
|
||||
*/
|
||||
#define CFE_PSP_MAJOR_VERSION 1
|
||||
#define CFE_PSP_MINOR_VERSION 2
|
||||
#define CFE_PSP_REVISION 0
|
||||
#define CFE_PSP_MISSION_REV 0
|
||||
|
||||
/* For backwards compatibility */
|
||||
#define CFE_PSP_SUBMINOR_VERSION CFE_PSP_REVISION
|
||||
|
||||
|
||||
#endif /* _psp_version_ */
|
||||
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file cfe_psp_exception.c
|
||||
* @brief CFE PSP exception module code.
|
||||
*
|
||||
* @addtogroup nasa_cfe_psp_exception
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include "ch.h"
|
||||
|
||||
#include "common_types.h"
|
||||
#include "osapi.h"
|
||||
#include "cfe_psp.h"
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local definitions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
void CFE_PSP_SetDefaultExceptionEnvironment(void) {
|
||||
|
||||
/* Does nothing in ChibiOS, exceptions are initialized by the OS.*/
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
|
@ -0,0 +1,136 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file cfe_psp_memory.c
|
||||
* @brief CFE PSP memory module code.
|
||||
*
|
||||
* @addtogroup nasa_cfe_psp_memory
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include "ch.h"
|
||||
|
||||
#include "common_types.h"
|
||||
#include "osapi.h"
|
||||
#include "cfe_psp.h"
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local definitions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
int32 CFE_PSP_GetCDSSize(uint32 *SizeOfCDS) {
|
||||
|
||||
(void)SizeOfCDS;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32 CFE_PSP_WriteToCDS(void *PtrToDataToWrite,
|
||||
uint32 CDSOffset,
|
||||
uint32 NumBytes) {
|
||||
|
||||
(void)PtrToDataToWrite;
|
||||
(void)CDSOffset;
|
||||
(void)NumBytes;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32 CFE_PSP_ReadFromCDS(void *PtrToDataToRead,
|
||||
uint32 CDSOffset,
|
||||
uint32 NumBytes) {
|
||||
|
||||
(void)PtrToDataToRead;
|
||||
(void)CDSOffset;
|
||||
(void)NumBytes;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32 CFE_PSP_GetResetArea(void *PtrToResetArea,
|
||||
uint32 *SizeOfResetArea) {
|
||||
|
||||
(void)PtrToResetArea;
|
||||
(void)SizeOfResetArea;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32 CFE_PSP_GetUserReservedArea(void *PtrToUserArea,
|
||||
uint32 *SizeOfUserArea) {
|
||||
|
||||
(void)PtrToUserArea;
|
||||
(void)SizeOfUserArea;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32 CFE_PSP_GetVolatileDiskMem(void *PtrToVolDisk,
|
||||
uint32 *SizeOfVolDisk) {
|
||||
|
||||
(void)PtrToVolDisk;
|
||||
(void)SizeOfVolDisk;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32 CFE_PSP_InitProcessorReservedMemory(uint32 RestartType) {
|
||||
|
||||
(void)RestartType;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32 CFE_PSP_GetKernelTextSegmentInfo(void *PtrToKernelSegment,
|
||||
uint32 *SizeOfKernelSegment) {
|
||||
|
||||
(void)PtrToKernelSegment;
|
||||
(void)SizeOfKernelSegment;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32 CFE_PSP_GetCFETextSegmentInfo(void *PtrToCFESegment,
|
||||
uint32 *SizeOfCFESegment) {
|
||||
|
||||
(void)PtrToCFESegment;
|
||||
(void)SizeOfCFESegment;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file cfe_psp_support.c
|
||||
* @brief CFE PSP support module code.
|
||||
*
|
||||
* @addtogroup nasa_cfe_psp_support
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include "ch.h"
|
||||
|
||||
#include "common_types.h"
|
||||
#include "osapi.h"
|
||||
#include "cfe_psp.h"
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local definitions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Provides a common interface to the processor reset.
|
||||
* @note Not currently implemented.
|
||||
*/
|
||||
void CFE_PSP_Restart(uint32 reset_type) {
|
||||
|
||||
(void)reset_type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Generic panic handler.
|
||||
*/
|
||||
void CFE_PSP_Panic(int32 ErrorCode) {
|
||||
|
||||
chSysHalt((char *)ErrorCode);
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file cfe_psp_timer.c
|
||||
* @brief CFE PSP timer module code.
|
||||
*
|
||||
* @addtogroup nasa_cfe_psp_timer
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include "ch.h"
|
||||
|
||||
#include "common_types.h"
|
||||
#include "osapi.h"
|
||||
#include "cfe_psp.h"
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local definitions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
void CFE_PSP_GetTime(OS_time_t *LocalTime) {
|
||||
|
||||
(void)LocalTime;
|
||||
}
|
||||
|
||||
uint32 CFE_PSP_GetTimerTicksPerSecond(void) {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint32 CFE_PSP_GetTimerLow32Rollover(void) {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CFE_PSP_Get_Timebase(uint32 *Tbu, uint32* Tbl) {
|
||||
|
||||
(void)Tbu;
|
||||
(void)Tbl;
|
||||
}
|
||||
|
||||
uint32 CFE_PSP_Get_Dec(void) {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** @} */
|
||||
3385
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f030x6.h
Executable file
3385
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f030x6.h
Executable file
File diff suppressed because it is too large
Load diff
3446
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f030x8.h
Executable file
3446
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f030x8.h
Executable file
File diff suppressed because it is too large
Load diff
3606
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f030xc.h
Executable file
3606
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f030xc.h
Executable file
File diff suppressed because it is too large
Load diff
3555
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f031x6.h
Executable file
3555
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f031x6.h
Executable file
File diff suppressed because it is too large
Load diff
3530
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f038xx.h
Executable file
3530
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f038xx.h
Executable file
File diff suppressed because it is too large
Load diff
5608
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f042x6.h
Executable file
5608
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f042x6.h
Executable file
File diff suppressed because it is too large
Load diff
5582
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f048xx.h
Executable file
5582
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f048xx.h
Executable file
File diff suppressed because it is too large
Load diff
4115
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f051x8.h
Executable file
4115
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f051x8.h
Executable file
File diff suppressed because it is too large
Load diff
4089
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f058xx.h
Executable file
4089
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f058xx.h
Executable file
File diff suppressed because it is too large
Load diff
3592
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f070x6.h
Executable file
3592
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f070x6.h
Executable file
File diff suppressed because it is too large
Load diff
3705
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f070xb.h
Executable file
3705
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f070xb.h
Executable file
File diff suppressed because it is too large
Load diff
4424
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f071xb.h
Executable file
4424
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f071xb.h
Executable file
File diff suppressed because it is too large
Load diff
5992
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f072xb.h
Executable file
5992
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f072xb.h
Executable file
File diff suppressed because it is too large
Load diff
5972
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f078xx.h
Executable file
5972
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f078xx.h
Executable file
File diff suppressed because it is too large
Load diff
6101
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f091xc.h
Executable file
6101
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f091xc.h
Executable file
File diff suppressed because it is too large
Load diff
6080
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f098xx.h
Executable file
6080
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F0xx/stm32f098xx.h
Executable file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,244 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file stm32f0xx.h
|
||||
* @author MCD Application Team
|
||||
* @version V2.2.3
|
||||
* @date 29-January-2016
|
||||
* @brief CMSIS STM32F0xx Device Peripheral Access Layer Header File.
|
||||
*
|
||||
* The file is the unique include file that the application programmer
|
||||
* is using in the C source code, usually in main.c. This file contains:
|
||||
* - Configuration section that allows to select:
|
||||
* - The STM32F0xx device used in the target application
|
||||
* - To use or not the peripheral’s drivers in application code(i.e.
|
||||
* code will be based on direct access to peripheral’s registers
|
||||
* rather than drivers API), this option is controlled by
|
||||
* "#define USE_HAL_DRIVER"
|
||||
*
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/** @addtogroup CMSIS
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** @addtogroup stm32f0xx
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef __STM32F0xx_H
|
||||
#define __STM32F0xx_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/** @addtogroup Library_configuration_section
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief STM32 Family
|
||||
*/
|
||||
#if !defined (STM32F0)
|
||||
#define STM32F0
|
||||
#endif /* STM32F0 */
|
||||
|
||||
/* Uncomment the line below according to the target STM32 device used in your
|
||||
application
|
||||
*/
|
||||
|
||||
#if !defined (STM32F030x6) && !defined (STM32F030x8) && \
|
||||
!defined (STM32F031x6) && !defined (STM32F038xx) && \
|
||||
!defined (STM32F042x6) && !defined (STM32F048xx) && !defined (STM32F070x6) && \
|
||||
!defined (STM32F051x8) && !defined (STM32F058xx) && \
|
||||
!defined (STM32F071xB) && !defined (STM32F072xB) && !defined (STM32F078xx) && !defined (STM32F070xB) && \
|
||||
!defined (STM32F091xC) && !defined (STM32F098xx) && !defined (STM32F030xC)
|
||||
/* #define STM32F030x6 */ /*!< STM32F030x4, STM32F030x6 Devices (STM32F030xx microcontrollers where the Flash memory ranges between 16 and 32 Kbytes) */
|
||||
/* #define STM32F030x8 */ /*!< STM32F030x8 Devices (STM32F030xx microcontrollers where the Flash memory is 64 Kbytes) */
|
||||
/* #define STM32F031x6 */ /*!< STM32F031x4, STM32F031x6 Devices (STM32F031xx microcontrollers where the Flash memory ranges between 16 and 32 Kbytes) */
|
||||
/* #define STM32F038xx */ /*!< STM32F038xx Devices (STM32F038xx microcontrollers where the Flash memory is 32 Kbytes) */
|
||||
/* #define STM32F042x6 */ /*!< STM32F042x4, STM32F042x6 Devices (STM32F042xx microcontrollers where the Flash memory ranges between 16 and 32 Kbytes) */
|
||||
/* #define STM32F048x6 */ /*!< STM32F048xx Devices (STM32F042xx microcontrollers where the Flash memory is 32 Kbytes) */
|
||||
/* #define STM32F051x8 */ /*!< STM32F051x4, STM32F051x6, STM32F051x8 Devices (STM32F051xx microcontrollers where the Flash memory ranges between 16 and 64 Kbytes) */
|
||||
/* #define STM32F058xx */ /*!< STM32F058xx Devices (STM32F058xx microcontrollers where the Flash memory is 64 Kbytes) */
|
||||
/* #define STM32F070x6 */ /*!< STM32F070x6 Devices (STM32F070x6 microcontrollers where the Flash memory ranges between 16 and 32 Kbytes) */
|
||||
/* #define STM32F070xB */ /*!< STM32F070xB Devices (STM32F070xB microcontrollers where the Flash memory ranges between 64 and 128 Kbytes) */
|
||||
/* #define STM32F071xB */ /*!< STM32F071x8, STM32F071xB Devices (STM32F071xx microcontrollers where the Flash memory ranges between 64 and 128 Kbytes) */
|
||||
/* #define STM32F072xB */ /*!< STM32F072x8, STM32F072xB Devices (STM32F072xx microcontrollers where the Flash memory ranges between 64 and 128 Kbytes) */
|
||||
/* #define STM32F078xx */ /*!< STM32F078xx Devices (STM32F078xx microcontrollers where the Flash memory is 128 Kbytes) */
|
||||
/* #define STM32F030xC */ /*!< STM32F030xC Devices (STM32F030xC microcontrollers where the Flash memory is 256 Kbytes) */
|
||||
/* #define STM32F091xC */ /*!< STM32F091xB, STM32F091xC Devices (STM32F091xx microcontrollers where the Flash memory ranges between 128 and 256 Kbytes) */
|
||||
/* #define STM32F098xx */ /*!< STM32F098xx Devices (STM32F098xx microcontrollers where the Flash memory is 256 Kbytes) */
|
||||
#endif
|
||||
|
||||
/* Tip: To avoid modifying this file each time you need to switch between these
|
||||
devices, you can define the device in your toolchain compiler preprocessor.
|
||||
*/
|
||||
#if !defined (USE_HAL_DRIVER)
|
||||
/**
|
||||
* @brief Comment the line below if you will not use the peripherals drivers.
|
||||
In this case, these drivers will not be included and the application code will
|
||||
be based on direct access to peripherals registers
|
||||
*/
|
||||
/*#define USE_HAL_DRIVER */
|
||||
#endif /* USE_HAL_DRIVER */
|
||||
|
||||
/**
|
||||
* @brief CMSIS Device version number V2.2.3
|
||||
*/
|
||||
#define __STM32F0_DEVICE_VERSION_MAIN (0x02) /*!< [31:24] main version */
|
||||
#define __STM32F0_DEVICE_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */
|
||||
#define __STM32F0_DEVICE_VERSION_SUB2 (0x03) /*!< [15:8] sub2 version */
|
||||
#define __STM32F0_DEVICE_VERSION_RC (0x00) /*!< [7:0] release candidate */
|
||||
#define __STM32F0_DEVICE_VERSION ((__STM32F0_DEVICE_VERSION_MAIN << 24)\
|
||||
|(__STM32F0_DEVICE_VERSION_SUB1 << 16)\
|
||||
|(__STM32F0_DEVICE_VERSION_SUB2 << 8 )\
|
||||
|(__STM32F0_DEVICE_VERSION_RC))
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup Device_Included
|
||||
* @{
|
||||
*/
|
||||
|
||||
#if defined(STM32F030x6)
|
||||
#include "stm32f030x6.h"
|
||||
#elif defined(STM32F030x8)
|
||||
#include "stm32f030x8.h"
|
||||
#elif defined(STM32F031x6)
|
||||
#include "stm32f031x6.h"
|
||||
#elif defined(STM32F038xx)
|
||||
#include "stm32f038xx.h"
|
||||
#elif defined(STM32F042x6)
|
||||
#include "stm32f042x6.h"
|
||||
#elif defined(STM32F048xx)
|
||||
#include "stm32f048xx.h"
|
||||
#elif defined(STM32F051x8)
|
||||
#include "stm32f051x8.h"
|
||||
#elif defined(STM32F058xx)
|
||||
#include "stm32f058xx.h"
|
||||
#elif defined(STM32F070x6)
|
||||
#include "stm32f070x6.h"
|
||||
#elif defined(STM32F070xB)
|
||||
#include "stm32f070xb.h"
|
||||
#elif defined(STM32F071xB)
|
||||
#include "stm32f071xb.h"
|
||||
#elif defined(STM32F072xB)
|
||||
#include "stm32f072xb.h"
|
||||
#elif defined(STM32F078xx)
|
||||
#include "stm32f078xx.h"
|
||||
#elif defined(STM32F091xC)
|
||||
#include "stm32f091xc.h"
|
||||
#elif defined(STM32F098xx)
|
||||
#include "stm32f098xx.h"
|
||||
#elif defined(STM32F030xC)
|
||||
#include "stm32f030xc.h"
|
||||
#else
|
||||
#error "Please select first the target STM32F0xx device used in your application (in stm32f0xx.h file)"
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup Exported_types
|
||||
* @{
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
RESET = 0,
|
||||
SET = !RESET
|
||||
} FlagStatus, ITStatus;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DISABLE = 0,
|
||||
ENABLE = !DISABLE
|
||||
} FunctionalState;
|
||||
#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ERROR = 0,
|
||||
SUCCESS = !ERROR
|
||||
} ErrorStatus;
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
/** @addtogroup Exported_macros
|
||||
* @{
|
||||
*/
|
||||
#define SET_BIT(REG, BIT) ((REG) |= (BIT))
|
||||
|
||||
#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT))
|
||||
|
||||
#define READ_BIT(REG, BIT) ((REG) & (BIT))
|
||||
|
||||
#define CLEAR_REG(REG) ((REG) = (0x0))
|
||||
|
||||
#define WRITE_REG(REG, VAL) ((REG) = (VAL))
|
||||
|
||||
#define READ_REG(REG) ((REG))
|
||||
|
||||
#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))
|
||||
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#if defined (USE_HAL_DRIVER)
|
||||
#include "stm32f0xx_hal.h"
|
||||
#endif /* USE_HAL_DRIVER */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* __STM32F0xx_H */
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,122 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file system_stm32f0xx.h
|
||||
* @author MCD Application Team
|
||||
* @version V2.2.3
|
||||
* @date 29-January-2016
|
||||
* @brief CMSIS Cortex-M0 Device System Source File for STM32F0xx devices.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/** @addtogroup CMSIS
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** @addtogroup stm32f0xx_system
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Define to prevent recursive inclusion
|
||||
*/
|
||||
#ifndef __SYSTEM_STM32F0XX_H
|
||||
#define __SYSTEM_STM32F0XX_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** @addtogroup STM32F0xx_System_Includes
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
/** @addtogroup STM32F0xx_System_Exported_types
|
||||
* @{
|
||||
*/
|
||||
/* This variable is updated in three ways:
|
||||
1) by calling CMSIS function SystemCoreClockUpdate()
|
||||
3) by calling HAL API function HAL_RCC_GetHCLKFreq()
|
||||
3) by calling HAL API function HAL_RCC_ClockConfig()
|
||||
Note: If you use this function to configure the system clock; then there
|
||||
is no need to call the 2 first functions listed above, since SystemCoreClock
|
||||
variable is updated automatically.
|
||||
*/
|
||||
extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */
|
||||
extern const uint8_t AHBPrescTable[16]; /*!< AHB prescalers table values */
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup STM32F0xx_System_Exported_Constants
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup STM32F0xx_System_Exported_Macros
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup STM32F0xx_System_Exported_Functions
|
||||
* @{
|
||||
*/
|
||||
|
||||
extern void SystemInit(void);
|
||||
extern void SystemCoreClockUpdate(void);
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /*__SYSTEM_STM32F0XX_H */
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
6821
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f100xb.h
Executable file
6821
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f100xb.h
Executable file
File diff suppressed because it is too large
Load diff
7434
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f100xe.h
Executable file
7434
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f100xe.h
Executable file
File diff suppressed because it is too large
Load diff
6152
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f101x6.h
Executable file
6152
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f101x6.h
Executable file
File diff suppressed because it is too large
Load diff
6281
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f101xb.h
Executable file
6281
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f101xb.h
Executable file
File diff suppressed because it is too large
Load diff
7281
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f101xe.h
Executable file
7281
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f101xe.h
Executable file
File diff suppressed because it is too large
Load diff
7514
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f101xg.h
Executable file
7514
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f101xg.h
Executable file
File diff suppressed because it is too large
Load diff
7285
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f102x6.h
Executable file
7285
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f102x6.h
Executable file
File diff suppressed because it is too large
Load diff
7405
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f102xb.h
Executable file
7405
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f102xb.h
Executable file
File diff suppressed because it is too large
Load diff
10944
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f103x6.h
Executable file
10944
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f103x6.h
Executable file
File diff suppressed because it is too large
Load diff
11073
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f103xb.h
Executable file
11073
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f103xb.h
Executable file
File diff suppressed because it is too large
Load diff
12199
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f103xe.h
Executable file
12199
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f103xe.h
Executable file
File diff suppressed because it is too large
Load diff
12383
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f103xg.h
Executable file
12383
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f103xg.h
Executable file
File diff suppressed because it is too large
Load diff
15138
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f105xc.h
Executable file
15138
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f105xc.h
Executable file
File diff suppressed because it is too large
Load diff
16051
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f107xc.h
Executable file
16051
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F1xx/stm32f107xc.h
Executable file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,238 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file stm32f1xx.h
|
||||
* @author MCD Application Team
|
||||
* @version V4.1.0
|
||||
* @date 29-April-2016
|
||||
* @brief CMSIS STM32F1xx Device Peripheral Access Layer Header File.
|
||||
*
|
||||
* The file is the unique include file that the application programmer
|
||||
* is using in the C source code, usually in main.c. This file contains:
|
||||
* - Configuration section that allows to select:
|
||||
* - The STM32F1xx device used in the target application
|
||||
* - To use or not the peripheral’s drivers in application code(i.e.
|
||||
* code will be based on direct access to peripheral’s registers
|
||||
* rather than drivers API), this option is controlled by
|
||||
* "#define USE_HAL_DRIVER"
|
||||
*
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/** @addtogroup CMSIS
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** @addtogroup stm32f1xx
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef __STM32F1XX_H
|
||||
#define __STM32F1XX_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/** @addtogroup Library_configuration_section
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief STM32 Family
|
||||
*/
|
||||
#if !defined (STM32F1)
|
||||
#define STM32F1
|
||||
#endif /* STM32F1 */
|
||||
|
||||
/* Uncomment the line below according to the target STM32L device used in your
|
||||
application
|
||||
*/
|
||||
|
||||
#if !defined (STM32F100xB) && !defined (STM32F100xE) && !defined (STM32F101x6) && \
|
||||
!defined (STM32F101xB) && !defined (STM32F101xE) && !defined (STM32F101xG) && !defined (STM32F102x6) && !defined (STM32F102xB) && !defined (STM32F103x6) && \
|
||||
!defined (STM32F103xB) && !defined (STM32F103xE) && !defined (STM32F103xG) && !defined (STM32F105xC) && !defined (STM32F107xC)
|
||||
/* #define STM32F100xB */ /*!< STM32F100C4, STM32F100R4, STM32F100C6, STM32F100R6, STM32F100C8, STM32F100R8, STM32F100V8, STM32F100CB, STM32F100RB and STM32F100VB */
|
||||
/* #define STM32F100xE */ /*!< STM32F100RC, STM32F100VC, STM32F100ZC, STM32F100RD, STM32F100VD, STM32F100ZD, STM32F100RE, STM32F100VE and STM32F100ZE */
|
||||
/* #define STM32F101x6 */ /*!< STM32F101C4, STM32F101R4, STM32F101T4, STM32F101C6, STM32F101R6 and STM32F101T6 Devices */
|
||||
/* #define STM32F101xB */ /*!< STM32F101C8, STM32F101R8, STM32F101T8, STM32F101V8, STM32F101CB, STM32F101RB, STM32F101TB and STM32F101VB */
|
||||
/* #define STM32F101xE */ /*!< STM32F101RC, STM32F101VC, STM32F101ZC, STM32F101RD, STM32F101VD, STM32F101ZD, STM32F101RE, STM32F101VE and STM32F101ZE */
|
||||
/* #define STM32F101xG */ /*!< STM32F101RF, STM32F101VF, STM32F101ZF, STM32F101RG, STM32F101VG and STM32F101ZG */
|
||||
/* #define STM32F102x6 */ /*!< STM32F102C4, STM32F102R4, STM32F102C6 and STM32F102R6 */
|
||||
/* #define STM32F102xB */ /*!< STM32F102C8, STM32F102R8, STM32F102CB and STM32F102RB */
|
||||
/* #define STM32F103x6 */ /*!< STM32F103C4, STM32F103R4, STM32F103T4, STM32F103C6, STM32F103R6 and STM32F103T6 */
|
||||
/* #define STM32F103xB */ /*!< STM32F103C8, STM32F103R8, STM32F103T8, STM32F103V8, STM32F103CB, STM32F103RB, STM32F103TB and STM32F103VB */
|
||||
/* #define STM32F103xE */ /*!< STM32F103RC, STM32F103VC, STM32F103ZC, STM32F103RD, STM32F103VD, STM32F103ZD, STM32F103RE, STM32F103VE and STM32F103ZE */
|
||||
/* #define STM32F103xG */ /*!< STM32F103RF, STM32F103VF, STM32F103ZF, STM32F103RG, STM32F103VG and STM32F103ZG */
|
||||
/* #define STM32F105xC */ /*!< STM32F105R8, STM32F105V8, STM32F105RB, STM32F105VB, STM32F105RC and STM32F105VC */
|
||||
/* #define STM32F107xC */ /*!< STM32F107RB, STM32F107VB, STM32F107RC and STM32F107VC */
|
||||
#endif
|
||||
|
||||
/* Tip: To avoid modifying this file each time you need to switch between these
|
||||
devices, you can define the device in your toolchain compiler preprocessor.
|
||||
*/
|
||||
|
||||
#if !defined (USE_HAL_DRIVER)
|
||||
/**
|
||||
* @brief Comment the line below if you will not use the peripherals drivers.
|
||||
In this case, these drivers will not be included and the application code will
|
||||
be based on direct access to peripherals registers
|
||||
*/
|
||||
/*#define USE_HAL_DRIVER */
|
||||
#endif /* USE_HAL_DRIVER */
|
||||
|
||||
/**
|
||||
* @brief CMSIS Device version number
|
||||
*/
|
||||
#define __STM32F1_CMSIS_VERSION_MAIN (0x04) /*!< [31:24] main version */
|
||||
#define __STM32F1_CMSIS_VERSION_SUB1 (0x01) /*!< [23:16] sub1 version */
|
||||
#define __STM32F1_CMSIS_VERSION_SUB2 (0x00) /*!< [15:8] sub2 version */
|
||||
#define __STM32F1_CMSIS_VERSION_RC (0x00) /*!< [7:0] release candidate */
|
||||
#define __STM32F1_CMSIS_VERSION ((__STM32F1_CMSIS_VERSION_MAIN << 24)\
|
||||
|(__STM32F1_CMSIS_VERSION_SUB1 << 16)\
|
||||
|(__STM32F1_CMSIS_VERSION_SUB2 << 8 )\
|
||||
|(__STM32F1_CMSIS_VERSION_RC))
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup Device_Included
|
||||
* @{
|
||||
*/
|
||||
|
||||
#if defined(STM32F100xB)
|
||||
#include "stm32f100xb.h"
|
||||
#elif defined(STM32F100xE)
|
||||
#include "stm32f100xe.h"
|
||||
#elif defined(STM32F101x6)
|
||||
#include "stm32f101x6.h"
|
||||
#elif defined(STM32F101xB)
|
||||
#include "stm32f101xb.h"
|
||||
#elif defined(STM32F101xE)
|
||||
#include "stm32f101xe.h"
|
||||
#elif defined(STM32F101xG)
|
||||
#include "stm32f101xg.h"
|
||||
#elif defined(STM32F102x6)
|
||||
#include "stm32f102x6.h"
|
||||
#elif defined(STM32F102xB)
|
||||
#include "stm32f102xb.h"
|
||||
#elif defined(STM32F103x6)
|
||||
#include "stm32f103x6.h"
|
||||
#elif defined(STM32F103xB)
|
||||
#include "stm32f103xb.h"
|
||||
#elif defined(STM32F103xE)
|
||||
#include "stm32f103xe.h"
|
||||
#elif defined(STM32F103xG)
|
||||
#include "stm32f103xg.h"
|
||||
#elif defined(STM32F105xC)
|
||||
#include "stm32f105xc.h"
|
||||
#elif defined(STM32F107xC)
|
||||
#include "stm32f107xc.h"
|
||||
#else
|
||||
#error "Please select first the target STM32F1xx device used in your application (in stm32f1xx.h file)"
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup Exported_types
|
||||
* @{
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
RESET = 0,
|
||||
SET = !RESET
|
||||
} FlagStatus, ITStatus;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DISABLE = 0,
|
||||
ENABLE = !DISABLE
|
||||
} FunctionalState;
|
||||
#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ERROR = 0,
|
||||
SUCCESS = !ERROR
|
||||
} ErrorStatus;
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
/** @addtogroup Exported_macros
|
||||
* @{
|
||||
*/
|
||||
#define SET_BIT(REG, BIT) ((REG) |= (BIT))
|
||||
|
||||
#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT))
|
||||
|
||||
#define READ_BIT(REG, BIT) ((REG) & (BIT))
|
||||
|
||||
#define CLEAR_REG(REG) ((REG) = (0x0))
|
||||
|
||||
#define WRITE_REG(REG, VAL) ((REG) = (VAL))
|
||||
|
||||
#define READ_REG(REG) ((REG))
|
||||
|
||||
#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))
|
||||
|
||||
#define POSITION_VAL(VAL) (__CLZ(__RBIT(VAL)))
|
||||
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#if defined (USE_HAL_DRIVER)
|
||||
#include "stm32f1xx_hal.h"
|
||||
#endif /* USE_HAL_DRIVER */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* __STM32F1xx_H */
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,116 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file system_stm32f10x.h
|
||||
* @author MCD Application Team
|
||||
* @version V4.1.0
|
||||
* @date 29-April-2016
|
||||
* @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Header File.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/** @addtogroup CMSIS
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** @addtogroup stm32f10x_system
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Define to prevent recursive inclusion
|
||||
*/
|
||||
#ifndef __SYSTEM_STM32F10X_H
|
||||
#define __SYSTEM_STM32F10X_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** @addtogroup STM32F10x_System_Includes
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
/** @addtogroup STM32F10x_System_Exported_types
|
||||
* @{
|
||||
*/
|
||||
|
||||
extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */
|
||||
extern const uint8_t AHBPrescTable[16]; /*!< AHB prescalers table values */
|
||||
extern const uint8_t APBPrescTable[8]; /*!< APB prescalers table values */
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup STM32F10x_System_Exported_Constants
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup STM32F10x_System_Exported_Macros
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup STM32F10x_System_Exported_Functions
|
||||
* @{
|
||||
*/
|
||||
|
||||
extern void SystemInit(void);
|
||||
extern void SystemCoreClockUpdate(void);
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /*__SYSTEM_STM32F10X_H */
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
7342
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F2xx/stm32f205xx.h
Executable file
7342
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F2xx/stm32f205xx.h
Executable file
File diff suppressed because it is too large
Load diff
7947
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F2xx/stm32f207xx.h
Executable file
7947
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F2xx/stm32f207xx.h
Executable file
File diff suppressed because it is too large
Load diff
7501
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F2xx/stm32f215xx.h
Executable file
7501
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F2xx/stm32f215xx.h
Executable file
File diff suppressed because it is too large
Load diff
8107
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F2xx/stm32f217xx.h
Executable file
8107
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F2xx/stm32f217xx.h
Executable file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,209 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file stm32f2xx.h
|
||||
* @author MCD Application Team
|
||||
* @version V2.1.0
|
||||
* @date 09-October-2015
|
||||
* @brief CMSIS STM32F2xx Device Peripheral Access Layer Header File.
|
||||
*
|
||||
* The file is the unique include file that the application programmer
|
||||
* is using in the C source code, usually in main.c. This file contains:
|
||||
* - Configuration section that allows to select:
|
||||
* - The STM32F2xx device used in the target application
|
||||
* - To use or not the peripheral’s drivers in application code(i.e.
|
||||
* code will be based on direct access to peripheral’s registers
|
||||
* rather than drivers API), this option is controlled by
|
||||
* "#define USE_HAL_DRIVER"
|
||||
*
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/** @addtogroup CMSIS
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** @addtogroup stm32f2xx
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef __STM32F2xx_H
|
||||
#define __STM32F2xx_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/** @addtogroup Library_configuration_section
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief STM32 Family
|
||||
*/
|
||||
#if !defined (STM32F2)
|
||||
#define STM32F2
|
||||
#endif /* STM32F2 */
|
||||
|
||||
/* Uncomment the line below according to the target STM32 device used in your
|
||||
application
|
||||
*/
|
||||
#if !defined (STM32F205xx) && !defined (STM32F215xx) && !defined (STM32F207xx) && !defined (STM32F217xx)
|
||||
|
||||
/* #define STM32F205xx */ /*!< STM32F205RG, STM32F205VG, STM32F205ZG, STM32F205RF, STM32F205VF, STM32F205ZF,
|
||||
STM32F205RE, STM32F205VE, STM32F205ZE, STM32F205RC, STM32F205VC, STM32F205ZC,
|
||||
STM32F205RB and STM32F205VB Devices */
|
||||
/* #define STM32F215xx */ /*!< STM32F215RG, STM32F215VG, STM32F215ZG, STM32F215RE, STM32F215VE and STM32F215ZE Devices */
|
||||
/* #define STM32F207xx */ /*!< STM32F207VG, STM32F207ZG, STM32F207IG, STM32F207VF, STM32F207ZF, STM32F207IF,
|
||||
STM32F207VE, STM32F207ZE, STM32F207IE, STM32F207VC, STM32F207ZC and STM32F207IC Devices */
|
||||
/* #define STM32F217xx */ /*!< STM32F217VG, STM32F217ZG, STM32F217IG, STM32F217VE, STM32F217ZE and STM32F217IE Devices */
|
||||
|
||||
#endif
|
||||
|
||||
/* Tip: To avoid modifying this file each time you need to switch between these
|
||||
devices, you can define the device in your toolchain compiler preprocessor.
|
||||
*/
|
||||
#if !defined (USE_HAL_DRIVER)
|
||||
/**
|
||||
* @brief Comment the line below if you will not use the peripherals drivers.
|
||||
In this case, these drivers will not be included and the application code will
|
||||
be based on direct access to peripherals registers
|
||||
*/
|
||||
/*#define USE_HAL_DRIVER */
|
||||
#endif /* USE_HAL_DRIVER */
|
||||
|
||||
/**
|
||||
* @brief CMSIS Device version number V2.1.0
|
||||
*/
|
||||
#define __STM32F2xx_CMSIS_DEVICE_VERSION_MAIN (0x02) /*!< [31:24] main version */
|
||||
#define __STM32F2xx_CMSIS_DEVICE_VERSION_SUB1 (0x01) /*!< [23:16] sub1 version */
|
||||
#define __STM32F2xx_CMSIS_DEVICE_VERSION_SUB2 (0x00) /*!< [15:8] sub2 version */
|
||||
#define __STM32F2xx_CMSIS_DEVICE_VERSION_RC (0x00) /*!< [7:0] release candidate */
|
||||
#define __STM32F2xx_CMSIS_DEVICE_VERSION ((__CMSIS_DEVICE_VERSION_MAIN << 24)\
|
||||
|(__CMSIS_DEVICE_HAL_VERSION_SUB1 << 16)\
|
||||
|(__CMSIS_DEVICE_HAL_VERSION_SUB2 << 8 )\
|
||||
|(__CMSIS_DEVICE_HAL_VERSION_RC))
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup Device_Included
|
||||
* @{
|
||||
*/
|
||||
|
||||
#if defined(STM32F205xx)
|
||||
#include "stm32f205xx.h"
|
||||
#elif defined(STM32F215xx)
|
||||
#include "stm32f215xx.h"
|
||||
#elif defined(STM32F207xx)
|
||||
#include "stm32f207xx.h"
|
||||
#elif defined(STM32F217xx)
|
||||
#include "stm32f217xx.h"
|
||||
#else
|
||||
#error "Please select first the target STM32F2xx device used in your application (in stm32f2xx.h file)"
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup Exported_types
|
||||
* @{
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
RESET = 0,
|
||||
SET = !RESET
|
||||
} FlagStatus, ITStatus;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DISABLE = 0,
|
||||
ENABLE = !DISABLE
|
||||
} FunctionalState;
|
||||
#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ERROR = 0,
|
||||
SUCCESS = !ERROR
|
||||
} ErrorStatus;
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
/** @addtogroup Exported_macro
|
||||
* @{
|
||||
*/
|
||||
#define SET_BIT(REG, BIT) ((REG) |= (BIT))
|
||||
|
||||
#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT))
|
||||
|
||||
#define READ_BIT(REG, BIT) ((REG) & (BIT))
|
||||
|
||||
#define CLEAR_REG(REG) ((REG) = (0x0))
|
||||
|
||||
#define WRITE_REG(REG, VAL) ((REG) = (VAL))
|
||||
|
||||
#define READ_REG(REG) ((REG))
|
||||
|
||||
#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))
|
||||
|
||||
#define POSITION_VAL(VAL) (__CLZ(__RBIT(VAL)))
|
||||
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#if defined (USE_HAL_DRIVER)
|
||||
#include "stm32f2xx_hal.h"
|
||||
#endif /* USE_HAL_DRIVER */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* __STM32F2xx_H */
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,122 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file system_stm32f2xx.h
|
||||
* @author MCD Application Team
|
||||
* @version V2.1.0
|
||||
* @date 09-October-2015
|
||||
* @brief CMSIS Cortex-M3 Device System Source File for STM32F2xx devices.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/** @addtogroup CMSIS
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** @addtogroup stm32f2xx_system
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Define to prevent recursive inclusion
|
||||
*/
|
||||
#ifndef __SYSTEM_STM32F2XX_H
|
||||
#define __SYSTEM_STM32F2XX_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** @addtogroup STM32F2xx_System_Includes
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
/** @addtogroup STM32F2xx_System_Exported_types
|
||||
* @{
|
||||
*/
|
||||
/* This variable is updated in three ways:
|
||||
1) by calling CMSIS function SystemCoreClockUpdate()
|
||||
2) by calling HAL API function HAL_RCC_GetSysClockFreq()
|
||||
3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency
|
||||
Note: If you use this function to configure the system clock; then there
|
||||
is no need to call the 2 first functions listed above, since SystemCoreClock
|
||||
variable is updated automatically.
|
||||
*/
|
||||
extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */
|
||||
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup STM32F2xx_System_Exported_Constants
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup STM32F2xx_System_Exported_Macros
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup STM32F2xx_System_Exported_Functions
|
||||
* @{
|
||||
*/
|
||||
|
||||
extern void SystemInit(void);
|
||||
extern void SystemCoreClockUpdate(void);
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /*__SYSTEM_STM32F2XX_H */
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
4936
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f301x8.h
Executable file
4936
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f301x8.h
Executable file
File diff suppressed because it is too large
Load diff
6455
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f302x8.h
Executable file
6455
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f302x8.h
Executable file
File diff suppressed because it is too large
Load diff
6655
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f302xc.h
Executable file
6655
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f302xc.h
Executable file
File diff suppressed because it is too large
Load diff
7856
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f302xe.h
Executable file
7856
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f302xe.h
Executable file
File diff suppressed because it is too large
Load diff
6277
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f303x8.h
Executable file
6277
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f303x8.h
Executable file
File diff suppressed because it is too large
Load diff
7070
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f303xc.h
Executable file
7070
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f303xc.h
Executable file
File diff suppressed because it is too large
Load diff
8346
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f303xe.h
Executable file
8346
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f303xe.h
Executable file
File diff suppressed because it is too large
Load diff
4917
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f318xx.h
Executable file
4917
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f318xx.h
Executable file
File diff suppressed because it is too large
Load diff
6260
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f328xx.h
Executable file
6260
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f328xx.h
Executable file
File diff suppressed because it is too large
Load diff
7628
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f334x8.h
Executable file
7628
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f334x8.h
Executable file
File diff suppressed because it is too large
Load diff
6876
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f358xx.h
Executable file
6876
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f358xx.h
Executable file
File diff suppressed because it is too large
Load diff
6232
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f373xc.h
Executable file
6232
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f373xc.h
Executable file
File diff suppressed because it is too large
Load diff
6043
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f378xx.h
Executable file
6043
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f378xx.h
Executable file
File diff suppressed because it is too large
Load diff
8139
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f398xx.h
Executable file
8139
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F3xx/stm32f398xx.h
Executable file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,251 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file stm32f3xx.h
|
||||
* @author MCD Application Team
|
||||
* @version V2.2.0
|
||||
* @date 13-November-2015
|
||||
* @brief CMSIS STM32F3xx Device Peripheral Access Layer Header File.
|
||||
*
|
||||
* The file is the unique include file that the application programmer
|
||||
* is using in the C source code, usually in main.c. This file contains:
|
||||
* - Configuration section that allows to select:
|
||||
* - The STM32F3xx device used in the target application
|
||||
* - To use or not the peripheral’s drivers in application code(i.e.
|
||||
* code will be based on direct access to peripheral’s registers
|
||||
* rather than drivers API), this option is controlled by
|
||||
* "#define USE_HAL_DRIVER"
|
||||
*
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/** @addtogroup CMSIS
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** @addtogroup stm32f3xx
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef __STM32F3xx_H
|
||||
#define __STM32F3xx_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/** @addtogroup Library_configuration_section
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief STM32 Family
|
||||
*/
|
||||
#if !defined (STM32F3)
|
||||
#define STM32F3
|
||||
#endif /* STM32F3 */
|
||||
|
||||
/* Uncomment the line below according to the target STM32 device used in your
|
||||
application
|
||||
*/
|
||||
|
||||
#if !defined (STM32F301x8) && !defined (STM32F302x8) && !defined (STM32F318xx) && \
|
||||
!defined (STM32F302xC) && !defined (STM32F303xC) && !defined (STM32F358xx) && \
|
||||
!defined (STM32F303x8) && !defined (STM32F334x8) && !defined (STM32F328xx) && \
|
||||
!defined (STM32F302xE) && !defined (STM32F303xE) && !defined (STM32F398xx) && \
|
||||
!defined (STM32F373xC) && !defined (STM32F378xx)
|
||||
|
||||
/* #define STM32F301x8 */ /*!< STM32F301K6, STM32F301K8, STM32F301C6, STM32F301C8,
|
||||
STM32F301R6 and STM32F301R8 Devices */
|
||||
/* #define STM32F302x8 */ /*!< STM32F302K6, STM32F302K8, STM32F302C6, STM32F302C8,
|
||||
STM32F302R6 and STM32F302R8 Devices */
|
||||
/* #define STM32F302xC */ /*!< STM32F302CB, STM32F302CC, STM32F302RB, STM32F302RC,
|
||||
STM32F302VB and STM32F302VC Devices */
|
||||
/* #define STM32F302xE */ /*!< STM32F302RE, STM32F302VE, STM32F302ZE, STM32F302RD,
|
||||
STM32F302VD and STM32F302ZD Devices */
|
||||
/* #define STM32F303x8 */ /*!< STM32F303K6, STM32F303K8, STM32F303C6, STM32F303C8,
|
||||
STM32F303R6 and STM32F303R8 Devices */
|
||||
/* #define STM32F303xC */ /*!< STM32F303CB, STM32F303CC, STM32F303RB, STM32F303RC,
|
||||
STM32F303VB and STM32F303VC Devices */
|
||||
/* #define STM32F303xE */ /*!< STM32F303RE, STM32F303VE, STM32F303ZE, STM32F303RD,
|
||||
STM32F303VD and STM32F303ZD Devices */
|
||||
/* #define STM32F373xC */ /*!< STM32F373C8, STM32F373CB, STM32F373CC,
|
||||
STM32F373R8, STM32F373RB, STM32F373RC,
|
||||
STM32F373V8, STM32F373VB and STM32F373VC Devices */
|
||||
/* #define STM32F334x8 */ /*!< STM32F334C4, STM32F334C6, STM32F334C8,
|
||||
STM32F334R4, STM32F334R6 and STM32F334R8 Devices */
|
||||
/* #define STM32F318xx */ /*!< STM32F318K8, STM32F318C8: STM32F301x8 with regulator off: STM32F318xx Devices */
|
||||
/* #define STM32F328xx */ /*!< STM32F328C8, STM32F328R8: STM32F334x8 with regulator off: STM32F328xx Devices */
|
||||
/* #define STM32F358xx */ /*!< STM32F358CC, STM32F358RC, STM32F358VC: STM32F303xC with regulator off: STM32F358xx Devices */
|
||||
/* #define STM32F378xx */ /*!< STM32F378CC, STM32F378RC, STM32F378VC: STM32F373xC with regulator off: STM32F378xx Devices */
|
||||
/* #define STM32F398xx */ /*!< STM32F398CE, STM32F398RE, STM32F398VE: STM32F303xE with regulator off: STM32F398xx Devices */
|
||||
#endif
|
||||
|
||||
/* Tip: To avoid modifying this file each time you need to switch between these
|
||||
devices, you can define the device in your toolchain compiler preprocessor.
|
||||
*/
|
||||
#if !defined (USE_HAL_DRIVER)
|
||||
/**
|
||||
* @brief Comment the line below if you will not use the peripherals drivers.
|
||||
In this case, these drivers will not be included and the application code will
|
||||
be based on direct access to peripherals registers
|
||||
*/
|
||||
/*#define USE_HAL_DRIVER */
|
||||
#endif /* USE_HAL_DRIVER */
|
||||
|
||||
/**
|
||||
* @brief CMSIS Device version number V2.2.0
|
||||
*/
|
||||
#define __STM32F3xx_CMSIS_DEVICE_VERSION_MAIN (0x02) /*!< [31:24] main version */
|
||||
#define __STM32F3xx_CMSIS_DEVICE_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */
|
||||
#define __STM32F3xx_CMSIS_DEVICE_VERSION_SUB2 (0x00) /*!< [15:8] sub2 version */
|
||||
#define __STM32F3xx_CMSIS_DEVICE_VERSION_RC (0x00) /*!< [7:0] release candidate */
|
||||
#define __STM32F3xx_CMSIS_DEVICE_VERSION ((__CMSIS_DEVICE_VERSION_MAIN << 24)\
|
||||
|(__CMSIS_DEVICE_HAL_VERSION_SUB1 << 16)\
|
||||
|(__CMSIS_DEVICE_HAL_VERSION_SUB2 << 8 )\
|
||||
|(__CMSIS_DEVICE_HAL_VERSION_RC))
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup Device_Included
|
||||
* @{
|
||||
*/
|
||||
|
||||
#if defined(STM32F301x8)
|
||||
#include "stm32f301x8.h"
|
||||
#elif defined(STM32F302x8)
|
||||
#include "stm32f302x8.h"
|
||||
#elif defined(STM32F302xC)
|
||||
#include "stm32f302xc.h"
|
||||
#elif defined(STM32F302xE)
|
||||
#include "stm32f302xe.h"
|
||||
#elif defined(STM32F303x8)
|
||||
#include "stm32f303x8.h"
|
||||
#elif defined(STM32F303xC)
|
||||
#include "stm32f303xc.h"
|
||||
#elif defined(STM32F303xE)
|
||||
#include "stm32f303xe.h"
|
||||
#elif defined(STM32F373xC)
|
||||
#include "stm32f373xc.h"
|
||||
#elif defined(STM32F334x8)
|
||||
#include "stm32f334x8.h"
|
||||
#elif defined(STM32F318xx)
|
||||
#include "stm32f318xx.h"
|
||||
#elif defined(STM32F328xx)
|
||||
#include "stm32f328xx.h"
|
||||
#elif defined(STM32F358xx)
|
||||
#include "stm32f358xx.h"
|
||||
#elif defined(STM32F378xx)
|
||||
#include "stm32f378xx.h"
|
||||
#elif defined(STM32F398xx)
|
||||
#include "stm32f398xx.h"
|
||||
#else
|
||||
#error "Please select first the target STM32F3xx device used in your application (in stm32f3xx.h file)"
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup Exported_types
|
||||
* @{
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
RESET = 0,
|
||||
SET = !RESET
|
||||
} FlagStatus, ITStatus;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DISABLE = 0,
|
||||
ENABLE = !DISABLE
|
||||
} FunctionalState;
|
||||
#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ERROR = 0,
|
||||
SUCCESS = !ERROR
|
||||
} ErrorStatus;
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
/** @addtogroup Exported_macros
|
||||
* @{
|
||||
*/
|
||||
#define SET_BIT(REG, BIT) ((REG) |= (BIT))
|
||||
|
||||
#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT))
|
||||
|
||||
#define READ_BIT(REG, BIT) ((REG) & (BIT))
|
||||
|
||||
#define CLEAR_REG(REG) ((REG) = (0x0))
|
||||
|
||||
#define WRITE_REG(REG, VAL) ((REG) = (VAL))
|
||||
|
||||
#define READ_REG(REG) ((REG))
|
||||
|
||||
#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))
|
||||
|
||||
#define POSITION_VAL(VAL) (__CLZ(__RBIT(VAL)))
|
||||
|
||||
|
||||
#if defined (USE_HAL_DRIVER)
|
||||
#include "stm32f3xx_hal.h"
|
||||
#endif /* USE_HAL_DRIVER */
|
||||
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* __STM32F3xx_H */
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
|
|
@ -0,0 +1,122 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file system_stm32f3xx.h
|
||||
* @author MCD Application Team
|
||||
* @version V2.2.0
|
||||
* @date 13-November-2015
|
||||
* @brief CMSIS Cortex-M4 Device System Source File for STM32F3xx devices.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/** @addtogroup CMSIS
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** @addtogroup stm32f3xx_system
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Define to prevent recursive inclusion
|
||||
*/
|
||||
#ifndef __SYSTEM_STM32F3XX_H
|
||||
#define __SYSTEM_STM32F3XX_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** @addtogroup STM32F3xx_System_Includes
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
/** @addtogroup STM32F3xx_System_Exported_types
|
||||
* @{
|
||||
*/
|
||||
/* This variable is updated in three ways:
|
||||
1) by calling CMSIS function SystemCoreClockUpdate()
|
||||
3) by calling HAL API function HAL_RCC_GetHCLKFreq()
|
||||
3) by calling HAL API function HAL_RCC_ClockConfig()
|
||||
Note: If you use this function to configure the system clock; then there
|
||||
is no need to call the 2 first functions listed above, since SystemCoreClock
|
||||
variable is updated automatically.
|
||||
*/
|
||||
extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */
|
||||
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup STM32F3xx_System_Exported_Constants
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup STM32F3xx_System_Exported_Macros
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup STM32F3xx_System_Exported_Functions
|
||||
* @{
|
||||
*/
|
||||
|
||||
extern void SystemInit(void);
|
||||
extern void SystemCoreClockUpdate(void);
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /*__SYSTEM_STM32F3XX_H */
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
4805
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f401xc.h
Executable file
4805
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f401xc.h
Executable file
File diff suppressed because it is too large
Load diff
4805
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f401xe.h
Executable file
4805
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f401xe.h
Executable file
File diff suppressed because it is too large
Load diff
7491
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f405xx.h
Executable file
7491
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f405xx.h
Executable file
File diff suppressed because it is too large
Load diff
8140
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f407xx.h
Executable file
8140
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f407xx.h
Executable file
File diff suppressed because it is too large
Load diff
3997
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f410cx.h
Executable file
3997
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f410cx.h
Executable file
File diff suppressed because it is too large
Load diff
4001
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f410rx.h
Executable file
4001
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f410rx.h
Executable file
File diff suppressed because it is too large
Load diff
3967
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f410tx.h
Executable file
3967
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f410tx.h
Executable file
File diff suppressed because it is too large
Load diff
4830
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f411xe.h
Executable file
4830
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f411xe.h
Executable file
File diff suppressed because it is too large
Load diff
6743
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f412cx.h
Executable file
6743
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f412cx.h
Executable file
File diff suppressed because it is too large
Load diff
7388
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f412rx.h
Executable file
7388
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f412rx.h
Executable file
File diff suppressed because it is too large
Load diff
7387
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f412vx.h
Executable file
7387
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f412vx.h
Executable file
File diff suppressed because it is too large
Load diff
7389
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f412zx.h
Executable file
7389
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f412zx.h
Executable file
File diff suppressed because it is too large
Load diff
7684
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f415xx.h
Executable file
7684
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f415xx.h
Executable file
File diff suppressed because it is too large
Load diff
8328
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f417xx.h
Executable file
8328
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f417xx.h
Executable file
File diff suppressed because it is too large
Load diff
8901
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f427xx.h
Executable file
8901
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f427xx.h
Executable file
File diff suppressed because it is too large
Load diff
9118
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f429xx.h
Executable file
9118
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f429xx.h
Executable file
File diff suppressed because it is too large
Load diff
9093
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f437xx.h
Executable file
9093
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f437xx.h
Executable file
File diff suppressed because it is too large
Load diff
9306
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f439xx.h
Executable file
9306
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f439xx.h
Executable file
File diff suppressed because it is too large
Load diff
8301
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f446xx.h
Executable file
8301
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f446xx.h
Executable file
File diff suppressed because it is too large
Load diff
10250
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f469xx.h
Executable file
10250
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f469xx.h
Executable file
File diff suppressed because it is too large
Load diff
10441
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f479xx.h
Executable file
10441
eigener_ctrl/stm32f407-olimex/chibios/os/common/ext/CMSIS/ST/STM32F4xx/stm32f479xx.h
Executable file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,264 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file stm32f4xx.h
|
||||
* @author MCD Application Team
|
||||
* @version V2.5.0
|
||||
* @date 22-April-2016
|
||||
* @brief CMSIS STM32F4xx Device Peripheral Access Layer Header File.
|
||||
*
|
||||
* The file is the unique include file that the application programmer
|
||||
* is using in the C source code, usually in main.c. This file contains:
|
||||
* - Configuration section that allows to select:
|
||||
* - The STM32F4xx device used in the target application
|
||||
* - To use or not the peripheral’s drivers in application code(i.e.
|
||||
* code will be based on direct access to peripheral’s registers
|
||||
* rather than drivers API), this option is controlled by
|
||||
* "#define USE_HAL_DRIVER"
|
||||
*
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/** @addtogroup CMSIS
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** @addtogroup stm32f4xx
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef __STM32F4xx_H
|
||||
#define __STM32F4xx_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/** @addtogroup Library_configuration_section
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief STM32 Family
|
||||
*/
|
||||
#if !defined (STM32F4)
|
||||
#define STM32F4
|
||||
#endif /* STM32F4 */
|
||||
|
||||
/* Uncomment the line below according to the target STM32 device used in your
|
||||
application
|
||||
*/
|
||||
#if !defined (STM32F405xx) && !defined (STM32F415xx) && !defined (STM32F407xx) && !defined (STM32F417xx) && \
|
||||
!defined (STM32F427xx) && !defined (STM32F437xx) && !defined (STM32F429xx) && !defined (STM32F439xx) && \
|
||||
!defined (STM32F401xC) && !defined (STM32F401xE) && !defined (STM32F410Tx) && !defined (STM32F410Cx) && \
|
||||
!defined (STM32F410Rx) && !defined (STM32F411xE) && !defined (STM32F446xx) && !defined (STM32F469xx) && \
|
||||
!defined (STM32F479xx) && !defined (STM32F412Cx) && !defined (STM32F412Rx) && !defined (STM32F412Vx) && \
|
||||
!defined (STM32F412Zx)
|
||||
/* #define STM32F405xx */ /*!< STM32F405RG, STM32F405VG and STM32F405ZG Devices */
|
||||
/* #define STM32F415xx */ /*!< STM32F415RG, STM32F415VG and STM32F415ZG Devices */
|
||||
/* #define STM32F407xx */ /*!< STM32F407VG, STM32F407VE, STM32F407ZG, STM32F407ZE, STM32F407IG and STM32F407IE Devices */
|
||||
/* #define STM32F417xx */ /*!< STM32F417VG, STM32F417VE, STM32F417ZG, STM32F417ZE, STM32F417IG and STM32F417IE Devices */
|
||||
/* #define STM32F427xx */ /*!< STM32F427VG, STM32F427VI, STM32F427ZG, STM32F427ZI, STM32F427IG and STM32F427II Devices */
|
||||
/* #define STM32F437xx */ /*!< STM32F437VG, STM32F437VI, STM32F437ZG, STM32F437ZI, STM32F437IG and STM32F437II Devices */
|
||||
/* #define STM32F429xx */ /*!< STM32F429VG, STM32F429VI, STM32F429ZG, STM32F429ZI, STM32F429BG, STM32F429BI, STM32F429NG,
|
||||
STM32F439NI, STM32F429IG and STM32F429II Devices */
|
||||
/* #define STM32F439xx */ /*!< STM32F439VG, STM32F439VI, STM32F439ZG, STM32F439ZI, STM32F439BG, STM32F439BI, STM32F439NG,
|
||||
STM32F439NI, STM32F439IG and STM32F439II Devices */
|
||||
/* #define STM32F401xC */ /*!< STM32F401CB, STM32F401CC, STM32F401RB, STM32F401RC, STM32F401VB and STM32F401VC Devices */
|
||||
/* #define STM32F401xE */ /*!< STM32F401CD, STM32F401RD, STM32F401VD, STM32F401CE, STM32F401RE and STM32F401VE Devices */
|
||||
/* #define STM32F410Tx */ /*!< STM32F410T8 and STM32F410TB Devices */
|
||||
/* #define STM32F410Cx */ /*!< STM32F410C8 and STM32F410CB Devices */
|
||||
/* #define STM32F410Rx */ /*!< STM32F410R8 and STM32F410RB Devices */
|
||||
/* #define STM32F411xE */ /*!< STM32F411CC, STM32F411RC, STM32F411VC, STM32F411CE, STM32F411RE and STM32F411VE Devices */
|
||||
/* #define STM32F446xx */ /*!< STM32F446MC, STM32F446ME, STM32F446RC, STM32F446RE, STM32F446VC, STM32F446VE, STM32F446ZC,
|
||||
and STM32F446ZE Devices */
|
||||
/* #define STM32F469xx */ /*!< STM32F469AI, STM32F469II, STM32F469BI, STM32F469NI, STM32F469AG, STM32F469IG, STM32F469BG,
|
||||
STM32F469NG, STM32F469AE, STM32F469IE, STM32F469BE and STM32F469NE Devices */
|
||||
/* #define STM32F479xx */ /*!< STM32F479AI, STM32F479II, STM32F479BI, STM32F479NI, STM32F479AG, STM32F479IG, STM32F479BG
|
||||
and STM32F479NG Devices */
|
||||
/* #define STM32F412Cx */ /*!< STM32F412CEU and STM32F412CGU Devices */
|
||||
/* #define STM32F412Zx */ /*!< STM32F412ZET, STM32F412ZGT, STM32F412ZEJ and STM32F412ZGJ Devices */
|
||||
/* #define STM32F412Vx */ /*!< STM32F412VET, STM32F412VGT, STM32F412VEH and STM32F412VGH Devices */
|
||||
/* #define STM32F412Rx */ /*!< STM32F412RET, STM32F412RGT, STM32F412REY and STM32F412RGY Devices */
|
||||
#endif
|
||||
|
||||
/* Tip: To avoid modifying this file each time you need to switch between these
|
||||
devices, you can define the device in your toolchain compiler preprocessor.
|
||||
*/
|
||||
#if !defined (USE_HAL_DRIVER)
|
||||
/**
|
||||
* @brief Comment the line below if you will not use the peripherals drivers.
|
||||
In this case, these drivers will not be included and the application code will
|
||||
be based on direct access to peripherals registers
|
||||
*/
|
||||
/*#define USE_HAL_DRIVER */
|
||||
#endif /* USE_HAL_DRIVER */
|
||||
|
||||
/**
|
||||
* @brief CMSIS version number V2.5.0
|
||||
*/
|
||||
#define __STM32F4xx_CMSIS_VERSION_MAIN (0x02U) /*!< [31:24] main version */
|
||||
#define __STM32F4xx_CMSIS_VERSION_SUB1 (0x05U) /*!< [23:16] sub1 version */
|
||||
#define __STM32F4xx_CMSIS_VERSION_SUB2 (0x00U) /*!< [15:8] sub2 version */
|
||||
#define __STM32F4xx_CMSIS_VERSION_RC (0x00U) /*!< [7:0] release candidate */
|
||||
#define __STM32F4xx_CMSIS_VERSION ((__STM32F4xx_CMSIS_VERSION_MAIN << 24)\
|
||||
|(__STM32F4xx_CMSIS_VERSION_SUB1 << 16)\
|
||||
|(__STM32F4xx_CMSIS_VERSION_SUB2 << 8 )\
|
||||
|(__STM32F4xx_CMSIS_VERSION))
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup Device_Included
|
||||
* @{
|
||||
*/
|
||||
|
||||
#if defined(STM32F405xx)
|
||||
#include "stm32f405xx.h"
|
||||
#elif defined(STM32F415xx)
|
||||
#include "stm32f415xx.h"
|
||||
#elif defined(STM32F407xx)
|
||||
#include "stm32f407xx.h"
|
||||
#elif defined(STM32F417xx)
|
||||
#include "stm32f417xx.h"
|
||||
#elif defined(STM32F427xx)
|
||||
#include "stm32f427xx.h"
|
||||
#elif defined(STM32F437xx)
|
||||
#include "stm32f437xx.h"
|
||||
#elif defined(STM32F429xx)
|
||||
#include "stm32f429xx.h"
|
||||
#elif defined(STM32F439xx)
|
||||
#include "stm32f439xx.h"
|
||||
#elif defined(STM32F401xC)
|
||||
#include "stm32f401xc.h"
|
||||
#elif defined(STM32F401xE)
|
||||
#include "stm32f401xe.h"
|
||||
#elif defined(STM32F410Tx)
|
||||
#include "stm32f410tx.h"
|
||||
#elif defined(STM32F410Cx)
|
||||
#include "stm32f410cx.h"
|
||||
#elif defined(STM32F410Rx)
|
||||
#include "stm32f410rx.h"
|
||||
#elif defined(STM32F411xE)
|
||||
#include "stm32f411xe.h"
|
||||
#elif defined(STM32F446xx)
|
||||
#include "stm32f446xx.h"
|
||||
#elif defined(STM32F469xx)
|
||||
#include "stm32f469xx.h"
|
||||
#elif defined(STM32F479xx)
|
||||
#include "stm32f479xx.h"
|
||||
#elif defined(STM32F412Cx)
|
||||
#include "stm32f412cx.h"
|
||||
#elif defined(STM32F412Zx)
|
||||
#include "stm32f412zx.h"
|
||||
#elif defined(STM32F412Rx)
|
||||
#include "stm32f412rx.h"
|
||||
#elif defined(STM32F412Vx)
|
||||
#include "stm32f412vx.h"
|
||||
#else
|
||||
#error "Please select first the target STM32F4xx device used in your application (in stm32f4xx.h file)"
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup Exported_types
|
||||
* @{
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
RESET = 0U,
|
||||
SET = !RESET
|
||||
} FlagStatus, ITStatus;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DISABLE = 0U,
|
||||
ENABLE = !DISABLE
|
||||
} FunctionalState;
|
||||
#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ERROR = 0U,
|
||||
SUCCESS = !ERROR
|
||||
} ErrorStatus;
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
/** @addtogroup Exported_macro
|
||||
* @{
|
||||
*/
|
||||
#define SET_BIT(REG, BIT) ((REG) |= (BIT))
|
||||
|
||||
#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT))
|
||||
|
||||
#define READ_BIT(REG, BIT) ((REG) & (BIT))
|
||||
|
||||
#define CLEAR_REG(REG) ((REG) = (0x0))
|
||||
|
||||
#define WRITE_REG(REG, VAL) ((REG) = (VAL))
|
||||
|
||||
#define READ_REG(REG) ((REG))
|
||||
|
||||
#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))
|
||||
|
||||
#define POSITION_VAL(VAL) (__CLZ(__RBIT(VAL)))
|
||||
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#if defined (USE_HAL_DRIVER)
|
||||
#include "stm32f4xx_hal.h"
|
||||
#endif /* USE_HAL_DRIVER */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* __STM32F4xx_H */
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue