それで、開発環境としては、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;
}
