123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421 |
- /** @file gio.c
- * @brief GIO Driver Implementation File
- * @date 29.May.2013
- * @version 03.05.02
- *
- */
- /* (c) Texas Instruments 2009-2013, All rights reserved. */
- /* USER CODE BEGIN (0) */
- /* USER CODE END */
- #include "gio.h"
- /* USER CODE BEGIN (1) */
- /* USER CODE END */
- /** @fn void gioInit(void)
- * @brief Initializes the GIO Driver
- *
- * This function initializes the GIO module and set the GIO ports
- * to the initial values.
- */
- /* SourceId : GIO_SourceId_001 */
- /* Requirements : HL_SR115, HL_SR116, HL_SR117, HL_SR118, HL_SR119, HL_SR120, HL_SR121, HL_SR122 */
- void gioInit(void)
- {
- /* USER CODE BEGIN (2) */
- /* USER CODE END */
- /** bring GIO module out of reset */
- gioREG->GCR0 = 1U;
- gioREG->INTENACLR = 0xFFU;
- gioREG->LVLCLR = 0xFFU;
- /** @b initialize @b Port @b A */
- /** - Port A output values */
- gioPORTA->DOUT = 0U /* Bit 0 */
- | (0U << 1U) /* Bit 1 */
- | (0U << 2U) /* Bit 2 */
- | (0U << 3U) /* Bit 3 */
- | (0U << 4U) /* Bit 4 */
- | (0U << 5U) /* Bit 5 */
- | (0U << 6U) /* Bit 6 */
- | (0U << 7U); /* Bit 7 */
- /** - Port A direction */
- gioPORTA->DIR = 0U /* Bit 0 */
- | (0U << 1U) /* Bit 1 */
- | (0U << 2U) /* Bit 2 */
- | (0U << 3U) /* Bit 3 */
- | (0U << 4U) /* Bit 4 */
- | (0U << 5U) /* Bit 5 */
- | (0U << 6U) /* Bit 6 */
- | (0U << 7U); /* Bit 7 */
- /** - Port A open drain enable */
- gioPORTA->PDR = 0U /* Bit 0 */
- | (0U << 1U) /* Bit 1 */
- | (0U << 2U) /* Bit 2 */
- | (0U << 3U) /* Bit 3 */
- | (0U << 4U) /* Bit 4 */
- | (0U << 5U) /* Bit 5 */
- | (0U << 6U) /* Bit 6 */
- | (0U << 7U); /* Bit 7 */
- /** - Port A pullup / pulldown selection */
- gioPORTA->PSL = 0U /* Bit 0 */
- | (0U << 1U) /* Bit 1 */
- | (0U << 2U) /* Bit 2 */
- | (0U << 3U) /* Bit 3 */
- | (0U << 4U) /* Bit 4 */
- | (0U << 5U) /* Bit 5 */
- | (0U << 6U) /* Bit 6 */
- | (0U << 7U); /* Bit 7 */
- /** - Port A pullup / pulldown enable*/
- gioPORTA->PULDIS = 0U /* Bit 0 */
- | (0U << 1U) /* Bit 1 */
- | (0U << 2U) /* Bit 2 */
- | (0U << 3U) /* Bit 3 */
- | (0U << 4U) /* Bit 4 */
- | (0U << 5U) /* Bit 5 */
- | (0U << 6U) /* Bit 6 */
- | (0U << 7U); /* Bit 7 */
- /** @b initialize @b Port @b B */
- /** - Port B output values */
- gioPORTB->DOUT = 0U /* Bit 0 */
- | (0U << 1U) /* Bit 1 */
- | (0U << 2U) /* Bit 2 */
- | (0U << 3U) /* Bit 3 */
- | (0U << 4U) /* Bit 4 */
- | (0U << 5U) /* Bit 5 */
- | (0U << 6U) /* Bit 6 */
- | (0U << 7U); /* Bit 7 */
- /** - Port B direction */
- gioPORTB->DIR = 0U /* Bit 0 */
- | (0U << 1U) /* Bit 1 */
- | (0U << 2U) /* Bit 2 */
- | (0U << 3U) /* Bit 3 */
- | (0U << 4U) /* Bit 4 */
- | (0U << 5U) /* Bit 5 */
- | (0U << 6U) /* Bit 6 */
- | (0U << 7U); /* Bit 7 */
- /** - Port B open drain enable */
- gioPORTB->PDR = 0U /* Bit 0 */
- | (0U << 1U) /* Bit 1 */
- | (0U << 2U) /* Bit 2 */
- | (0U << 3U) /* Bit 3 */
- | (0U << 4U) /* Bit 4 */
- | (0U << 5U) /* Bit 5 */
- | (0U << 6U) /* Bit 6 */
- | (0U << 7U); /* Bit 7 */
- /** - Port B pullup / pulldown selection */
- gioPORTB->PSL = 0U /* Bit 0 */
- | (0U << 1U) /* Bit 1 */
- | (0U << 2U) /* Bit 2 */
- | (0U << 3U) /* Bit 3 */
- | (0U << 4U) /* Bit 4 */
- | (0U << 5U) /* Bit 5 */
- | (0U << 6U) /* Bit 6 */
- | (0U << 7U); /* Bit 7 */
- /** - Port B pullup / pulldown enable*/
- gioPORTB->PULDIS = 0U /* Bit 0 */
- | (0U << 1U) /* Bit 1 */
- | (0U << 2U) /* Bit 2 */
- | (0U << 3U) /* Bit 3 */
- | (0U << 4U) /* Bit 4 */
- | (0U << 5U) /* Bit 5 */
- | (0U << 6U) /* Bit 6 */
- | (0U << 7U); /* Bit 7 */
- /* USER CODE BEGIN (3) */
- /* USER CODE END */
- /** @b initialize @b interrupts */
- /** - interrupt polarity */
- gioREG->POL = 0U /* Bit 0 */
- | (0U << 1U) /* Bit 1 */
- | (0U << 2U) /* Bit 2 */
- | (0U << 3U) /* Bit 3 */
- | (0U << 4U) /* Bit 4 */
- | (0U << 5U) /* Bit 5 */
- | (0U << 6U) /* Bit 6 */
- | (0U << 7U) /* Bit 7 */
- | (0U << 8U) /* Bit 8 */
- | (0U << 9U) /* Bit 9 */
- | (0U << 10U) /* Bit 10 */
- | (0U << 11U) /* Bit 11 */
- | (0U << 12U) /* Bit 12 */
- | (0U << 13U) /* Bit 13 */
- | (0U << 14U) /* Bit 14 */
- | (0U << 15U);/* Bit 15 */
- /** - interrupt level */
- gioREG->LVLSET = 0U /* Bit 0 */
- | (0U << 1U) /* Bit 1 */
- | (0U << 2U) /* Bit 2 */
- | (0U << 3U) /* Bit 3 */
- | (0U << 4U) /* Bit 4 */
- | (0U << 5U) /* Bit 5 */
- | (0U << 6U) /* Bit 6 */
- | (0U << 7U) /* Bit 7 */
- | (0U << 8U) /* Bit 8 */
- | (0U << 9U) /* Bit 9 */
- | (0U << 10U) /* Bit 10 */
- | (0U << 11U) /* Bit 11 */
- | (0U << 12U) /* Bit 12 */
- | (0U << 13U) /* Bit 13 */
- | (0U << 14U) /* Bit 14 */
- | (0U << 15U);/* Bit 15 */
-
- /** - clear all pending interrupts */
- gioREG->FLG = 0xFFU;
- /** - enable interrupts */
- gioREG->INTENASET = 0U /* Bit 0 */
- | (0U << 1U) /* Bit 1 */
- | (0U << 2U) /* Bit 2 */
- | (0U << 3U) /* Bit 3 */
- | (0U << 4U) /* Bit 4 */
- | (0U << 5U) /* Bit 5 */
- | (0U << 6U) /* Bit 6 */
- | (0U << 7U) /* Bit 7 */
- | (0U << 8U) /* Bit 8 */
- | (0U << 9U) /* Bit 9 */
- | (0U << 10U) /* Bit 10 */
- | (0U << 11U) /* Bit 11 */
- | (0U << 12U) /* Bit 12 */
- | (0U << 13U) /* Bit 13 */
- | (0U << 14U) /* Bit 14 */
- | (0U << 15U);/* Bit 15 */
- /* USER CODE BEGIN (4) */
- /* USER CODE END */
- }
- /** @fn void gioSetDirection(gioPORT_t *port, uint32 dir)
- * @brief Set Port Direction
- * @param[in] port pointer to GIO port:
- * - gioPORTA: PortA pointer
- * - gioPORTB: PortB pointer
- * @param[in] dir value to write to DIR register
- *
- * Set the direction of GIO pins at runtime.
- */
- /* SourceId : GIO_SourceId_002 */
- /* Requirements : HL_SR123 */
- void gioSetDirection(gioPORT_t *port, uint32 dir)
- {
- port->DIR = dir;
- }
- /** @fn void gioSetBit(gioPORT_t *port, uint32 bit, uint32 value)
- * @brief Write Bit
- * @param[in] port pointer to GIO port:
- * - gioPORTA: PortA pointer
- * - gioPORTB: PortB pointer
- * @param[in] bit number 0-7 that specifies the bit to be written to.
- * - 0: LSB
- * - 7: MSB
- * @param[in] value binary value to write to bit
- *
- * Writes a value to the specified pin of the given GIO port
- */
- /* SourceId : GIO_SourceId_003 */
- /* Requirements : HL_SR126 */
- void gioSetBit(gioPORT_t *port, uint32 bit, uint32 value)
- {
- /* USER CODE BEGIN (5) */
- /* USER CODE END */
- if (value != 0U)
- {
- port->DSET = 1U << bit;
- }
- else
- {
- port->DCLR = 1U << bit;
- }
- }
- /** @fn void gioSetPort(gioPORT_t *port, uint32 value)
- * @brief Write Port Value
- * @param[in] port pointer to GIO port:
- * - gioPORTA: PortA pointer
- * - gioPORTB: PortB pointer
- * @param[in] value value to write to port
- *
- * Writes a value to all pin of a given GIO port
- */
- /* SourceId : GIO_SourceId_004 */
- /* Requirements : HL_SR127 */
- void gioSetPort(gioPORT_t *port, uint32 value)
- {
- /* USER CODE BEGIN (6) */
- /* USER CODE END */
- port->DOUT = value;
- /* USER CODE BEGIN (7) */
- /* USER CODE END */
- }
- /** @fn uint32 gioGetBit(gioPORT_t *port, uint32 bit)
- * @brief Read Bit
- * @param[in] port pointer to GIO port:
- * - gioPORTA: PortA pointer
- * - gioPORTB: PortB pointer
- * @param[in] bit number 0-7 that specifies the bit to be written to.
- * - 0: LSB
- * - 7: MSB
- *
- * Reads a the current value from the specified pin of the given GIO port
- */
- /* SourceId : GIO_SourceId_005 */
- /* Requirements : HL_SR124 */
- uint32 gioGetBit(gioPORT_t *port, uint32 bit)
- {
- /* USER CODE BEGIN (8) */
- /* USER CODE END */
- return (port->DIN >> bit) & 1U;
- }
- /** @fn uint32 gioGetPort(gioPORT_t *port)
- * @brief Read Port Value
- * @param[in] port pointer to GIO port:
- * - gioPORTA: PortA pointer
- * - gioPORTB: PortB pointer
- *
- * Reads a the current value of a given GIO port
- */
- /* SourceId : GIO_SourceId_006 */
- /* Requirements : HL_SR125 */
- uint32 gioGetPort(gioPORT_t *port)
- {
- /* USER CODE BEGIN (9) */
- /* USER CODE END */
- return port->DIN;
- }
- /** @fn void gioToggleBit(gioPORT_t *port, uint32 bit)
- * @brief Write Bit
- * @param[in] port pointer to GIO port:
- * - gioPORTA: PortA pointer
- * - gioPORTB: PortB pointer
- * @param[in] bit number 0-7 that specifies the bit to be written to.
- * - 0: LSB
- * - 7: MSB
- *
- * Toggle a value to the specified pin of the given GIO port
- */
- /* SourceId : GIO_SourceId_007 */
- /* Requirements : */
- void gioToggleBit(gioPORT_t *port, uint32 bit)
- {
- /* USER CODE BEGIN (10) */
- /* USER CODE END */
- if ((port->DIN & (1U << bit)) != 0U)
- {
- port->DCLR = 1U << bit;
- }
- else
- {
- port->DSET = 1U << bit;
- }
- }
- /** @fn void gioEnableNotification(uint32 bit)
- * @brief Enable Interrupt
- * @param[in] port pointer to GIO port:
- * - gioPORTA: PortA pointer
- * - gioPORTB: PortB pointer
- * @param[in] bit interrupt pin to enable
- * - 0: LSB
- * - 7: MSB
- *
- * Enables an interrupt pin of selected port
- */
- /* SourceId : GIO_SourceId_008 */
- /* Requirements : HL_SR128 */
- void gioEnableNotification(gioPORT_t *port, uint32 bit)
- {
- /* USER CODE BEGIN (11) */
- /* USER CODE END */
- if (port == gioPORTA)
- {
- gioREG->INTENASET = 1U << bit;
- }
- else if (port == gioPORTB)
- {
- gioREG->INTENASET = 1U << (bit + 8);
- }
- else
- {
- /* Empty */
- }
- }
- /** @fn void gioDisableNotification(uint32 bit)
- * @brief Disable Interrupt
- * @param[in] port pointer to GIO port:
- * - gioPORTA: PortA pointer
- * - gioPORTB: PortB pointer
- * @param[in] bit interrupt pin to enable
- * - 0: LSB
- * - 7: MSB
- *
- * Disables an interrupt pin of selected port
- */
- /* SourceId : GIO_SourceId_009 */
- /* Requirements : HL_SR129 */
- void gioDisableNotification(gioPORT_t *port, uint32 bit)
- {
- /* USER CODE BEGIN (12) */
- /* USER CODE END */
- if (port == gioPORTA)
- {
- gioREG->INTENACLR = 1U << bit;
- }
- else if (port == gioPORTB)
- {
- gioREG->INTENACLR = 1U << (bit + 8);
- }
- else
- {
- /* Empty */
- }
- }
- /* USER CODE BEGIN (19) */
- /* USER CODE END */
|