for hank

Dependencies:   mbed-STM32F103C8T6_new

Revision:
2:f48b0967b6cc
Parent:
1:0fe432e5dfc4
Child:
3:30d61fa10b98
--- a/main.cpp	Wed Apr 15 11:36:03 2020 +0000
+++ b/main.cpp	Thu Apr 16 07:15:00 2020 +0000
@@ -1,357 +1,46 @@
 #include "mbed.h"
-//#include "rtos.h"
 #include "stm32f103c8t6.h"
-#include "ATCmdParser.h"
-#include "UARTSerial.h"
-//#include "Thread.h"
-
-DigitalOut MOTOA1(PB_4);
-DigitalOut MOTOB1(PB_5);
-
-DigitalOut MOTOA2(PB_8);
-DigitalOut MOTOB2(PB_9);
-
-Serial debug_uart(PB_10, PB_11);
-
-AnalogIn SensorCurrent(PA_0);
-
-AnalogIn BatteryVoltage(PA_1);
-
-void motor1_move(uint8_t dir);
-void motor2_move(uint8_t dir);
-
-void system_init();
-
-UARTSerial *_serial;
-
-//Thread  thread1,thread2,thread3;
-
-#if 1
-
-uint8_t sensor_cnt,cal_cnt;
-uint8_t dir;
-float sense_value;
-uint8_t ov_flag, init_flag, motor1_ready_flag, motor2_ready_flag, sensor_flag;
 
-#endif
-
-void sensor_capture_cb(void){
-    sensor_cnt++;
-}
-
-#define MAX_LENGTH_STEPS 55
-#define MIN_LENGTH_STEPS 10
-#define MOVING_UP 1
-#define MOVING_DOWN 2
-#define MOVING_FORWARD 1
-#define MOVING_BACKWARD 2
-#define STOP 0
-
-#if 1
-
-void Power_thread(void const *argument){/*detect current*/
-  uint8_t i = 0;
-  while(true){
-    Thread::wait(500); /*unit millisec*/
-    //debug_uart.printf("Power_thread 11111111111111\r\n");
-    //debug_uart.printf("sensor_cnt = %d\r\n", sensor_cnt);
-    sense_value = SensorCurrent.read(); 
-    //debug_uart.printf("current sense_value2 =%0.4f \r\n", sense_value);
-    if((sense_value>0.8)&&sensor_flag){
-        debug_uart.printf("sense_value = %0.4f > 0.4 \r\n", sense_value);
-        ov_flag = 1;
-        //if(motor2_ready_flag){
-            //motor2_ready_flag = 0;
-            //while(1){motor1_move(STOP);}
-        //}
-    }   
-  }
-}
+DigitalOut led1(PC_13);
 
-void Motor1_thread(void const *argument){/*detect current*/
-    uint8_t i;
-  while(true){
-    Thread::wait(300); /*unit millisec*/
-    if(motor2_ready_flag){   
-        sensor_cnt = 0;
-        motor1_move(MOVING_FORWARD);
-        wait(1);
-        sensor_flag = 1;
-        while(!ov_flag){debug_uart.printf("xxxxxxxxxxxxxxxxx \r\n"); wait(1);}
-        motor1_move(STOP);
-        debug_uart.printf("overcurrent detected \r\n");     
-        ov_flag = 0;
-        motor2_ready_flag = 0;
-        cal_cnt = sensor_cnt;
-        debug_uart.printf("calibration done \r\n");     
-        debug_uart.printf("calibrated cnt is %d \r\n", cal_cnt);  
-        wait(2);
-        debug_uart.printf("back to origianl position, motor1_ready_flag = 1\r\n"); 
-        motor1_ready_flag = 1;
-        while(1){
-            if(motor2_ready_flag){break;}else{
-                wait(1);
-                debug_uart.printf("thread2----wait for motor2 ready\r\n"); //wait(1);
-            }
-        }
-        motor2_ready_flag = 0;
-        sensor_cnt = 0;
-        sensor_flag = 0;
-        motor1_move(MOVING_BACKWARD);
-        debug_uart.printf("current cal_cnt is %d\r\n", cal_cnt);
-        //while(sensor_cnt<(cal_cnt-10)){debug_uart.printf("sensor cnt is %d\r\n", sensor_cnt);}
-        while(1){
-            if(sensor_cnt>(cal_cnt-10)){break;}else{
-                wait_ms(10);
-                //debug_uart.printf("sensor cnt is %d \r\n", sensor_cnt); 
-            }
-        }
-        debug_uart.printf("xxxxxxxxxx----------sensor cnt is %d \r\n", sensor_cnt); 
-        //debug_uart.printf("sensor cnt is higher than equal cal_cnt - 10 \r\n"); 
-        motor1_move(STOP);
-        wait(2);
-        motor1_ready_flag = 1;
-        //if(ov_flag){ov_flag = 0;}
-    }
-  }
-}
-
-void Motor2_thread(void const *argument){/*detect current*/
-  uint8_t sta1,sta2;
-  DigitalIn Stopper1(PA_13);
-  DigitalIn Stopper2(PA_15);
+Serial pc(PA_9,PA_10);
 
-  while(true){
-    Thread::wait(300); /*unit millisec*/
-    if(!init_flag){
-        #if 1
-        wait(1);
-        debug_uart.printf("thread 2 start \r\n");    
-        motor2_move(MOVING_UP);
-        while(Stopper1){;}
-        motor2_move(STOP);
-        debug_uart.printf("up stopper1 triggered \r\n");        
-        //init_flag = 1;
-        motor2_ready_flag = 1;
-        wait(1);
-        //while(!motor1_ready_flag){debug_uart.printf("wait for motor1 ready\r\n");wait(1);}
-        while(1){
-            if(motor1_ready_flag){break;}else{
-                wait(1);
-                debug_uart.printf("thread2----wait for motor1 ready \r\n"); 
-            }
-        }
-        debug_uart.printf("motor1 is ready\r\n");   
-        motor1_ready_flag = 0;
-        motor2_move(MOVING_DOWN);
-        while(Stopper2){;}
-        motor2_move(STOP);
-        debug_uart.printf("down stopper1 triggered \r\n");      
-        motor2_ready_flag = 1;
-        init_flag = 1;  
-        //while(!motor1_ready_flag){debug_uart.printf("wait for finish\r\n");wait(1);}
-        while(1){
-            if(motor1_ready_flag){break;}else{
-                wait(1);
-                debug_uart.printf("thread2----wait for motor1 ready \r\n"); 
-            }
-        }
-        debug_uart.printf("move motor2 to center\r\n"); 
-        motor2_move(MOVING_UP);
-        wait(1.5);
-        motor2_move(STOP);
-        debug_uart.printf("motor2 thread done\r\n");
-        #endif        
-    }
-  }
-}
-
-
-#endif
-
-int main(){ 
-    wait(2);
-    
-    system_init();  
-    
-    InterruptIn Hall1(PA_14);
-    //InterruptIn Hall2(PB_3);    
-    Hall1.fall(callback(sensor_capture_cb)); // Attach ISR to handle button press event
-    //Hall2.fall(callback(sensor_capture_cb)); // Attach ISR to handle button press event
-    debug_uart.printf("Hall1 init done\r\n");
-
-    //Thread thread1(osPriorityNormal,2048,Power_thread, NULL); /*check the real-time current*/
-    
-    #if 0
-    thread1.start(Power_thread);
-    debug_uart.printf("thread1~~~~~~~~~~~~~~~~\r\n");
-    thread2.start(Motor1_thread);
-    debug_uart.printf("thread2~~~~~~~~~~~~~~~~\r\n");
-    thread3.start(Motor2_thread);
-    debug_uart.printf("thread3~~~~~~~~~~~~~~~~\r\n");
-    #endif
-    
-    #if 1
-    
-    Thread thread1(Power_thread, NULL, osPriorityNormal, 2048);
-    Thread thread2(Motor1_thread, NULL, osPriorityNormal, 2048);
-    Thread thread3(Motor1_thread, NULL, osPriorityNormal, 2048);
-    #endif
-    
-    #if 0    
-    debug_uart.printf("thread1~~~~~~~~~~~~~~~~\r\n");
-    Thread thread2(osPriorityNormal,2048,Motor1_thread, NULL); /*check the real-time current*/
-    //Thread thread2(Motor1_thread, NULL, osPriorityNormal, 512); /*check the real-time current*/
-    debug_uart.printf("thread2~~~~~~~~~~~~~~~~\r\n");
-    Thread thread3(osPriorityNormal,2048,Motor2_thread,NULL); /*check the real-time current*/
-    //Thread thread3(Motor2_thread, NULL, osPriorityNormal, 512); /*check the real-time current*/
-    debug_uart.printf("thread3~~~~~~~~~~~~~~~~\r\n");
-    #endif
-    
-    
-    
-    init_flag = 0;
-    //motor2_ready_flag = 1;
-    //motor2_move(MOVING_DOWN);
-    while(1){        
-        //debug_uart.printf("~~~~~~~~~~~~~~\r\n");
-        wait(1);  
-        //sense_value = SensorCurrent.read(); 
-        debug_uart.printf("current sense_value2 =%0.4f \r\n", sense_value);        
+ 
+void led2_thread() {
+    while (true) {
+        pc.printf("led2_thread\r\n");
+        thread_sleep_for(4000);
     }
 }
 
-
-
-
-void motor1_move(uint8_t dir){/*main motor*/
-  if(dir==1){/*forward*/
-    MOTOA1 = 0;
-    MOTOB1 = 1;
-  }else if(dir==2){/*backward*/
-    MOTOA1 = 1;
-    MOTOB1 = 0;
-  }else{ /*stop*/
-    MOTOA1 = 0;
-    MOTOB1 = 0;
-  }
-}
-
-void motor2_move(uint8_t dir){/*assistant motor*/
-  if(dir==1){/*up*/
-    MOTOA2 = 0;
-    MOTOB2 = 1;
-  }else if(dir==2){/*down*/
-    MOTOA2 = 1;
-    MOTOB2 = 0;
-  }else{ /*stop*/
-    MOTOA2 = 0;
-    MOTOB2 = 0;
-  }
-}
+void led1_thread() {
+    while (true) {
+        pc.printf("led1_thread\r\n");
+        thread_sleep_for(3000);
+    }
+} 
 
-void system_init(){
-  
-  debug_uart.baud(115200);
-  /*
-  lcdBus.write(0x00);
-  TFTRD = 0;
-  TFTWR = 0;
-  TFTDC = 0;
-  TFTCS = 0;
-  */
-  MOTOA1 = 0;
-  MOTOB1 = 0;
-  MOTOA2 = 0;
-  MOTOB2 = 0;
-  init_flag = 0;
-  motor1_ready_flag = 0;
-  motor2_ready_flag = 0;
-  sense_value = 0;
-  sensor_flag = 0;
-  
-  debug_uart.printf("system init done\r\n");
- 
-}
-#if 0
-void wifi_debug(){
-  wifi_uart.baud(115200);
-  debug_uart.baud(115200);
-  WIFI_PWREN = 1;
-  while(1){
-    if(wifi_uart.readable()){
-      debug_uart.putc(wifi_uart.getc());
+void led0_thread() {
+    while (true) {
+        pc.printf("led0_thread\r\n");
+        thread_sleep_for(2000);
     }
-    if(debug_uart.readable()){
-      wifi_uart.putc(debug_uart.getc());
-    }
-  }
 }
-void bt_debug(){
-  bt_uart.baud(9600);
-  debug_uart.baud(9600);
-  while(1){
-    if(bt_uart.readable()){
-       debug_uart.putc(bt_uart.getc());
-    }
-    if(debug_uart.readable()){
-       bt_uart.putc(debug_uart.getc());
+int main() {
+    pc.baud(115200);
+    pc.printf("hello world\r\n");
+    
+    Thread thread0(osPriorityNormal, 512, nullptr, nullptr);
+    Thread thread1(osPriorityNormal, 512, nullptr, nullptr);
+    Thread thread2(osPriorityNormal, 512, nullptr, nullptr);
+    
+    thread0.start(led0_thread);
+    thread1.start(led1_thread);
+    thread2.start(led2_thread);
+    
+    while (true) {
+        //led1 = !led1;
+        thread_sleep_for(5000);
+        pc.printf("+++++main task++++++\r\n");
     }
-  }
-}
-void lcd_debug(){
-  char i = 0;
-  unsigned char str[] = "bob's test";
-  unsigned char str2[] = "hello world";
-  ST7789V_Init();  
-  BlockWrite(0,COL-1,0,ROW-1); 
-  LCD_block_test();  
-  //DispColor(GREEN); 
-  DispStr(str, 40, 80, BLUE, GREEN);
-  DispStr(str2, 40, 120, BLUE, GREEN);
-  //DispOneChar(0x32,60,60,BLUE,GREEN);
-  while(1){
-      ;
-  }     
-}
-
-void sht20_debug(){
-  while(1) {
-    int temperature = sht.readTemp();
-    debug_uart.printf("Temperature is: %d \t", temperature);
-    int humidity=  sht.readHumidity();
-    debug_uart.printf("Humidity: %d \r\n",humidity);
-    wait(2);
-  }
-}
-
-void eeprom_debug(){
-  char ucdata_write[1];    
-  if (!i2c.write((MCP24AA02_ADDR|WRITE), ucdata_write, 1, 0)){
-  //readID(MCP24AA02_MID);
-  //readID(MCP24AA02_DID);
-  //Uncomment the following 6 lines of code to write Data into the EEPROM
-  /*
-  writeEE(0x00,0x4D); // ASCII M
-  writeEE(0x01,0x61); // ASCII a
-  writeEE(0x02,0x72); // ASCII r
-  writeEE(0x03,0x74); // ASCII t
-  writeEE(0x04,0x69); // ASCII i
-  writeEE(0x05,0x6E); // ASCII n
-  debug_uart.printf("\n\r");
-  */
-  //Uncomment the following line to Erase the EEPROM
-  // eraseEE();
-  #if 1
-  for (int i=2;i<=0x7;i++){readEE(i);}
-  debug_uart.printf("\r\n");
-  #endif
-  }else{
-    debug_uart.printf("\n\rCannot get an ACK from the Device check connections!\n\r");
-  }
-}
-
-#endif
-
-
-
+}
\ No newline at end of file