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.

Some Pin Mapping Definitions Not Recognized by CCS



I am having an odd issue where I am getting unrecognized identifiers for some, but not all, of the pin mappings to be used in GPIOPinConfigure(). My project has dozens of calls to GPIOPinConfigure() and I get 7 errors when I build, e.g. "identifier 'GPIO_PA0_U0RX" is undefined."

It's strange that only some of the identifiers would be unrecognized. I have seen other people on these forums have issues where they had zero visibility to pin_map.h and that was their problem. For me, pin_map.h should be included correctly through driverlib/gpio.h, and so most of my pin mappings are OK. My initial suspicion was that I had the wrong part defined, but I double-checked and under Project -> Properties -> CCS Build I have "Stellaris LM3S9D96" set as my Device Variant, which is correct. I also have a Target Configuration file set up for this project with XDS100v2 emulator set up for LM3S9D96 (though I don't think this debugger target configuration matters at the build stage anyway).

So, my project can see pin_map.h correctly and is set to the correct part. My understanding is that CCS will define the correct part definition based on the Device Variant selected for the project, so I believe PART_LM3S9D96 should be defined and I should be able to see all the pin mappings. Is there any way to concretely check that this is defined by CCS?

Can anyone think of any other reason that some pin mappings would be undefined? Thank you in advance.

  • Anthony,

    When you select a device in the project wizard it does a few things:  

    • It builds a target configuration for the JTAG emulator and device you are using
    • It sets up some default build options for the device
    • For some devices it adds a linker command file to the project that specifies the memory map for the device
    When I look at the options it is setting up I don't see anything that is adding a -D (or --define) for PART_LM3S9D96.  You can see the list of predefined symbols in the build options by going to the project properties (right click on your project and select properties).  On the tree on the left expand it to show Build -> ARM compiler -> Advanced Options -> Predefined symbols  On the right you will not see any -D commands that are setup.  By default when creating a new project for Stellaris 9D96 this is empty.  You could add PART_LM3S9D96 to the list to see if that helps.
    John
  • John, thank you for the prompt reply. I was looking for where to set up predefined symbols. Adding PART_LM3S9D96 in the predefined symbols cleared the problem right up. I had thought this was predefined based on the microcontroller selected for the project but clearly I was wrong.

  • There is no reason why CCS couldn't automatically set up this symbol.  I spoke with the device team and we will see if we can get this put in for a future release.  

    John

  • That would be good, especially since I don't think I was the only one under the impression that it is already automatically set up (based on my reading of other forum posts). Thanks again.

  • I had a similar issue just now with an EVALBOT (LM3S9B92) and also found that adding the predefined symbol fixed the pin_map.h issue.