Efficiency changes.

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@12436 110e8d01-0319-4d1e-a829-52ad28d1bb01
This commit is contained in:
Giovanni Di Sirio 2018-11-18 16:00:59 +00:00
parent 118309d74b
commit e9fbae0881
2 changed files with 35 additions and 43 deletions

View File

@ -33,15 +33,6 @@
/* Driver local definitions. */ /* Driver local definitions. */
/*===========================================================================*/ /*===========================================================================*/
/* Handling differences in ST headers.*/
#if !defined(STM32L4XX) && !defined(STM32L4XXP)
#define EMR1 EMR
#define IMR1 IMR
#define PR1 PR
#define RTSR1 RTSR
#define FTSR1 FTSR
#endif
/*===========================================================================*/ /*===========================================================================*/
/* Driver exported variables. */ /* Driver exported variables. */
/*===========================================================================*/ /*===========================================================================*/
@ -186,38 +177,6 @@ void extiEnableLine(extiline_t line, extimode_t mode) {
#endif #endif
} }
/**
* @brief STM32 EXTI group 1 IRQ status clearing.
*
* @param[in] mask mask of group 1 lines to be initialized
*
* @api
*/
void extiClearGroup1(uint32_t mask) {
/* Masked out lines must not be touched by this driver.*/
osalDbgAssert((mask & STM32_EXTI_IMR1_MASK) == 0U, "fixed line");
EXTI->PR1 = mask;
}
#if (STM32_EXTI_NUM_LINES > 32) || defined(__DOXYGEN__)
/**
* @brief STM32 EXTI group 2 IRQ status clearing.
*
* @param[in] mask mask of group 2 lines to be initialized
*
* @api
*/
void extiClearGroup2(uint32_t mask) {
/* Masked out lines must not be touched by this driver.*/
osalDbgAssert((mask & STM32_EXTI_IMR2_MASK) == 0U, "fixed line");
EXTI->PR2 = mask;
}
#endif /* STM32_EXTI_NUM_LINES > 32 */
/** /**
* @brief STM32 EXTI line IRQ status clearing. * @brief STM32 EXTI line IRQ status clearing.
* *

View File

@ -44,6 +44,15 @@
#define EXTI_MODE_ACTION_EVENT 4U /**< @brief Event mode. */ #define EXTI_MODE_ACTION_EVENT 4U /**< @brief Event mode. */
/** @} */ /** @} */
/* Handling differences in ST headers.*/
#if !defined(STM32L4XX) && !defined(STM32L4XXP)
#define EMR1 EMR
#define IMR1 IMR
#define PR1 PR
#define RTSR1 RTSR
#define FTSR1 FTSR
#endif
/*===========================================================================*/ /*===========================================================================*/
/* Driver pre-compile time settings. */ /* Driver pre-compile time settings. */
/*===========================================================================*/ /*===========================================================================*/
@ -102,6 +111,32 @@ typedef uint32_t extimode_t;
*/ */
#define EXTI_MASK2(line) (uint32_t)(1U << ((line) - 32U)) #define EXTI_MASK2(line) (uint32_t)(1U << ((line) - 32U))
/**
* @brief STM32 EXTI group 1 IRQ status clearing.
*
* @param[in] mask mask of group 1 lines to be initialized
*
* @api
*/
#define extiClearGroup1(mask) do { \
osalDbgAssert(((mask) & STM32_EXTI_IMR1_MASK) == 0U, "fixed lines"); \
EXTI->PR1 = (uint32_t)(mask); \
} while (false)
#if (STM32_EXTI_NUM_LINES > 32) || defined(__DOXYGEN__)
/**
* @brief STM32 EXTI group 2 IRQ status clearing.
*
* @param[in] mask mask of group 2 lines to be initialized
*
* @api
*/
#define extiClearGroup2(mask) do { \
osalDbgAssert(((mask) & STM32_EXTI_IMR2_MASK) == 0U, "fixed lines"); \
EXTI->PR2 = (uint32_t)(mask); \
} while (false)
#endif /* STM32_EXTI_NUM_LINES > 32 */
/*===========================================================================*/ /*===========================================================================*/
/* External declarations. */ /* External declarations. */
/*===========================================================================*/ /*===========================================================================*/
@ -110,10 +145,8 @@ typedef uint32_t extimode_t;
extern "C" { extern "C" {
#endif #endif
void extiEnableGroup1(uint32_t mask, extimode_t mode); void extiEnableGroup1(uint32_t mask, extimode_t mode);
void extiClearGroup1(uint32_t mask);
#if (STM32_EXTI_NUM_LINES > 32) || defined(__DOXYGEN__) #if (STM32_EXTI_NUM_LINES > 32) || defined(__DOXYGEN__)
void extiEnableGroup2(uint32_t mask, extimode_t mode); void extiEnableGroup2(uint32_t mask, extimode_t mode);
void extiClearGroup2(uint32_t mask);
#endif /* STM32_EXTI_NUM_LINES > 32 */ #endif /* STM32_EXTI_NUM_LINES > 32 */
void extiEnableLine(extiline_t line, extimode_t mode); void extiEnableLine(extiline_t line, extimode_t mode);
void extiClearLine(extiline_t line); void extiClearLine(extiline_t line);