Hi
Are you sure that your code (or the initialisation part) is really being called?
Connect the board to the debugger, open up the register view and simply write the expected commands to make the output(s) move. Once you know which they are, step the program to see what it is doing differently - it may be obvious then.
Eg.
GPIO_SetPinsOutput(GPIOC,14U); is this GPIO14 or GPIO 15? Is it an enum or should it be a bit field?
Same question for
PORT_SetPinMux(PORTC,14, kPORT_MuxAsGpio);
I do it like this on the TWR-K65 board:
_CONFIG_PORT_OUTPUT(C, PORTC_BIT15, (PORT_SRE_FAST | PORT_DSE_HIGH));
_TOGGLE_PORT(C, PORTC_BIT15);
// delay to measure
_TOGGLE_PORT(C, PORTC_BIT15);
Nothing can go wrong here.
Compare with: http://www.utasker.com/kinetis/TWR-K65F180M.html
where it is fully simulated - again nothing can go wrong and no project delays.
Regards
Mark
P.S. I looked in SDK and it looks like you are incorrectly using the calls. Here is an example:
GPIO_ClearPinsOutput(BOARD_LED_RED3_GPIO, 1U << BOARD_LED_RED3_GPIO_PIN) /*!< Turn on target LED_RED3 */
so you would need
GPIO_ClearPinsOutput(GPIOC, 1U << 15) ;
This is inline code and thus efficient, even if a bit over-complicated.