void CmdDcMotor(int mode) { uint32_t cmdArgId; uint32_t cmdArg1; int32_t cmdArg2; if(mode != CMD_INTERACTIVE) return; printf("DC Motor motor\n"); /* check for valid arguments*/ if(fetch_uint32_arg((uint32_t*)&cmdArgId) < 0) { printf("Dc motor ID missing\n"); return; } if(fetch_uint32_arg((uint32_t*)&cmdArg1) < 0) { printf("ON/OFF missing missing\n"); return; } /*turn dc motor off by disabling pwm*/ if(!cmdArg1) { printf("Turning DC Motor off\n"); stopDcMotorPB(cmdArgId); return; } if(fetch_int32_arg(&cmdArg2) < 0) { printf("Signed speed argument missing\n"); return; } startDcMotor(cmdArgId, cmdArg1, cmdArg2); }
void CmdLED(int mode) { uint32_t led,val; int rc; if(mode != CMD_INTERACTIVE) { return; } rc = fetch_uint32_arg(&led); if(rc) { printf("Missing LED index\n"); return; } rc = fetch_uint32_arg(&val); if(rc) { printf("Missing state value, 0 for Off, 1 for On\n"); return; } if((led < 3) || (led > 10)) { printf("Led index of %u is out of the range (3..10)\n", (unsigned int)led); return; } led -= 3; if(val) { BSP_LED_On(LEDs[led]); } else { BSP_LED_Off(LEDs[led]); } }
void CmdW(int mode) { uint32_t addr,data; if(mode != CMD_INTERACTIVE) return; fetch_uint32_arg(&addr); fetch_uint32_arg(&data); *((uint32_t *)addr) = data; }
/*commands for stepper motor*/ void CmdStepper(int mode) { uint32_t cmdArg1, cmdArg2, cmdArgNo; if(mode != CMD_INTERACTIVE) return; /* check for valid arguments*/ if(fetch_int32_arg((int32_t*)&cmdArgNo) < 0) { printf("Stepper motor number missing\n"); return; } /* check for valid arguments*/ if(fetch_int32_arg((int32_t*)&cmdArg1) < 0) { printf("Step count missing\n"); return; } if(fetch_uint32_arg((uint32_t*)&cmdArg2) < 0) { printf("step delay missing\n"); return; } /*activate stepper*/ if(activateStepper(cmdArgNo, cmdArg1, cmdArg2) != STEPPER_OK) printf("Stepper error\n"); else printf("Stepper Success!!\n"); }
void uartsent(int mode) { uint32_t c; if (mode!=CMD_INTERACTIVE) return; fetch_uint32_arg(&c); USARTTxBuffer[0]=c; printf("sending a character\n"); HAL_UART_Transmit(&UartHandle,USARTTxBuffer,1,1000); }
void CmdR(int mode) { uint32_t addr; if(mode != CMD_INTERACTIVE) return; fetch_uint32_arg(&addr); printf("0x%08X: 0x%08X\n",(unsigned int)addr, (unsigned int)(*((uint32_t *)addr))); }
// This function handles the command interface between minicom and stm32 library void CmdCount(int mode) { uint32_t val = 0; int filter; filter = fetch_uint32_arg(&val); if(filter) { printf("pass in number of counts\n"); return; } printf("Entered value for counter is : %d \n",(int)val); counter = val; }
void CmdDacWrite(int mode) { uint32_t dacVal; if(mode != CMD_INTERACTIVE) return; fetch_uint32_arg(&dacVal); if(dacVal > 4095) { printf("argument out of range\n"); return; } writeDacPortA(dacVal); }
void CmdAdcRead(int mode) { uint32_t tempCmdArgInt; int16_t adcVal; if(mode != CMD_INTERACTIVE) return; fetch_uint32_arg(&tempCmdArgInt); if(tempCmdArgInt < 2 || tempCmdArgInt > 5) { printf("argument out of range\n"); return; } adcVal = readAdcPortA(tempCmdArgInt); if(adcVal != ADC_ERR) printf("Analog value at GPIO PA%d is %d\n", (int)tempCmdArgInt, adcVal); }
void CmdLcdTest(int mode) { char *tempCmdArgStr; uint32_t pos = 0; if(mode != CMD_INTERACTIVE) return; fetch_string_arg((char**)&tempCmdArgStr); fetch_uint32_arg((uint32_t*)&pos); /*if(!lcdInitDone) { initLcd(LCD_DISP_ON_BLINK); //lcdInitDone = 1; }*/ initLcd(LCD_DISP_ON); printf("sending string %s at %d\n", tempCmdArgStr, (int)pos); setLcdBlBrightness(500); clearLcd(); gotoLcd(pos); putsLcd(tempCmdArgStr); }