×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
STM32F030F4P6というマイコンで、なんとか自力でLチカプログラムを制作することが出来ました。
(もちろん、幾つもの資料を参考にしています)
まず、IDEはEmBitz(Ver1.11)を採用しました。
このIDEは、ユーザー登録などしなくても使用できます。
XP以降のWindowsマシンに対応しているようなので、古いXPマシンを用意するとか、仮想マシン上でプログラミング環境を作ってしまうのが良いと思います。
※LinuxのWineだと、上手く動きませんでした。
新規作成すると、プロジェクトの中にSTM32シリーズがちゃんと用意されているので、そこからF0xxを選択します。
main.cを選択すると、最低限の情報が記載されたプログラムが表示されます。
(これをビルドすると、「何もしないプログラム」を得ることが出来ます)
これを、以下のプログラムで置き換えてしまうと、LEDが点滅するプログラムが得られます。
ですが、初期状態ではHEXファイルは作成されません。
Hexファイルを入手するためには、Project >> Projectties >> Build targets と選択して、そこにあるGenerate Hex Fileの項目にチェックを入れてください。
ここにチェックを入れた状態でBuildを行うと、Hexファイルが作成されるので、あとはこのHexファイルをマイコンに書き込んでやれば、制作したプログラムが実行されるはずです。
STM32に関して、私はほぼ完全な初心者なのでHALとかの事はよく判りませんが、EmBitzだけでも、とりあえずプログラミングは可能なのだと思いました。
※LEDは10番目のGPIOA-4Pinの位置に接続されているものとします。
/*
**
** Main.c
**
**
**********************************************************************/
/*
Last committed: $Revision: 01 $
Last changed by: $Masaomi Takahashi: $
Last changed date: $Date: 20190623$
ID: $Id: STM32F030F4P6-LED$
**********************************************************************/
#include "stddef.h"
#include "stm32f0xx.h"
#include "stm32f0xx_conf.h"
uint32_t count;
int main(void)
{
volatile unsigned int x=0;
RCC ->AHBENR |= (1<<17); //Enable CLK for Port A
// RCC ->AHBENR |= (1<<18); //Enable CLK for Port B
// RCC ->AHBENR |= (1<<19); //Enable CLK for Port C
GPIOA -> MODER |= (1<<8); //Enable Port A Pin4 as a digital output
// GPIOA -> MODER |= (1<<12); //Enable Port A Pin6 as a digital output
// GPIOA -> MODER |= (1<<14); //Enable Port A Pin7 as a digital output
// GPIOA -> MODER |= (1<<16); //Enable Port A Pin8 as a digital output
while(1){
// LED4 (blue) is controlled by Port C Pin8 output
GPIOA ->ODR |= (1<<4); //Turn GPIOA Pin 4 On
for (x=0; x<1000000; x++);
GPIOA ->ODR &= ~(1<<4); //Turn GPIOA Pin 4 Off
for (x=0; x<1000000; x++);
}
}
(もちろん、幾つもの資料を参考にしています)
まず、IDEはEmBitz(Ver1.11)を採用しました。
このIDEは、ユーザー登録などしなくても使用できます。
XP以降のWindowsマシンに対応しているようなので、古いXPマシンを用意するとか、仮想マシン上でプログラミング環境を作ってしまうのが良いと思います。
※LinuxのWineだと、上手く動きませんでした。
新規作成すると、プロジェクトの中にSTM32シリーズがちゃんと用意されているので、そこからF0xxを選択します。
main.cを選択すると、最低限の情報が記載されたプログラムが表示されます。
(これをビルドすると、「何もしないプログラム」を得ることが出来ます)
これを、以下のプログラムで置き換えてしまうと、LEDが点滅するプログラムが得られます。
ですが、初期状態ではHEXファイルは作成されません。
Hexファイルを入手するためには、Project >> Projectties >> Build targets と選択して、そこにあるGenerate Hex Fileの項目にチェックを入れてください。
ここにチェックを入れた状態でBuildを行うと、Hexファイルが作成されるので、あとはこのHexファイルをマイコンに書き込んでやれば、制作したプログラムが実行されるはずです。
STM32に関して、私はほぼ完全な初心者なのでHALとかの事はよく判りませんが、EmBitzだけでも、とりあえずプログラミングは可能なのだと思いました。
※LEDは10番目のGPIOA-4Pinの位置に接続されているものとします。
/*
**
** Main.c
**
**
**********************************************************************/
/*
Last committed: $Revision: 01 $
Last changed by: $Masaomi Takahashi: $
Last changed date: $Date: 20190623$
ID: $Id: STM32F030F4P6-LED$
**********************************************************************/
#include "stddef.h"
#include "stm32f0xx.h"
#include "stm32f0xx_conf.h"
uint32_t count;
int main(void)
{
volatile unsigned int x=0;
RCC ->AHBENR |= (1<<17); //Enable CLK for Port A
// RCC ->AHBENR |= (1<<18); //Enable CLK for Port B
// RCC ->AHBENR |= (1<<19); //Enable CLK for Port C
GPIOA -> MODER |= (1<<8); //Enable Port A Pin4 as a digital output
// GPIOA -> MODER |= (1<<12); //Enable Port A Pin6 as a digital output
// GPIOA -> MODER |= (1<<14); //Enable Port A Pin7 as a digital output
// GPIOA -> MODER |= (1<<16); //Enable Port A Pin8 as a digital output
while(1){
// LED4 (blue) is controlled by Port C Pin8 output
GPIOA ->ODR |= (1<<4); //Turn GPIOA Pin 4 On
for (x=0; x<1000000; x++);
GPIOA ->ODR &= ~(1<<4); //Turn GPIOA Pin 4 Off
for (x=0; x<1000000; x++);
}
}
PR
コメント