int main (void) { SysCtlClockSet (SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_25MHZ); configureUART (); printf ("cpu-gauge.\r\n"); // Enable the GPIO port that is used for the on-board LED. SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3); // // USB config : Enable the GPIO peripheral used for USB, and configure the USB pins. // SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); // SysCtlGPIOAHBEnable(SYSCTL_PERIPH_GPIOD); // GPIOPinTypeUSBAnalog(GPIO_PORTD_AHB_BASE, GPIO_PIN_4 | GPIO_PIN_5); // ButtonsInit(); // printf ("Buttons OK.\r\n"); motorInit (); printf ("Motor initialized.\r\n"); printf ("Test sequence : +40 steps.\r\n"); motorRun (40); printf ("Test sequence : -40 steps.\r\n"); motorRun (-40); printf ("Test sequence : OK.\r\n"); SysCtlDelay (DELAY_COEFFICIENT_SCD / 10); uint8_t ui8ButtonsChanged, ui8Buttons; while (1) { ButtonsPoll(&ui8ButtonsChanged, &ui8Buttons); if (ui8ButtonsChanged) { if(ui8Buttons & LEFT_BUTTON) { printf ("pressed\r\n"); } else { printf ("released\r\n"); } } } }
void processCmdMsg(pb_istream_t *streamPtr) { pb_istream_t substream; gCmdParamNum = 0; double degSec; double pos; EMotorDirection dir; if (pb_make_string_substream(streamPtr, &substream)) { MotorMsg_Cmd motorCmd = MotorMsg_Cmd_init_zero; motorCmd.params.funcs.decode = &motorCmdParamCallback; //motorCmd.params.arg = (void *) (&motorCmd.action); pb_decode(&substream, MotorMsg_Cmd_fields, &motorCmd); pb_close_string_substream(streamPtr, &substream); switch (motorCmd.action) { case MotorMsg_Cmd_Action_UNKNOWN: break; case MotorMsg_Cmd_Action_BRAKE: motorBrake(); break; case MotorMsg_Cmd_Action_FREEWHEEL: motorFreewheel(); break; case MotorMsg_Cmd_Action_RUN: degSec = getMotorParam(MotorMsg_Cmd_Param_Id_VELOCITY, gCmdParams, gCmdParamNum); dir = (getMotorParam(MotorMsg_Cmd_Param_Id_CLOCKWISE, gCmdParams, gCmdParamNum) != 0.0) ? eClockwise : eCounterClockwise; motorRun(dir, degSec); break; case MotorMsg_Cmd_Action_GOTO_POS: pos = getMotorParam(MotorMsg_Cmd_Param_Id_POSITION, gCmdParams, gCmdParamNum); degSec = getMotorParam(MotorMsg_Cmd_Param_Id_VELOCITY, gCmdParams, gCmdParamNum); dir = (getMotorParam(MotorMsg_Cmd_Param_Id_CLOCKWISE, gCmdParams, gCmdParamNum) != 0.0) ? eClockwise : eCounterClockwise; motorGotoPos(dir, pos, degSec); break; } } }