STM32G031の独自のソフトウェアシリアルでHello Worldと出力 1200bps


目的
出来そうだから作ってみた

とりあえず1200bps そのまま動いた ウエートと832us


#define DW   digitalWrite

//104 9600
//208 4800
//416 2400
//832 1200

#define UART_DELAY 832 //  1/9600
//#define UART_DELAY 96 //  1/9600

//#define swdclk   PA14 // 8pin
//#define swdio    PA13 // 7pin
#define swdclk   PA12 // 6pin
#define swdio    PA11 // 5pin
//#define t_led1   PA12 // 6pin
//#define t_led2   PA11 // 5pin
#define en       PA0  // 4pin
#define in7      PB7  // 1pin

//仮想シリアルへの一文字出力 9600bps
int pc_putc(char ch) {

  DW(in7, HIGH);
  DW(in7, LOW);//START
  delayMicroseconds(UART_DELAY);

  for(int ii=0;ii<8;ii++){
    DW(in7, (ch>>ii)&1  );
    delayMicroseconds(UART_DELAY);
  }//for

  DW(in7, HIGH);//Stop
  delayMicroseconds(UART_DELAY);

  return(0);

}//pc_putc


void setup() {

  //仮想シリアルの出力ポート

  //ポートをhiにする 初期化
  pinMode(in7, OUTPUT);
  DW(in7, HIGH);

}//setup

char *ss1; //文字のポインター
int ii; //ループカウンター


//無限ループ
void loop() {

  ss1="Hello World !\r\n";
  ii=0; //ループカウンター
  while(ss1[ii]!=0){

    //一文字出力
    pc_putc(ss1[ii]);ii++;

  } //while

  //1秒の待ち
  delay(1000);

}//loop



1200bps