STM32G031で9600bpsのソフトウェアシリアルのライブラリ化
x OB(オプションビット)は、(2)GPIO
目的
ソフトウェアシリアルのテスト
シリアルの出力先は、PA0
追加方法は、新規タブ
Arduino ファイル分割 で検索するといろいろ出てくる
引用
メインプログラム
//SER_LB_9600_031_1
#include <Arduino.h>
#include "SER_9600_031_1.h"
//初期化
void setup()
{
//シリアルの初期化
pc.beginNS(9600);
} //setup
//メインループ
void loop()
{
//データの表示
pc.printNS("HELLO WORLD\r\n");
delay(1000);
} //loop
SER_9600_031_1.hのプログラム
#ifndef TEST_H
#define TEST_H
//SER_9600_031_1.h
#define TX1 PA0 // 4pin
#define UART_DELAY 102 // 9600bps ok 031
#define DW digitalWrite
//クラスの定義
struct _pc
{
void beginNS(int sp); //メソッドの宣言
int putcNS(char ch); //メソッドの宣言
int printNS(char *str1); //メソッドの宣言
};
//ポートをhiにする 初期化
//メソッドの定義
void _pc::beginNS(int sp)
{
//ポートをhiにする初期化
pinMode(TX1, OUTPUT);
DW(TX1, HIGH);
}
//仮想シリアルへの一文字出力 9600bps
//メソッドの定義
int _pc::putcNS(char ch)
{
DW(TX1, HIGH);
DW(TX1, LOW);//START
delayMicroseconds(UART_DELAY); //START BIT WAIT
for (int ii = 0; ii < 8; ii++) {
DW(TX1, (ch >> ii) & 1 );
delayMicroseconds(UART_DELAY); //DATA 1-8BIT WAIT
}//for
DW(TX1, HIGH);//Stop
delayMicroseconds(UART_DELAY); //StOP BIT WAIT
return (0);
}
//文字列の表示
//メソッドの定義
int _pc::printNS(char *str1)
{
//文字の中身がゼロか
while (*str1) {
//一文字出力
putcNS(*str1 ++);
} //while
//戻り値
return (0);
}
//実体の作成
_pc pc;
#endif
Author And Source
この問題について(STM32G031で9600bpsのソフトウェアシリアルのライブラリ化), 我々は、より多くの情報をここで見つけました https://qiita.com/caa45040/items/adfde734f613447fd094著者帰属:元の著者の情報は、元の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 .