• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
MKT-porter
博客园    首页    新随笔    联系   管理    订阅  订阅
(2)STM32开发例程--基本引脚和串口

 

 

 

 

 

 

 

1控制LED和继电器

除了PA4  PA11和PA12其他都可以

b3 b4控制继电器没作用 b6 b7可以

蜂鸣器需要3.3v供电  低电平有效

void setup() {

  pinMode(PC13, OUTPUT);
  pinMode(PC14, OUTPUT);
  pinMode(PC15, OUTPUT);
  
  pinMode(PA0, OUTPUT);
  pinMode(PA1, OUTPUT);
  pinMode(PA2, OUTPUT);
  pinMode(PA3, OUTPUT);
  pinMode(PA4, OUTPUT);
  pinMode(PA5, OUTPUT);
  pinMode(PA6, OUTPUT);
  pinMode(PA7, OUTPUT);
  pinMode(PA8, OUTPUT);
  pinMode(PA9, OUTPUT);
  pinMode(PA10, OUTPUT);
//  pinMode(PA11, OUTPUT);  // CAN t0  不能用
//  pinMode(PA12, OUTPUT);  // CAN r0  不能用
  pinMode(PA15, OUTPUT);


  pinMode(PB0, OUTPUT);
  pinMode(PB1, OUTPUT);
  pinMode(PB2, OUTPUT);
  pinMode(PB3, OUTPUT);
  pinMode(PB4, OUTPUT);
  pinMode(PB5, OUTPUT);
  pinMode(PB6, OUTPUT);
  pinMode(PB7, OUTPUT);
  pinMode(PB8, OUTPUT);
  pinMode(PB9, OUTPUT);
  pinMode(PB10, OUTPUT);
  pinMode(PB11, OUTPUT);
  pinMode(PB12, OUTPUT);
  pinMode(PB13, OUTPUT);
  pinMode(PB14, OUTPUT);
  pinMode(PB15, OUTPUT);
  
}


void loop() {
  digitalWrite(PC13, HIGH);
  digitalWrite(PC14, HIGH);  
  digitalWrite(PC15, HIGH);  
  
  digitalWrite(PA0, HIGH);  
  digitalWrite(PA1, HIGH);  
  digitalWrite(PA2, HIGH);  
  digitalWrite(PA3, HIGH);  
  digitalWrite(PA4, HIGH);  
  digitalWrite(PA5, HIGH); 
  digitalWrite(PA6, HIGH);  
  digitalWrite(PA7, HIGH);  
  digitalWrite(PA8, HIGH);  
  digitalWrite(PA9, HIGH);    
  digitalWrite(PA10, HIGH); 
 // digitalWrite(PA11, HIGH);  
 // digitalWrite(PA12, HIGH);  
  digitalWrite(PA15, HIGH);  

  digitalWrite(PB0, HIGH);  
  digitalWrite(PB1, HIGH);  
  digitalWrite(PB2, HIGH);  
  digitalWrite(PB3, HIGH);  
  digitalWrite(PB4, HIGH);  
  digitalWrite(PB5, HIGH); 
  digitalWrite(PB6, HIGH);  
  digitalWrite(PB7, HIGH);  
  digitalWrite(PB8, HIGH);  
  digitalWrite(PB9, HIGH);    
  digitalWrite(PB10, HIGH); 
  digitalWrite(PB11, HIGH);  
  digitalWrite(PB12, HIGH); 
  digitalWrite(PB13, HIGH);  
  digitalWrite(PB14, HIGH);  
  digitalWrite(PB15, HIGH);    
  
  delay(1000);              

         
  digitalWrite(PC13, LOW);
  digitalWrite(PC14, LOW);  
  digitalWrite(PC15, LOW);  
  
  digitalWrite(PA0, LOW);  
  digitalWrite(PA1, LOW);  
  digitalWrite(PA2, LOW);  
  digitalWrite(PA3, LOW);  
  digitalWrite(PA4, LOW);  
  digitalWrite(PA5, LOW); 
  digitalWrite(PA6, LOW);  
  digitalWrite(PA7, LOW);  
  digitalWrite(PA8, LOW);  
  digitalWrite(PA9, LOW);    
  digitalWrite(PA10, LOW); 
 // digitalWrite(PA11, LOW);  
 // digitalWrite(PA12, LOW);  
  digitalWrite(PA15, LOW);   

  digitalWrite(PB0, LOW);  
  digitalWrite(PB1, LOW);  
  digitalWrite(PB2, LOW);  
  digitalWrite(PB3, LOW);  
  digitalWrite(PB4, LOW);  
  digitalWrite(PB5, LOW); 
  digitalWrite(PB6, LOW);  
  digitalWrite(PB7, LOW);  
  digitalWrite(PB8, LOW);  
  digitalWrite(PB9, LOW);    
  digitalWrite(PB10, LOW); 
  digitalWrite(PB11, LOW);  
  digitalWrite(PB12, LOW); 
  digitalWrite(PB13, LOW);  
  digitalWrite(PB14, LOW);  
  digitalWrite(PB15, LOW);    
   
  delay(1000);                      
}

 

数字引脚读取

b3 a12 不能用来做引脚输入

int PIN_Sign = PA15;
int PIN_Alram = PA12;

void setup() {
  
  Serial1.begin(9600);
  
  pinMode(PIN_Sign, INPUT);
  pinMode(PIN_Alram, OUTPUT);
  digitalWrite(PIN_Alram, LOW);
  
}

void loop() {
  
  int buttonState = digitalRead(PIN_Sign);
  if(buttonState==0)
  {
    digitalWrite(PIN_Alram, LOW);
  }
  else
  {
     digitalWrite(PIN_Alram, HIGH);
    }
  Serial.println(buttonState);
  delay(1);       
}

  

  

 

2 PWM控制

 

 PWM引脚简易测试程序,总共有12个PWM引脚,16bit即65536级PWM,很精密了:

延迟给100微妙 多了少了都有问题,不正常转

void setup()
{
        pinMode(PB0, PWM);
        pinMode(PA7, PWM);
        pinMode(PA6, PWM);
        pinMode(PA3, PWM);
        pinMode(PA2, PWM);
        pinMode(PA1, PWM);
        pinMode(PA0, PWM);
        pinMode(PB7, PWM);
        pinMode(PB6, PWM);
        pinMode(PA10, PWM);
        pinMode(PA9, PWM);
        pinMode(PA8, PWM);
}
void loop()
{
        for (int i = 1000; i < 65536; i++)
        {
                //delayMicroseconds(100);
              //  delay(1);
                  delay(20);
                pwmWrite(PB0, i);
                pwmWrite(PA7, i);
                pwmWrite(PA6, i);
                pwmWrite(PA3, i);
                pwmWrite(PA2, i);
                pwmWrite(PA1, i);
                pwmWrite(PA0, i);
                pwmWrite(PB7, i);
                pwmWrite(PB6, i);
                pwmWrite(PA10, i);
                pwmWrite(PA9, i);
                pwmWrite(PA8, i);
        }
         for (int i = 65536; i > 1000; i--)
        {
               // delayMicroseconds(100);
              //  delay(1);
                  delay(20);
                pwmWrite(PB0, i);
                pwmWrite(PA7, i);
                pwmWrite(PA6, i);
                pwmWrite(PA3, i);
                pwmWrite(PA2, i);
                pwmWrite(PA1, i);
                pwmWrite(PA0, i);
                pwmWrite(PB7, i);
                pwmWrite(PB6, i);
                pwmWrite(PA10, i);
                pwmWrite(PA9, i);
                pwmWrite(PA8, i);
        }
}

  

 

int pins[12] = {0, 1, 2, 3, 6, 7, 8, 9, 10, 16, 22, 23};
void setup()
{
  for (int i = 0; i < 12; i++)
  {
    pinMode(pins[i], PWM);
  }
}
void loop()
{
  for (int i = 0; i < 100; i++)
  {
    for (int j = 0; j < 12; j++)
    {
      pwmWrite(pins[j], i * i);
    }
    delay(20);
  }
}

 

IO引脚读取

int value = digitalRead(pin);

 

ADC引脚

实际测试  0-4096  2的10次方

 

 

 

 在pa7接一个光敏电阻,完全遮盖4095  手机强光基本几十

 

 

void setup()
{
  Serial.begin(115200);
  pinMode(PB0, INPUT_ANALOG);
  pinMode(PA7, INPUT_ANALOG);
  pinMode(PA6, INPUT_ANALOG);
  pinMode(PA5, INPUT_ANALOG);
  pinMode(PA4, INPUT_ANALOG);
  pinMode(PA3, INPUT_ANALOG);
  pinMode(PA2, INPUT_ANALOG);
  pinMode(PA1, INPUT_ANALOG);
  pinMode(PA0, INPUT_ANALOG);
  pinMode(PB1, INPUT_ANALOG);
}
void loop()
{
  delay(50);
  Serial.print("\tPB0="); Serial.print(analogRead(PB0));
  Serial.print("\tPA7="); Serial.print(analogRead(PA7));
  Serial.print("\tPA6="); Serial.print(analogRead(PA6));
  Serial.print("\tPA5="); Serial.print(analogRead(PA5));
  Serial.print("\tPA4="); Serial.print(analogRead(PA4));
  Serial.print("\tPA3="); Serial.print(analogRead(PA3));
  Serial.print("\tPA2="); Serial.print(analogRead(PA2));
  Serial.print("\tPA1="); Serial.print(analogRead(PA1));
  Serial.print("\tPA0="); Serial.print(analogRead(PA0));
  Serial.print("\tPB1="); Serial.println(analogRead(PB1));
}

  采集光照的代码

int LightValue=4095-analogRead(Light_pin);//最大值4095 黑暗

  

 中断(不靠谱 自己写)

stm32中断函数中不能有 串口输出函数 终端会导致死掉

   
void onChange()
{
   if ( digitalRead(PA8) == LOW )
      Serial.println("Key Down");
   else
      Serial.println("Key UP");
}
 
void setup()
{
   Serial.begin(9600); //打开串口
 
   pinMode( PA8, INPUT);//设置管脚为输入
   
   //Enable中断管脚, 中断服务程序为onChange(), 监视引脚变化
 /*
LOW                  低电平触发
CHANGE            电平变化,高电平变低电平、低电平变高电平
RISING              上升沿触发
FALLING            下降沿触发
HIGH                 高电平触发(该中断模式仅适用于Arduino due)
 */
   attachInterrupt( PA8, onChange, CHANGE);
}
 
void loop()
{
  // 模拟长时间运行的进程或复杂的任务。
  for (int i = 0; i < 100; i++)
  {
    // 什么都不做,等待10毫秒
    delay(10); 
  }
}

  

多中断

change中断不靠谱

int pin_door=PB5;
int pin_RED1=PB4;
int pin_RED2=PA15;
int pin_RED3=PA11;

int state_door=0;
int state_RED1=0;
int state_RED2=0;
int state_RED3=0;
 




void onChange_door()
{

   if ( digitalRead(pin_door) == LOW )
      {state_door=1;}
   else
      {state_door=0;}

}

void onChange_red1()
{
   if ( digitalRead(pin_RED1) == LOW )
      {state_RED1=1;}
   else
     
     { state_RED1=0;}
}

void onChange_red2()
{
     if ( digitalRead(pin_RED2) == LOW )
       {state_RED2=1;}
   else
       {state_RED2=0;}

}

void onChange_red3()
{
   if ( digitalRead(pin_RED3) == LOW )
       {state_RED3=1;}
   else
       {state_RED3=0;}

}
 
 
void setup()   {               
  Serial1.begin(9600);
  pinMode(pin_door, INPUT);
  pinMode(pin_RED1, INPUT);
  pinMode(pin_RED2, INPUT);
  pinMode(pin_RED3, INPUT);
  //int buttonState = digitalRead(pin_door);

  attachInterrupt( pin_door, onChange_door, CHANGE);
  attachInterrupt( pin_RED1, onChange_red1, CHANGE);
  attachInterrupt( pin_RED2, onChange_red2, CHANGE);
  attachInterrupt( pin_RED3, onChange_red3, CHANGE);

 
 
 
  
}
 
 
void loop() {


  String state="门状态:"+String(state_door)+" 车位1:"+String(state_RED1)+" 车位2:"+String(state_RED2)+" 车位3:"+String(state_RED3);
  Serial.println(state);
  delay(1000);
  
   
}

  

两个红外 检测进出人数

不用中断模式

#include <Adafruit_SSD1306.h>
#include <Adafruit_Sensor.h>
  
 

Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire);
 
 
 
  

int pin_RED1=PA0;
int pin_RED2=PA1;
int people_useNum=0;

int state_RED1=0;
int state_RED2=0;
int car_state[2]={0,0};
int car_oldstate[2]={0,0};




  
void setup(){
  Serial.begin(9600);

   
  pinMode(pin_RED1, INPUT);
  pinMode(pin_RED2, INPUT);


  // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x32
    //Serial.println(F("oled allocation failed"));
    for (;;)
      ; // Don't proceed, loop forever
  }
  display.display();
  delay(500); // Pause for 2 seconds
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setRotation(0);

 
   
   
 
    
}
 

void loop(){

  display.clearDisplay();

  display.setCursor(0, 0);
 
  String Lightmsg="People Num:"+String(people_useNum);
  display.println(Lightmsg);
  display.println("------");
  String Lightmsg1="IN_RED1:"+String(state_RED1);
  display.println(Lightmsg1);
  display.println("------");
  String Lightmsg2="OUT_RED2:"+String(state_RED2);
  display.println(Lightmsg2);
  display.println("------");
 

 
 
   state_RED1=!digitalRead(pin_RED1);
   state_RED2=!digitalRead(pin_RED2);
   car_state[0]=state_RED1;
   car_state[1]=state_RED2;
   
  
      if( car_state[0]==1){
  
         if(car_oldstate[0]==0){
           
            Serial.println("有人进入入口闸机");
            car_oldstate[0]=1;
      
          }
          else{
            Serial.println("人在入口闸机尚未离开");
            
            }
      
      
      }
      else{
           if(car_oldstate[0]==0){
             Serial.println("入口等待有人进来");
           }
           else{
              Serial.println("人已经离开入口闸机,人数+1");
              people_useNum=people_useNum+1;
              car_oldstate[0]=0;     
            }
          

           
        }
       
   
       if( car_state[1]==1){
  
         if(car_oldstate[1]==0){
           
            Serial.println("有人进入出口闸机");
            car_oldstate[1]=1;
      
          }
          else{
            Serial.println("人在出口闸机尚未离开");
            
            }
      
      
      }
      else{
           if(car_oldstate[1]==0){
             //Serial.println("出口闸机等待有人进来");
           }
           else{
              Serial.println("人已经离开出口闸机,人数-1");
              people_useNum=people_useNum-1;
              if(people_useNum<0){people_useNum=0;}
              car_oldstate[1]=0;     
            }
          

           
        }
 
     

  Serial.print("当前人数:");Serial.println(people_useNum);
  


  
  display.display();
  delay(1000);

 

}

  

 

旧状态对比 判断是否离开

 

 

/*********************************************************************
stm32 - ssd  128*64  for Oled display ssd1306
SCL-B6
sda-B7
*********************************************************************/

int pin_door=PB5;
int pin_RED1=PB4;
int pin_RED2=PA15;
int pin_RED3=PA11;

int state_door=0;
int state_RED1=0;
int state_RED2=0;
int state_RED3=0;

int car_useNum=0;

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306_STM32.h>
 
#define OLED_RESET 4 // for Oled display ssd1306
Adafruit_SSD1306 display(OLED_RESET);





void onChange_door()
{

   if ( digitalRead(pin_door) == LOW )
      {
     // state_door=1;
      
      }
   else
      {
    //  state_door=0;
      }
      //delay(1000);

}

void onChange_red1()
{



}

void onChange_red2()
{


}

void onChange_red3()
{


}
 
 
void setup()   {               
  Serial1.begin(9600);
  pinMode(pin_door, INPUT);
  pinMode(pin_RED1, INPUT);
  pinMode(pin_RED2, INPUT);
  pinMode(pin_RED3, INPUT);
  //int buttonState = digitalRead(pin_door);
 /*
LOW                  低电平触发
CHANGE            电平变化,高电平变低电平、低电平变高电平
RISING              上升沿触发
FALLING            下降沿触发
HIGH                 高电平触发(该中断模式仅适用于Arduino due)
 */
  attachInterrupt( pin_door, onChange_door, FALLING);
  attachInterrupt( pin_RED1, onChange_red1, FALLING);
  attachInterrupt( pin_RED2, onChange_red2, FALLING);
  attachInterrupt( pin_RED3, onChange_red3, FALLING);

 
  //初始化
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3D (for the 128x64)
  //刷新
  display.display();
  //等待刷新结束
  delay(2000);
  //清空
  display.clearDisplay();
 
  
}

int car_state[3]={0,0,0};
int car_oldstate[3]={0,0,0}; 
void loop() {


  state_RED1=!digitalRead(pin_RED1);
  state_RED2=!digitalRead(pin_RED2);
  state_RED3=!digitalRead(pin_RED3);
  car_state[0]=state_RED1;
  car_state[1]=state_RED2;
  car_state[2]=state_RED3;

  //获取总数目  
  car_useNum=0;
  
  for(int i=0;i<3;i++){
     if(car_state[i]==1){    
        car_useNum=car_useNum+1;
      }
      else if(car_state[i]==0){
        }
    }

  if(digitalRead(pin_door) == LOW){
    if(car_useNum>=3){
      //Serial.println("车位已满,不给开门");
      state_door=0;
      }
     else{
      //Serial.println("车位空缺,允许开门");
      state_door=1;
      }
     
    }

    
  // String state="占用车位数目:"+String(car_useNum)+" 闸门状态:"+String(state_door)+" 车位1:"+String(state_RED1)+" 车位2:"+String(state_RED2)+" 车位3:"+String(state_RED3);
  // Serial.println(state);
  //对比当前和上一次的状态
  for(int i=0;i<3;i++){
     if(car_state[i]==car_oldstate[i])
     {  //按键触发     
        if(car_state[i]==1){
          Serial.print(i);Serial.print("车位占用中 ");
          }
        else{
          Serial.print(i);Serial.print("车位空闲中 ");
          }
      }
     else
     {
        if(car_state[i]==1){
          Serial.print(i);Serial.print("车位进入 ");
          }
        else{
          Serial.print(i);Serial.print("车位驶出 ");
          }
          car_oldstate[i]=car_state[i];
      }
    
    }
    Serial.println(" ");

    
   //初始化
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C); 
   //清空
  display.clearDisplay();
  display.setTextSize(1);//1设置字体大小
  display.setTextColor(WHITE);//2颜色
  display.setCursor(0,0);//3位置0列 0行
  display.print("Can in:");display.println(state_door);//正文4
  display.print("Use num:");display.print(car_useNum);display.print("/");display.println(3);//正文4
  
  display.print("Car1:");display.println(state_RED1);
  display.print("Car2:");display.println(state_RED2);
  display.print("Car3:");display.println(state_RED3);
  
  display.display();
  delay(100);
  
   
}

  

 

允许的串口

总共3个硬件外接串口Serial1、Serial2、Serial3,一个USB虚拟串口Serial:

void setup()
{
  Serial.begin(115200);
  Serial1.begin(115200);  //TX=PA9,RX=PA10  32的引脚
  Serial2.begin(115200);  //TX=PA2,RX=PA3
  Serial3.begin(115200);  //TX=PB10,RX=PB11
}
void loop()
{
  delay(100);
  Serial.println("Test Serial");
  Serial1.println("Test Serial1");
  Serial2.println("Test Serial2");
  Serial3.println("Test Serial3");
}

  

多机设备串口通信

https://www.cnblogs.com/gooutlook/p/14747562.html

 

例程 单串口发送数据和接收

发送体重数据,接收舵机数据

#include <Servo.h>
Servo myservo;  // 定义Servo对象来控制
 
   
#include "HX711.h"
  
  
// HX711 circuit wiring
const int LOADCELL_DOUT_PIN = PB1;
const int LOADCELL_SCK_PIN = PB10;
  
  
HX711 scale;
  
void setup() {
  Serial.begin(9600);
  myservo.attach(PB0);  // 控制线连接数字9
  
  scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
  
  scale.set_scale(2280.f);     // this value is obtained by calibrating the scale with known weights; see the README for details
  scale.tare();                // reset the scale to 0
  myservo.write(0);
  
}
 
String comdata="0";
void loop() {
 
  float zhongliang=scale.get_units(3);
  if (zhongliang<0)zhongliang=0;
  String msg=String(zhongliang)+"-";
  Serial.println(zhongliang);
  if (Serial1.available()){
     comdata =Serial1.readStringUntil(';');
     //Serial.println(comdata);
     int du=comdata.toInt();
     if(du>180)du=180;
     else if(du<0)du=0;
     myservo.write(du);  
       
  }
  
}

  

综合例程

 

 

int pinIn_btn=PA0;//按键
int pinIn_MQ2=PA1;//烟雾

int pinOut_Alram=PB0;//报警器

int pinOut_LedR=PA3;//红灯
int pinOut_LedG=PA4;//绿灯
int pinOut_LedB=PA5;//蓝灯

int pinOut_Motor1=PA6;//电机1
int pinOut_Motor2=PA7;//电机2

#include "DHT.h"
#define DHTPIN PA2     // 温湿度
#define DHTTYPE DHT11   // DHT 11

DHT dht(DHTPIN, DHTTYPE);

bool State_btn=0;
void onChange()
{
   
   State_btn=!State_btn;

   if(State_btn){
   digitalWrite(pinOut_Alram, LOW);
   
   digitalWrite(pinOut_LedR, LOW);
   digitalWrite(pinOut_LedG, LOW);
   digitalWrite(pinOut_LedB, LOW);

   digitalWrite(pinOut_Motor1, LOW);
   digitalWrite(pinOut_Motor2, LOW);
   }
   else{
     digitalWrite(pinOut_Alram, HIGH);
   
     digitalWrite(pinOut_LedR, HIGH);
     digitalWrite(pinOut_LedG, HIGH);
     digitalWrite(pinOut_LedB, HIGH);
  
     digitalWrite(pinOut_Motor1, HIGH);
     digitalWrite(pinOut_Motor2, LOW);
    }

  

   
}


void setup() {
  Serial.begin(9600);
  Serial.println("开始运行");

  
  pinMode(pinIn_MQ2, INPUT_ANALOG);//烟雾-模拟数据
  
  pinMode(pinIn_btn, INPUT);//按键-数字数据
  attachInterrupt( pinIn_btn, onChange, RISING);//上升沿触发

  pinMode(pinOut_Alram, OUTPUT);//蜂鸣器
  digitalWrite(pinOut_Alram, LOW);
  
  pinMode(pinOut_LedR, OUTPUT);//灯
  pinMode(pinOut_LedG, OUTPUT);//灯
  pinMode(pinOut_LedB, OUTPUT);//灯
  digitalWrite(pinOut_LedR, LOW);
  digitalWrite(pinOut_LedG, LOW);
  digitalWrite(pinOut_LedB, LOW);
  
  pinMode(pinOut_Motor1, OUTPUT);//电机1
  pinMode(pinOut_Motor2, OUTPUT);//电机2
  digitalWrite(pinOut_Motor1, LOW);
  digitalWrite(pinOut_Motor2, LOW);
      
  dht.begin();
}
 
void loop() {
 
  //int State_btn = digitalRead(pinIn_btn);//按键状态
  int State_MQ2 = analogRead(pinIn_MQ2);//烟雾数据
  
  int h = int(dht.readHumidity());//湿度
  int t = int(dht.readTemperature());//温度

  
  if (isnan(h) || isnan(t)) {
    h=60;
    t=23;
  }

  String msg=String("") 
             +String(State_btn)+" "
             +String(State_MQ2)+" "
             +String(h)+" "
             +String(t)+" "
              ;
              
  Serial.println(msg);

  
   
 
}

  

 

posted on 2019-10-04 01:56  MKT-porter  阅读(2339)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3