秋月で9月に95円で登場した、マイコン STM32L010F4P6 で
3分タイマーを作りました。
!!2020/10/24
!!stm32l010f4p6は、USARTシリアル書き込み出来ました。
!!(st-link nBOOT0を立ててください。)古いネタ
!!ユーチューブ キーワード STM32L010F4P6
!!新品 USART書き込み成功
苦労した点は、
まず、
1.シリアル通信での書き込みが現時点では、書き込み出来なかった。
2.nucleo-f767のst-linkから始めは、認識しなかった。
st-linkのファームをアップデートしたら認識した。
3.st-linkのリセット動作がおかしかった。ハードウァアリセットから
ソフトウェアリセットに変更したらうまくいった。
4.mbedでコンパイルすると容量が16kを超えてエラーになった。
少し古いmbedのバージョンにしたらぎりぎり16kになった。
リビジョン137までもどした。
mbedは、nuolec-l011を選択した
違いは、コンパレータと温度センサーがついている。
シリーズはSTM32L010、STM32L010F4は、sop20で16k。
コードメンテナンスでmbedで公開、mbedリビジョン165で動いた。
端子は、上から
1 SWDCLK
2 SWDIO
3 X2
4 X1
5 3.3V
6 GND
表示は、7セグメントで0,1,2,3のみ
x2=0,x1=0(0);x2=0,x1=1(1);x2=1,x1=0(2);x2=1,x1=1(3)
回路は、
boot0は、プルダウン10kでGND
nretは、プルアップ10kでVDD
VDDとGNDの間に0.1uf
7セグメントは、PA1,PA2,PA3,PA4,PA5,PA6,PA7,PB1,電圧を落とす為にダイオードを入れた。
x1,x2に10kでプルアップ
mbed側 #include "mbed.h" DigitalOut myled1(PA_1); DigitalOut myled2(PA_2); DigitalOut myled3(PA_3); DigitalOut myled4(PA_4); DigitalOut myled5(PA_5); DigitalOut myled6(PA_6); DigitalOut myled7(PA_7); DigitalOut myled8(PB_1); DigitalIn myin10(PA_10); DigitalIn myin9(PA_9); void seg0(){ myled1 = 0;myled2 = 0;myled3 = 0;myled4 = 1;myled5 = 0;myled6 = 0;myled7 = 0;myled8 = 1; } void seg1(){ myled1 = 1;myled2 = 0;myled3 = 1;myled4 = 1;myled5 = 1;myled6 = 1;myled7 = 0;myled8 = 1; } void seg2(){ myled1 = 0;myled2 = 0;myled3 = 1;myled4 = 0;myled5 = 0;myled6 = 0;myled7 = 1;myled8 = 1; } void seg3(){ myled1 = 0;myled2 = 0;myled3 = 1;myled4 = 0;myled5 = 1;myled6 = 0;myled7 = 0;myled8 = 1; } int main() { int a = 0; int b = 1; while(1) { while( (a = myin9 * 2 + myin10) == b ) {} if ( a == 0 ) { seg0(); } else if ( a == 1 ) { seg1(); } else if ( a == 2 ) { seg2(); } else if ( a == 3 ) { seg3(); } b=a; } } //SOLD_AT_MERCARI //ICHIGOJAM // //10 '3 MIN TIMER //20 OUT 10,0:OUT 11,0:'0 //30 WAIT 60*60-0:' 1M //40 OUT 10,1:OUT 11,0:'1 //50 WAIT 60*60-0:' 1M //60 OUT 10,0:OUT 11,1:'2 //70 WAIT 60*60-0:' 1M //80 OUT 10,1:OUT 11,1:'3 //90 BEEP ichgojam側のソースコード 10 '3 MIN TIMER 20 OUT 10,0:OUT 11,0:'0 30 WAIT 60*60-0:' 1M 40 OUT 10,1:OUT 11,0:'1 50 WAIT 60*60-0:' 1M 60 OUT 10,0:OUT 11,1:'2 70 WAIT 60*60-0:' 1M 80 OUT 10,1:OUT 11,1:'3 90 BEEP