2012年4月7日土曜日

STBeeでLチカ

今さらながらに
STBeeでLチカやってみました
ポートの入力/出力です


#include "stm32f10x_conf.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;
                  
    // システムを初期化します(外部水晶をONにし72MHz動作に切り替えます)
    SystemInit();
                  
    // GPIO A/Dポートのクロックを有効にします
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, 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.0ポートを入力に
    GPIO_InitStructure.GPIO_Pin = _BV(0);
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
                                    
    for ( ; ; ) {
          flag = !flag;
          GPDSET(4, flag);
          Delay(GPIO_ReadInputDataBit(GPIOA, 1) ? 1000000 : 2000000);
    }
}


開発環境はストリナで配布されてるモノ
ユーザースイッチが押されているか押されていないかで点滅周期が変わるプログラム

とりあえず入出力ができるようになったので
あとは割り込みとシリアル通信が出来れば
かなり色々と遊べる
タイマ割り込み/シリアル通信/ADCが出来れば 最低限の缶サットは作れるしなぁ

割り込みはめんどくさそうだし
とりあえずUSARTとADCを目指して
PIC飛ばす前にSTBee飛ぶかも?(缶サット

0 件のコメント:

コメントを投稿