#include <stdio.h>DXLIBを使っていますので、コンパイルにはGCC Developer Liteを使用したコンパイルの方法を参考にしてください。
#include <conio.h>
#include "dxlib.h"
#define OFFSETTIME (50) // タイムアウトオフセット[ms]
void main (void) {
TDeviceID dev;
char inputcomport[10], mycomport[20]="\\\\.\\";
int bdiv=-1, baud, i, yn;
uint16_t val16;
uint8_t val8;
printf ("input com name=");
gets (inputcomport);
printf ("use [%s]\n",inputcomport);
strcat (mycomport, inputcomport);
if ((dev = DX_OpenPort (mycomport, 3000000))) {
DX_SetTimeOutOffset (dev, OFFSETTIME);
printf ("Open success\n");
for (bdiv=-1;bdiv<250;bdiv++) {
// ボーレートの変更
if (bdiv >= 0) DX_SetBaudrate (dev, (baud=2000000 / (bdiv + 1)));
else DX_SetBaudrate (dev, (baud=3000000));
printf("\rbaud=%7d ",baud);
uint32_t num = 253;
TDxAlarmStatus stat[255];
// Ping2で検索
if (DX_Ping2 (dev, &num, stat, NULL)) {
printf ("%d device found\n", num);
// 検索で見つかったデバイスを列挙
for (i = 0; i < num; i++) {
// アドレス16(Status Return Level)を読み出し
if (DX_ReadWordData (dev, stat[i].id, 0, &val16, NULL)) {
printf ("Found ID=%d stat:$%04X modelno:$%04X\n", stat[i].id, stat[i].Status, val16);
} else {
// 読み出しに失敗したらおそらくStatus Return Levelが0だろう
printf ("Found ID=%d stat:$%04X modelno:???? \n", stat[i].id, stat[i].Status);
printf ("Do you want to reset Status Return Level ? (y/n)->");
yn = getch ();
putch( yn);
if (yn == 'y' || yn == 'Y') {
printf ("\nupdate....");
DX_WriteByteData (dev, stat[i].id, 16, 2, NULL);
Sleep (800);
if (DX_ReadByteData (dev, stat[i].id, 16, &val8, NULL)) {
if (val8 == 2) printf ("success\n"); else printf("fail\n");
} else printf ("fail\n");
} printf ("\n");
}
}
}
}
DX_ClosePort (dev);
} else {
printf ("Open error\n");
}
}
STM32F3 BootloaderST社のDfuSeというツールを使えばUSB経由でチップのフラッシュへ書き込む事ができますが、その前にBOOT0端子(CN2-38)を3.3V端子(CN1-2)につないでからUSBケーブルを接続してください。