忍者ブログ
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

復活!!
誰得カテゴリ!!

あたらに始めようと思いましたが、
4回目までで大したことやってなかったので続きにします(笑)

USARTだけで5記事以上使うと思いますが、
つか絶対FF14のパッチが来て尻すぼみになると思いますが(笑)

今回の目的はこれ!!

『イニシャルから全部やってシリアル通信をしよう!!』

です。

通信の内容はまだ決めてませんが、例えば
「アスキーコードをコールバックする」とかにしてみましょうか。

パソコンから「A」って送ったら、マイコン側で処理して「0x41」って返ってくる感じですね。

いろいろ必要なものもありますが、まずは新規プロジェクトをEWARMで作りましょう。

※本記事は作りながら書いてるのであとから手直し入れる可能性大です

EWARMのバージョンは6.70.2.6310


【新規プロジェクトを作る】
①上段のメニューから[プロジェクト]-[新規プロジェクトの作成]
を選びます。

②出てきたウィンドウでツールチェーンはARM
Cの+を展開してmainを選択してOK

③保存メニューが出てきますので、適当な場所を選んで名前をつけて保存
今回は「novice_usart」というプロジェクト名にしました。

④プロジェクトができますので次に[ファイル]-[ワークスペースの保存]をします

⑤なんか[Debug]と「setting」フォルダが勝手に出来上がってますがここに
「novice_usart.eww」を作ります。③で作った.ewpと間違わないように注意

⑥保存を押せば空っぽのプロジェクトが出来上がります。


【フォルダの作成】
プロジェクトに作るのではなく
プロジェクトを保存した場所にダイレクトにwindows上でフォルダを作ります。
これはわかりやすくするためだけの作業なので必須ではないです。
novice_usartフォルダの配下に
「資料」フォルダ:リファレンスマニュアルやデータシートをDLして入れときましょう
「lib」フォルダ:ライブラリ関係は必要な分だけ引き抜いてこっちに入れます。
↑必要な分だけ引き抜くのは構成をわかりやすくするためです。ライブラリファイル全部入れるとよくわからん状態になるので。
を作ります。

【コアオプションの設定】
メニューの[プロジェクト]-[オプション]を選びます
・「一般オプション」ターゲットタブのデバイスにチェック
 STのSTM32L152xBを選びます

・「一般オプション」ライブラリ設定タブで
 ライブラリをフル
 低レベルインターフェースのライブラリ実装をセミホスティングになってるのを確認
 stdout/stderrはセミホスティング経由になっているのを確認
 CMSISは使用するにチェック

・「一般オプション」ライブラリオプションタブで
 printfフォーマッタはフル
 Scanフォーマッタはフル

・「C/C++コンパイラ」の言語1タブ
 言語はCを確認
 言語の適合は標準(IAR拡張あり)なのを確認
 Cの派生言語はC99を確認

・「C/C++コンパイラ」の言語2タブ
 char型符号なし
 浮動小数は厳密な適合
 マルチバイト文字サポートのチェックを外す

・「C/C++コンパイラ」の最適化タブ
 レベルは高

・「C/C++コンパイラ」の出力タブ
デバッグ情報の生成にチェック

・「C/C++コンパイラ」のプリプロセッサタブ
追加インクルードに
$PROJ_DIR$\
$PROJ_DIR$\User
$PROJ_DIR$\Lib\CMSIS\CM3\DeviceSupport\ST\STM32L1xx
$PROJ_DIR$\Lib\STM32L1xx_StdPeriph_Driver\inc
相対パスです。

シンボル定義に
USE_STDPERIPH_DRIVER
STM32L1XX_MD

・「アセンブラ」の言語タブ
 ユーザーシンボル~はチェック
 マルチバイト~はチェック外す

・「出力コンバータ」の出力タブ
 追加出力ファイルはチェックなし

・「リンカ」の設定タブ
デフォルトのオーバーライドにチェック
で、icfファイルはサンプルからもらってきます。
以前の記事で使ったTemperture_sensorのプロジェクトの中に
stm32l1xx_flash.icf
があるはずです。
これをコピペしてnovice_usartの直下に置きます。
で、アドレス指定でこれを指定します。

・「リンカ」のライブラリタブ
 自動ランタイム~にチェック
 デフォルトの~にチェック
 エントリシンボルには「Reset_Handler
 
・「リンカ」の最適化タブ
 C++仮想関数除去を実行にのみチェック

・「リンカ」の出力タブ
 出力ファイルはc.out
 出力ファイルにデバッグ~にチェック

・「リンカ」のリストタブ
 リンカマップファイルの表示にチェック

・「デバッガ」設定タブ
 ドライバをST-LINK
 Run to~にチェックでmain

・「デバッガ」ダウンロードタブ
 ベリファイにチェック
 フラッシュローダーを使用するにチェック

・「ST-LINK」のST-LINKタブ
 リセットはノーマル
 インターフェースはSWD
 CPUクロック32MHz
 SWOクロックは2000kHz


うおおおお長かった!!

んじゃぁ必要なファイル集めましょうか

【libフォルダの中身】
①まず標準ドライバーをDLしてきましょう(過去記事参照)
その中のLibrariesフォルダのしたにCMSISというフォルダが有ると思います
これをそのままlibのしたにコピペします

②つぎに同じくLibrariesのしたのSTM32L1xx_StdPeriph_Driverフォルダをまるまるコピペしてlibの下に置きます。

これでオッケー


【プロジェクトに読み込ませる】
ワークスペースのところにファイルを置いただけではダメです。
プロジェクトに使うファイルを追加する必要があります。

まずプロジェクトの配下に以下のフォルダを作ります

プロジェクトを右クリックで追加→グループの追加
・CMSIS
・StdPeriph_Driver
・User
・EWARMv5

次にこれらのフォルダにファイルを追加していきます。
フォルダを右クリック→追加→ファイルの追加で選んでいきます

CMSIS配下
core_cm3.c(コピペしたCMSISの下にあります)
system_stm32l1xx.c(コピペしたCMSISの下にあります)

StdPeriph_Driver配下
misc.c(コピペしたSTM32L1xx_StdPeriph_Driverの下にあります)
stm32l1xx_gpio.c(コピペしたSTM32L1xx_StdPeriph_Driverの下にあります)
stm32l1xx_rcc.c(コピペしたSTM32L1xx_StdPeriph_Driverの下にあります)
stm32l1xx_usart.c(コピペしたSTM32L1xx_StdPeriph_Driverの下にあります)

User配下
main.c(移動する)
stm32l1xx_it.c(Temperature_sensorサンプルからnovice_usart直下にコピペしてからプロジェクトに読み込ませる併せて同名の.hファイルもコピペで持ってくる)

EWARMv5配下
ベクターテーブル持ってくる。
コピペしたlibのなかの
lib\CMSIS\CM3\DeviceSupport\ST\STM32L1xx\startup\iar
ココに入ってるはずなのでこれを読み込み

という感じで基本的にメーカーが提供しているライブラリ関係を構築することになります

こんなかんじですね。

んじゃぁとりあえずメイクしてみましょう

プロジェクトを右クリックでメイク

はい!
エラーいっぱい出てきたと思います!!


というわけでこのエラーを潰していきましょう


core_cm3.cは通ったと思います
main.cもまだなにも書いてないので通ったと思います
misc.cで「cannot open source file "stm32l1xx_conf.h"」ってでてると思います。
そのあとsearchedっていうのはいろんな場所探してるのですがないよってことです。

このファイルは一応メーカー提供のものです
misc.cからどんどんincludeしていって・・・
misc.c→misc.h→stm32l1xx.h→stm32l1xx_conf.h
っていうところで引っかかってます。

エラーが出た場所はログ画面のエラー情報のところをクリックすればジャンプできます。

ちなみにこのファイルはstm32l1xx_it.cと同じ場所にあるので
これをコピペして持ってきましょう。
ヘッダーなのでプロジェクトへの読み込みはいりません。


さぁ、これでどうでしょうか。
すべてを再ビルドからみてみましょう。

misc.cは通ったと思います。

startup_stm32l1xx_md.sも通ったと思います。

stm32l1xx_gpio.cも通ったと思います。

stm32l1xx_it.cでmain.hがないよーって言ってます。
しかしmain.cまだ書いてないのにヘッダーと言われてもって感じなので、
作っちゃいましょう。
メモ帳開いて中身なにも書かずにmain.hって名前をつければOKです。

さらにいうとこのstm32l1xx_it.cってサンプルからもらってきたために、
そのサンプルに合わせた記述がすでにされています。

138行目のTimingDelay_Decrement();がそうですね。
行ごと削除してください。

あと151行目からの
void DMA1_Channel1_IRQHandler (void)
void RTC_WKUP_IRQHandler(void)
void EXTI0_IRQHandler(void)
の3つの関数もいりませーん。
削除削除

さぁ、これでリビルドしてください。

これで通ったはずです。

さて、これでベースが出来上がりました。

今回はここまでデス!!
PR
COMMENT
name
title
text
color   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
mail
URL
pass
secret
PREV ←  HOME  → NEXT
プロフィール
HN:
komyu/シュクレール/修造
性別:
非公開
自己紹介:
こうぶつはけものみみとのーびす(♀)とエリーン
主にROとTERAとラノベと雑多なkomyuの日記帳です。
新生FF14
TERA紋章しみゅ
ROサポートツール
タイムライン
RSSボットが記事更新をつぶやくのがほとんどっス…
ROキャラクター紹介


TERAキャラ紹介

シュクレール(バサ)



syuzo(エレ)



サケマス(アチャ)


その他サブ

ウリエルキゥィス(スレLv54)

Vermillion(サラLv56)

パズドラ

157,318,362
フレンド募集中
枠なきゃ増やす
最終プレイ3日以上になったら消す
カレンダー
02 2024/03 04
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
ツリーカテゴリ
ブログ内検索
最新コメント
[04/30 のな]
[03/22 NEIN]
[03/22 NEIN]
[10/31 イロイ]
[05/02 NONAME]
Copyright (C) 2024 のーびす監察日記 All Rights Reserved.
Photo by 戦場に猫 Template Design by kaie
忍者ブログ [PR]