STM32資料 補足編3

Printfをしてみよう

いつも使っているHAL_UART_Transmit()では整数8桁しか送ることができず

小数や大きな数を送るときにはめんどくさい工夫が必要になってしまう

そこで、C言語でよく使うprintf()を使ってみよう

printfとは

C言語で結果の出力などによく使う関数

1つ目の引数で出力する文字と変数の位置(%dや%3.3lfなど)を定義し

2つ目の引数で出力する変数を指定する

printf("number[%d] = %3.3lf", id, value[id]);

今回はこれをHAL_UART_Transmit()送る方法を説明する

printfの使い方

printfを使うためには、"stdio.h"のインクルードとmain.cでの定義が必要になる

インクルード

main.cのインクルードのところをこのようにしよう

#include "wrapper.hpp"
#include "stdio.h"

printfの定義

main.cの/* USER CODE BEGIN 0 */の下にこのコードを書こう

#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE{
    
    HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, HAL_MAX_DELAY);
                
    return ch;
}

実際に使ってみよう

今回はfloatの値を送信するコードを書いてみた

このように自由に値などを送ることができるので、ぜひ使ってね

#include "wrapper.hpp"
#include "stdio.h"

void init(){

    float value = 0.123456789;
    int id = 1;
    printf("number[%d] = %3.3lf\n", id, value);
}

void loop(){

}

終わりに

今回はprintfを使ってみました

これを使うことで、デバッグがやりやすくなると思うので頑張ってみてね

リンク

・メインページ

/* USER CODE BEGIN Includes */ #include "wrapper.hpp" #include /* USER CODE END Includes */