STM32L010とI2Cを使い0x80に「hello...」と出力する。(Keil)
x Mbed2
1.SCLとSDAを接続、プルアップも忘れずに
2.電源の接続
3.下記のソースコードを書き込む
4.コンパイル実行で表示されたら終了
5.おわり
STM32G031とVSCode+STM32CubeでI2Cスレーブの受信文字をシリアル出力(受信)(STM32-I2C-USART)(CH340N)
なぜかわからないがmbed.bldのファイルを変更したら動いた
mbed.bld
https://os.mbed.com/users/mbed_official/code/mbed/builds/2e9cc70d1897
プログラム
//I2C_TEST_STRING_R1
// build https://os.mbed.com/users/mbed_official/code/mbed/builds/2e9cc70d1897
#include "mbed.h"
DigitalOut myled(PA_4);
#define ADDR (0x80) //I2Cのアドレス
I2C i2c(PA_10, PA_9); //010
//10の割り算 0から1028までは、正しい。主に0から999
#define DVI10(n) ((n*205)>>11)
char ch_hex_a_b[16];
char *ch_hex_a(int x)
{
int x_bk;
ch_hex_a_b[4] = 0;
if ( x >= 9000 ) { x = x - 9000; ch_hex_a_b[0] = '9'; }
else if( x >= 8000 ) { x = x - 8000; ch_hex_a_b[0] = '8'; }
else if( x >= 7000 ) { x = x - 7000; ch_hex_a_b[0] = '7'; }
else if( x >= 6000 ) { x = x - 6000; ch_hex_a_b[0] = '6'; }
else if( x >= 5000 ) { x = x - 5000; ch_hex_a_b[0] = '5'; }
else if( x >= 4000 ) { x = x - 4000; ch_hex_a_b[0] = '4'; }
else if( x >= 3000 ) { x = x - 3000; ch_hex_a_b[0] = '3'; }
else if( x >= 2000 ) { x = x - 2000; ch_hex_a_b[0] = '2'; }
else if( x >= 1000 ) { x = x - 1000; ch_hex_a_b[0] = '1'; }
else { ch_hex_a_b[0] = '0'; }
x_bk = x;
x = DVI10(x); // 12 <- 123 / 10
ch_hex_a_b[3] = '0' + ( x_bk - (x*10) ); // 3 <- 120 - 123
x_bk = x;
x = DVI10(x); // 1 <- 12 / 10
ch_hex_a_b[2] = '0' + ( x_bk - (x*10) ); // 2 <- 12 - 10
ch_hex_a_b[1] = '0' + x;
return(ch_hex_a_b);
} //ch_hex_a
//一文字出力
int pc_putc(char ch)
{
i2c.write(ADDR, &ch , 1);
wait_ms(1);//1mS待つ 連続送信防止用 受信落ち対策
return(0);
} //pc_putc
//文字列の表示 nana_seg
int pc_printf(char *str1)
{
//文字の中身がゼロか
while(*str1) {
pc_putc( *str1 ++);
} //while
//戻り値
return(0);
}//ns_printf
//メインプログラム
int main() {
//無限ループ
while(1){
myled = 1;//LEDをオン
//I2Cに文字列を出力
pc_printf("hello world\r\n");
//I2Cに文字列を出力
pc_printf(ch_hex_a(1234));
//I2Cに文字列を出力
pc_printf("\r\n");
myled = 0;//LEDをオフ
wait_ms(1000);//1秒待つ
}//while
} // main
//容量削減 約-3kバイト
void error(const char* format, ...){}
Author And Source
この問題について(STM32L010とI2Cを使い0x80に「hello...」と出力する。(Keil)), 我々は、より多くの情報をここで見つけました https://qiita.com/caa45040/items/dcc2b011da66ab2af818著者帰属:元の著者の情報は、元の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 .