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を使ってみました
これを使うことで、デバッグがやりやすくなると思うので頑張ってみてね