aboutsummaryrefslogtreecommitdiffstats
path: root/os/hal/ports/STM32/LLD/GPIOv2/hal_pal_lld.h
diff options
context:
space:
mode:
authorGiovanni Di Sirio <gdisirio@gmail.com>2017-09-01 08:31:28 +0000
committerGiovanni Di Sirio <gdisirio@gmail.com>2017-09-01 08:31:28 +0000
commitd671671f159cb6ba8c8ded9c9878cc33680bb729 (patch)
tree9440a212cba4c916746a171a6f20b48d7ef15248 /os/hal/ports/STM32/LLD/GPIOv2/hal_pal_lld.h
parent08cde3229436eac72ab86a31c0902922ad14fb67 (diff)
downloadChibiOS-d671671f159cb6ba8c8ded9c9878cc33680bb729.tar.gz
ChibiOS-d671671f159cb6ba8c8ded9c9878cc33680bb729.tar.bz2
ChibiOS-d671671f159cb6ba8c8ded9c9878cc33680bb729.zip
Callbacks handling added to STM32 GPIOv2, added F3 support to PAL callbacks demo.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@10517 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/hal/ports/STM32/LLD/GPIOv2/hal_pal_lld.h')
-rw-r--r--os/hal/ports/STM32/LLD/GPIOv2/hal_pal_lld.h55
1 files changed, 51 insertions, 4 deletions
diff --git a/os/hal/ports/STM32/LLD/GPIOv2/hal_pal_lld.h b/os/hal/ports/STM32/LLD/GPIOv2/hal_pal_lld.h
index 80b1a8fbc..ba90ccafd 100644
--- a/os/hal/ports/STM32/LLD/GPIOv2/hal_pal_lld.h
+++ b/os/hal/ports/STM32/LLD/GPIOv2/hal_pal_lld.h
@@ -86,12 +86,12 @@
* @{
*/
/**
- * @brief This mode is implemented as input.
+ * @brief Implemented as input.
*/
#define PAL_MODE_RESET PAL_STM32_MODE_INPUT
/**
- * @brief This mode is implemented as input with pull-up.
+ * @brief Implemented as input with pull-up.
*/
#define PAL_MODE_UNCONNECTED PAL_MODE_INPUT_PULLUP
@@ -233,7 +233,7 @@ typedef struct {
uint16_t clear;
} H;
} BSRR;
- volatile uint32_t LCKR;
+ volatile uint32_t LOCKR;
volatile uint32_t AFRL;
volatile uint32_t AFRH;
volatile uint32_t BRR;
@@ -329,13 +329,23 @@ typedef uint32_t iomode_t;
typedef uint32_t ioline_t;
/**
- * @brief Port Identifier.
+ * @brief Type of an event mode.
+ */
+typedef uint32_t ioeventmode_t;
+
+/**
+ * @brief Type of a port Identifier.
* @details This type can be a scalar or some kind of pointer, do not make
* any assumption about it, use the provided macros when populating
* variables of this type.
*/
typedef stm32_gpio_t * ioportid_t;
+/**
+ * @brief Type of an pad identifier.
+ */
+typedef uint32_t iopadid_t;
+
/*===========================================================================*/
/* I/O Ports Identifiers. */
/* The low level driver wraps the definitions already present in the STM32 */
@@ -539,7 +549,38 @@ typedef stm32_gpio_t * ioportid_t;
*/
#define pal_lld_writepad(port, pad, bit) pal_lld_writegroup(port, 1, pad, bit)
+/**
+ * @brief Pad event enable.
+ * @details This function programs an event callback in the specified mode.
+ * @note Programming an unknown or unsupported mode is silently ignored.
+ *
+ * @param[in] port port identifier
+ * @param[in] pad pad number within the port
+ * @param[in] mode pad event mode
+ * @param[in] callback event callback function
+ * @param[in] arg callback argument
+ *
+ * @notapi
+ */
+#define pal_lld_enablepadevent(port, pad, mode, callback, arg) \
+ _pal_lld_enablepadevent(port, pad, mode, callback, arg)
+
+/**
+ * @brief Pad event disable.
+ * @details This function disables previously programmed event callbacks.
+ *
+ * @param[in] port port identifier
+ * @param[in] pad pad number within the port
+ *
+ * @notapi
+ */
+#define pal_lld_disablepadevent(port, pad) \
+ _pal_lld_disablepadevent(port, pad)
+
+#if !defined(__DOXYGEN__)
extern const PALConfig pal_default_config;
+extern palevent_t _pal_events[16];
+#endif
#ifdef __cplusplus
extern "C" {
@@ -548,6 +589,12 @@ extern "C" {
void _pal_lld_setgroupmode(ioportid_t port,
ioportmask_t mask,
iomode_t mode);
+ void _pal_lld_enablepadevent(ioportid_t port,
+ iopadid_t pad,
+ ioeventmode_t mode,
+ palcallback_t callback,
+ void *arg);
+ void _pal_lld_disablepadevent(ioportid_t port, iopadid_t pad);
#ifdef __cplusplus
}
#endif