This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CCS/TMS320F28027F: External interrupt. typedef enum is not correct

Part Number: TMS320F28027F

Tool/software: Code Composer Studio

 In function "GPIO_setExtInt"  it is powerful to put any output, this is not entirely correct. even 32..38. But this will not work. It is powerful to avoid this if you add enum only the pins on which an interrupt is possible. 

  • Hi Andrew

    Can you please post which file and lines of code you are referring to so I may look into this more thoroughly?

    Sean
  • gpio.c

    void GPIO_setExtInt(GPIO_Handle gpioHandle,const GPIO_Number_e gpioNumber,const CPU_ExtIntNumber_e intNumber)
    {
    GPIO_Obj *gpio = (GPIO_Obj *)gpioHandle;


    ENABLE_PROTECTED_REGISTER_WRITE_MODE;

    // associate the interrupt with the GPIO pin
    gpio->GPIOXINTnSEL[intNumber] = gpioNumber;

    DISABLE_PROTECTED_REGISTER_WRITE_MODE;

    return;
    } // end of GPIO_setExtInt() function

    gpio.h

    typedef enum
    {
    GPIO_Number_0=0, //!< Denotes GPIO number 0
    GPIO_Number_1, //!< Denotes GPIO number 1
    GPIO_Number_2, //!< Denotes GPIO number 2
    GPIO_Number_3, //!< Denotes GPIO number 3
    GPIO_Number_4, //!< Denotes GPIO number 4
    GPIO_Number_5, //!< Denotes GPIO number 5
    GPIO_Number_6, //!< Denotes GPIO number 6
    GPIO_Number_7, //!< Denotes GPIO number 7
    GPIO_Rsvd_8, //!< This GPIO not present
    GPIO_Rsvd_9, //!< This GPIO not present
    GPIO_Rsvd_10, //!< This GPIO not present
    GPIO_Rsvd_11, //!< This GPIO not present
    GPIO_Number_12, //!< Denotes GPIO number 12
    GPIO_Rsvd_13, //!< This GPIO not present
    GPIO_Rsvd_14, //!< This GPIO not present
    GPIO_Rsvd_15, //!< This GPIO not present
    GPIO_Number_16, //!< Denotes GPIO number 16
    GPIO_Number_17, //!< Denotes GPIO number 17
    GPIO_Number_18, //!< Denotes GPIO number 18
    GPIO_Number_19, //!< Denotes GPIO number 19
    GPIO_Rsvd_20, //!< This GPIO not present
    GPIO_Rsvd_21, //!< This GPIO not present
    GPIO_Rsvd_22, //!< This GPIO not present
    GPIO_Rsvd_23, //!< This GPIO not present
    GPIO_Rsvd_24, //!< This GPIO not present
    GPIO_Rsvd_25, //!< This GPIO not present
    GPIO_Rsvd_26, //!< This GPIO not present
    GPIO_Rsvd_27, //!< This GPIO not present
    GPIO_Number_28, //!< Denotes GPIO number 28
    GPIO_Number_29, //!< Denotes GPIO number 29
    GPIO_Rsvd_30, //!< This GPIO not present
    GPIO_Rsvd_31, //!< This GPIO not present
    GPIO_Number_32, //!< Denotes GPIO number 32
    GPIO_Number_33, //!< Denotes GPIO number 33
    GPIO_Number_34, //!< Denotes GPIO number 34
    GPIO_Number_35, //!< Denotes GPIO number 35
    GPIO_Number_36, //!< Denotes GPIO number 36
    GPIO_Number_37, //!< Denotes GPIO number 37
    GPIO_Number_38, //!< Denotes GPIO number 38
    GPIO_numGpios
    } GPIO_Number_e;

    example - for 27F
    www.ti.com/.../sprufn3d.pdf page 98.
  • For example

    typedef enum
    {
    GPIOXINT_Number_0=0, //!< Denotes GPIO number 0
    GPIOXINT_Number_1, //!< Denotes GPIO number 1
    GPIOXINT_Number_2, //!< Denotes GPIO number 2
    GPIOXINT_Number_3, //!< Denotes GPIO number 3
    GPIOXINT_Number_4, //!< Denotes GPIO number 4
    GPIOXINT_Number_5, //!< Denotes GPIO number 5
    GPIOXINT_Number_6, //!< Denotes GPIO number 6
    GPIOXINT_Number_7, //!< Denotes GPIO number 7
    GPIOXINT_Rsvd_8, //!< This GPIO not present
    GPIOXINT_Rsvd_9, //!< This GPIO not present
    GPIOXINT_Rsvd_10, //!< This GPIO not present
    GPIOXINT_Rsvd_11, //!< This GPIO not present
    GPIOXINT_Number_12, //!< Denotes GPIO number 12
    GPIOXINT_Rsvd_13, //!< This GPIO not present
    GPIOXINT_Rsvd_14, //!< This GPIO not present
    GPIOXINT_Rsvd_15, //!< This GPIO not present
    GPIOXINT_Number_16, //!< Denotes GPIO number 16
    GPIOXINT_Number_17, //!< Denotes GPIO number 17
    GPIOXINT_Number_18, //!< Denotes GPIO number 18
    GPIOXINT_Number_19, //!< Denotes GPIO number 19
    GPIOXINT_Rsvd_20, //!< This GPIO not present
    GPIOXINT_Rsvd_21, //!< This GPIO not present
    GPIOXINT_Rsvd_22, //!< This GPIO not present
    GPIOXINT_Rsvd_23, //!< This GPIO not present
    GPIOXINT_Rsvd_24, //!< This GPIO not present
    GPIOXINT_Rsvd_25, //!< This GPIO not present
    GPIOXINT_Rsvd_26, //!< This GPIO not present
    GPIOXINT_Rsvd_27, //!< This GPIO not present
    GPIOXINT_Number_28, //!< Denotes GPIO number 28
    GPIOXINT_Number_29, //!< Denotes GPIO number 29
    GPIOXINT_Rsvd_30, //!< This GPIO not present
    GPIOXINT_Rsvd_31 //!< This GPIO not present
    } GPIOXINT_Number_e;
  • To be clear, you are recommending adding an additional enum that only enumerates the pins on which an external interrupt is possible?

    Sean
  • Yes, it is. and change the type in the function. At compile time there will be an error - if the wrong pin is set. For example: GPIO_setExtInt(obj->gpioHandle,GPIO_Number_32......38,CPU_ExtIntNumber_1);
  • Thanks for the suggestion Andrew. We will look at the functionality of what you've pointed out and suggested and make the necessary changes going forward

    Regards
    Sean