STM32G031の独自のソフトウェアシリアルでHello Worldと出力 9600bps
目的
出来そうだから作ってみた
標準シリアルの場合は、SWDと衝突してフラッシュに書き込めなくなり
使い勝手が悪い。(リセット非対応の時)
ソフトウェアシリアルを使うとSWD,I2C,リセットが
同時使用出来て使い勝手がよくなるため
7,8 SWD
5,6 I2C
4 reset
2,3 電源
1 シリアル出力
とりあえず9600bps ウエートと102us
#define DW digitalWrite
//10の割り算 0から1028までは、正しい。主に0から999
#define DVI10(n) ((n*205)>>11)
//104 9600
//208 4800
//416 2400
//832 1200
//#define UART_DELAY 832 // 1200bps ok 031
//#define UART_DELAY 418 // 2400bps ok 031
//#define UART_DELAY 202 // 4800bps ok 031
#define UART_DELAY 102 // 9600bps ok 031
//#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
int q_st; //スタートタイム debug
int q_et; //エンドタイム debug
//仮想シリアルへの一文字出力 9600bps
int pc_putc(char ch) {
DW(in7, HIGH);
q_st = micros(); //debug
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);
q_et = micros(); //debug 引いた数が0で1041usなら正解
return(0);
}//pc_putc
void setup() {
//仮想シリアルの出力ポート
//ポートをhiにする 初期化
pinMode(in7, OUTPUT);
DW(in7, HIGH);
}//setup
char *ss1; //文字のポインター
int ii; //ループカウンター
//dbbug
int l_num,aaa,bbb,ccc; //debug
//debug
void jj_loop() {
pc_putc('A');
l_num = (q_et-q_st)/10;
//l_num = 104;
bbb=DVI10(l_num);
ccc=l_num-(bbb*10);
aaa=DVI10(bbb);
bbb=bbb-(aaa*10);
pc_putc( '0' + aaa );
pc_putc( '0' + bbb );
pc_putc( '0' + ccc );
pc_putc( 'X' );
pc_putc( 'u' );
pc_putc( 'S') ;
pc_putc( '\r' );
pc_putc( '\n' );
delay(1000);
}//loop
//無限ループ
void loop() {
ss1="Hello World !\r\n";
ii=0; //ループカウンター
while(ss1[ii]!=0){
//一文字出力
pc_putc(ss1[ii]);ii++;
} //while
//1秒の待ち
delay(1000);
}//loop
Author And Source
この問題について(STM32G031の独自のソフトウェアシリアルでHello Worldと出力 9600bps), 我々は、より多くの情報をここで見つけました https://qiita.com/caa45040/items/bb483de44a026b64f3d7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .