2014年12月31日水曜日

STM32開発環境

これまで電子工作では、ずっと国産ルネサスを応援して使っていたのだけれど、今回、マウスにはSTM32を使うことにした。世界標準のarmシリーズだし、国内マウサーでも使っている人が多いからだ。

それで、開発環境としては、Eclipseとか、CoIDEとかいろいろな無料環境もあるのだけれど、ねむいさんのブログで紹介されている環境を作ってみた。

環境を作った後、同じくねむいさんが公開しているサンプルプロジェクトのmakeまでは上手くいったのだけれど、STM32の導入としてLチカをしようと思うのだけれど、プロジェクトが複雑すぎて、何を削っていいのか良く分からなかった。
それに、makefileというのをこれまで使ったことはなかったので、内容をどう変えていいのか、そこから始めないと。

それで、今日になってようやくmakeが通って、ターゲットにプログラムを書き込んで実行することが出来た。
さぁ、これから手探りでSTM32を食べていこう。

STM32F4 discovery向けのLチカプロジェクトをこちらに保存しておく。

#include "stm32f4xx.h"

int main(void)
{
  /* structure to initialize GPIO */
  GPIO_InitTypeDef GPIO_InitStructure;

  // --------------------------------------------------
  // Port A 設定(SW入力) ここから
  //   SW on = 1 , off = 0
  /* supply the clock to AHB1(GPIOD) */
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
  //GPIO pin configuration
  GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_Init(GPIOA,&GPIO_InitStructure);
  // Port A 設定(SW入力) ここから
  // --------------------------------------------------

  // --------------------------------------------------
  // Port D 設定(LED出力) ここから
  // PD12(LED4) , PD13(LED3) , PD14(LED5) , PD15(LED6)
  //  GPIOD->BSRRL(点灯) , GPIOD->BSRRH(消灯)
  /* supply the clock to AHB1(GPIOD) */
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,ENABLE);
  //GPIO pin configuration
  GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOD,&GPIO_InitStructure);
  // Port D 設定(LED出力) ここまで
  // --------------------------------------------------

  while(1){
    if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)){
      //ボタンが押されて1になっていたら以下を実行
      GPIOD->BSRRL = GPIO_Pin_13;  // (点灯)
    }else{
      GPIOD->BSRRH = GPIO_Pin_13;  // (消灯)
    }
  }

  return 0;
}


0 件のコメント:

コメントを投稿