なんで動かなかったかというと
USART_Cmd(USART1, ENABLE);を忘れていた
というか知らなかった という…
ってことで GPIOを初期設定後にASCII'A'を送信しつつLチカするコード↓
開発環境はストリナに書いてある方法です
アレ楽でいいね!!
#include "stm32f10x_conf.h"
#include <stdio.h>
#define GPDON(PIN) { GPIOD -> BSRR = _BV(PIN); }
#define GPDOF(PIN) { GPIOD -> BRR = _BV(PIN); }
#define GPDSET(PIN, bit) { if(bit){
GPDON(PIN); }else{ GPDOF(PIN); } }
void Delay(volatile
unsigned long
delay)
{ while(delay) delay--; }
int main(void) {
int
flag;
GPIO_InitTypeDef
GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
// システムを初期化します(外部水晶をONにし72MHz動作に切り替えます)
SystemInit();
//
GPIO Dポートのクロックを有効にします
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,
ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,
ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
//
PD.4ポートを出力にします。PD.4=赤LED Lowで点灯
GPIO_InitStructure.GPIO_Pin =
_BV(4);
GPIO_InitStructure.GPIO_Mode
= GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed
= GPIO_Speed_50MHz;
GPIO_Init(GPIOD,
&GPIO_InitStructure); // 初期化関数を読み出します。
// PA.9 Output
GPIO_InitStructure.GPIO_Pin =
_BV(9);
GPIO_InitStructure.GPIO_Mode =
GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,
&GPIO_InitStructure);
//
PA.0ポートを入力に
GPIO_InitStructure.GPIO_Pin =
_BV(0);
GPIO_InitStructure.GPIO_Mode
= GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,
&GPIO_InitStructure);
// USART init
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength =
USART_WordLength_8b;
USART_InitStructure.USART_StopBits =
USART_StopBits_1;
USART_InitStructure.USART_Parity =
USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode =
USART_Mode_Tx; /* | USART_Mode_Rx */ // ←受信機能を有効にするにはコメントアウトを解除
USART_Init(USART1,
&USART_InitStructure);
USART_Cmd(USART1, ENABLE);
for
( ; ; ) {
USART_SendData(USART1, 'A');
flag = !flag;
GPDSET(4,
flag);
Delay(GPIO_ReadInputDataBit(GPIOA,
1) ? 2000000 : 1000000);
}
}
なんか
Visual Studio→Word→Bloggerオンラインエディタ
で張り付けると
文字の色が保持されるかわりに タブが恐ろしいことになるんだよね
なんでだろう?
'\t'の扱いがVCでは半角スペース4文字だけどBloggerエディタだと違う とかかな?
追々直しますヾ(゚Д゚ )ォィォィ
↑修正しました 一部アレだけど まぁ 我慢してください
で、なぜprintfが使えないか
個人的に 正解率1割以下の勘を信じると
おそらくstdoutが無いんじゃないかと
だって シリアル出力だけで5系統あるわけじゃないですか(多分
んで それ以外にも ユーザーが作った出力があるかもしれない
となると stdoutを決めておくより
あとで定義したほうが自由度が高い
ってことじゃないかと
まぁエラーメッセージ的にはまったく違う理由っぽいですが
とりあえず そんな感じです
うー めんどくさいなぁ OS使いたいなぁ(((
すごい!!
返信削除参考にさせていただきました!!
ありがとうございますm(_ _)m