カウンタ

パルス幅はひとまず置いておいて、カウンタを試してみます。 プログラムはこんなの。難しいところはなさそう? 難しさと言えば、多機能ボードなのでいろいろな端子が すでに使われていて、残りの端子でなんとかする必要が あります。 今回はタイマ2のETRをカ…

パルス幅入力(2)

更新がいつものペースに戻った感じもしますが、 少しずつ活動は続けています。 パルス幅入力は、とりあえず動くようになったのですが、 気に入らないところがあって、そこを直すと動かなく なってしまうのです。 何か勘違いがあるのだと思いますが、現時点で…

パルス幅入力(1)

超音波距離センサを使ってみたいと思い、パルス幅入力を 試しました。使ったセンサはこれ: akizukidenshi.com 超音波を出して反射して戻ってくるまでの間センサからHighを 出力します。このセンサ出力がHighになっている時間を 測定すると、音速を使って距…

USB CDCがエラーになる要因

USB CDCがなぜかエラーになる場合があって、 その要因の一つがわかったので忘れないように 書いておきます。 本来ならUSBの設定を行ったときに、その割り込みハンドラである OTG_FS_IRQHandlerが生成されるはずですが、なぜか生成 されない場合があるようで…

I2C

I2Cで接続されたセンサを使ってみます。 最近は、まず参考になりそうな先人を探すところからスタートです。 今回はこの方の簡潔な説明を見て、考えながら試行錯誤しました。 単にセンサにアクセスするだけなら、これで十分な気がします。 meerstern.seesaa.n…

PWM

A-D変換でやってみたいことはあるのですが、先にPWMを試してみます。 ごく単純にLEDの明るさを変えるプログラムを作ります。 PB4にLEDがつながっていて、PB4はTIM3のCH1でもあるので TIM3を使ってPWMを実現します。 大量にあるPWMの情報の中から、今回参考に…

A-D変換 DMAの利用

今回は驚異的な進み方ですね。 次に、DMAを使ってみます。 A-D変換が完了したとき、これまではHAL_ADC_GetValueを呼び出して変換結果を取り出していましたが、わざわざ呼び出さなくても変数に格納してもらえるとうれしいわけです。DMAを使えばそれが可能にな…

A-D変換 変換完了割り込みの利用

次に、変換完了割り込みを使います。 前回とは、CubeMXでADC1の割り込みを有効にする点が 大きく違います。 Preemption Levelは、以前のタイマの時と同様にデフォルトの0から1に変更します。 ソースコードは、割り込みハンドラではフラグadcDoneFlagを立てる…

A-D変換 基本編

続いて、A-D変換に取り組みます。 検索してみると何か難しいところがあるようなので 注意が必要ですね。 簡単なところから、順番に進めていきます。 先人の知恵によると、 A-D変換を起動するトリガ、A-D変換完了時の割り込み、 A-D変換結果のDMA転送の3つが…

タイマ割り込み

STM32マイコンに多数用意されたタイマのうち、 ベーシックタイマであるTIM6を使って、 1秒ごとに割り込みを発生させて Lチカを行います。 まず、TIM6の設定を行います。 ベーシックタイマというだけあって、 上半分はほぼ設定がありません。 下半分では、タ…

USB CDC

今回のボードはデバッガがないので、printfデバッグになる予感がします。そこでUSB CDCでPCにメッセージを表示できるようにしてみます。 まずは、先人の知恵を調べてみると、次のようなところが見つかりました。 これらを参考に進めてみます。 blueeyes.saku…

HAL_Delay

いわゆるLチカをするときに、点滅の間隔の時間待ちをどうやって作るか、という問題があります。 とりあえず100万回ループとかにするわけですが、STM32Cubeを使うとHAL_Delayなるものがあることを知りました。引数はミリ秒単位で与え、例えばHAL_Delay(1000)…

STM32CubeIDE

開発環境として、STM32CubeIDEのバージョン1.0.0が公開されていました。これまではAtollicのTrueSTUDIOを使っていましたが、乗り換えてみます。 STM32CubeMXが統合されているので、これまでのようにコード生成時に毎回IDEを選択する必要がなくなって便利な気…

B-L475E-IOT01Aで遊ぶ [14]

前回書いたことは、先日のALGYANハンズオンの資料にも 書いてありました。 algyan.connpass.com このハンズオン資料のスライド27ページ目が、 Azure Portalの画面ですね。 ExplorersカテゴリのIoT devicesから起動します。 26ページ目ではアプリのDevice Exp…

B-L475E-IOT01Aで遊ぶ [13]

1点訂正を。 Device Explorerをどうするかで、 Azure Portalから起動するパスがないと書いていたのですが、 名前が変わったものがあるようです。 IoT Hubを選んで、EplorerカテゴリのIoT Deviceを 起動すると、Device Explorerと同等の機能がありそうです。 …

B-L475E-IOT01Aで遊ぶ [12]

先日の記事で、「このDevice Explorerを使って行っている操作は何なのか」なんていう疑問を書いていたのですが、これはわかった気がします。 yamamoto-works.hatenablog.com IoT Hubがデバイスを識別するために、デバイス固有の接続文字列が必要です。 この…

B-L475E-IOT01Aで遊ぶ [11]

前回の続きで、Device Explorerについて調べたことを、簡単に。 Device Explorer の利用開始方法 – Japan Azure IoT Support Blog この記事を参考に、IoT Hubを作ってAzure PortalからDevice Explorerを起動しようとしました。 しかし、これを書いている時点…

B-L475E-IOT01Aで遊ぶ [10]

前回、いろいろやって、Device Explorerを起動できるところまでたどり着きました。 これを使って資料に従って進めると、無事にマイコンボードからデータを 送信して、それをDevice Explorerで表示できました。 めでたし、めでたし。 最近、最後まで進められ…

B-L475E-IOT01Aで遊ぶ - 目次

B-L475E-IOT01Aで遊ぶ の目次です。 はてなブログで、こういう使い方ができるかどうかの実験です。 スタンドアロン編 yamamoto-works.hatenablog.com yamamoto-works.hatenablog.com yamamoto-works.hatenablog.com Azure連携編 yamamoto-works.hatenablog.c…

B-L475E-IOT01Aで遊ぶ [09] - Device Explorer

前回のつづきで、Device Explorerを使うところでつまづいた話です。 資料によると、Device ExplorerのダウンロードURLが示されていて、 そこから最新版をダウンロードするようです。 見てみると、最新版は10月10日版のソースコードです。 これをダウンロード…

B-L475E-IOT01Aで遊ぶ [08] - IoT

前回まで参照していたハンズオンはAD変換の章もあるのですが、 内容はだいたい分かるので、その章は飛ばして先に進むことにします。 ALGYANでこのボードを使うハンズオンは2種類あって、 本筋はクラウドとつなぐ方だと思います。 過去の資料を探すと、こんな…

B-L475E-IOT01Aで遊ぶ [07]

前回、IAR開発環境の有効期限について書きましたが、 ハンズオン参加者は2ヶ月間有効ということで、 1ヶ月延長されました。よかった。 そこで、2ヶ月目が終わったとき有償版に移行できる可能性があるか (主に金額の面で)、IARの方にうかがったところ、 や…

B-L475E-IOT01Aで遊ぶ [06] - I2Cとタイマ

ひきつづき、ハンズオンの資料に従って進みます。 今度はI2C&Timerです。 algyan.connpass.com このボードには、I2Cで様々なセンサがつながっています。 ここでは、温度センサを使っています。 マイコンに内蔵された多数のタイマのうちTIM2を使って1秒を計り…

B-L475E-IOT01Aで遊ぶ [05] - __IO

1点だけ。 前回はvolatileを追加して解決しましたが、そういえば、その前のGPIOの時は、スイッチが押されたかどうかのフラグの宣言に__IOを追加してあったことを思い出しました。 調べてみると、CMSISのcore_cm4.hで定義されていて、__IOはvolatileのことな…

B-L475E-IOT01Aで遊ぶ [04] - UART

今回はUARTを試します。 このハンズオンの資料の、UART実践のところです。 ハンズオンではここは飛ばしたので、初めてやってみる部分です。 とはいえ、資料に手順がのっているので、そのとおりに進めるだけですがw algyan.connpass.com プログラムの内容も理…

B-L475E-IOT01Aで遊ぶ [03] - LED

今日は時間が無いので簡単に。 このボードは、電源を入れるとLEDがいくつか点灯します。マニュアルを見ると消灯しているものを含めて9個ありました。 ユーザが自由に使えるLEDは2個あって、1つは[01]で使ったLED2。 他にもArduino互換コネクタのD13にLED1が…

B-L475E-IOT01Aで遊ぶ [02] - weak

B-L475E-IOT01Aのボードとは直接関係ないのですが、昨日の記事で、関数名を間違えたのにビルド時にエラーにならないのはなぜか、という件について少しだけ。 ふつう、関数名を間違えるとリンク時にエラーになるはずです。 今回はふつうではなかった、という…

B-L475E-IOT01Aで遊ぶ [01] - はじめに

STマイクロが出しているボードの中に、STM32 Discovery kit IoT node B-L475E-IOT01Aという、 ものすごく多機能なボードがあります。 このボードでいろいろ遊んでみようと思います。 www.st.com まずは、先日ALGYANのハンズオンに参加して習ったことを、もう…