<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>組み込みに使われるマイコン | 即戦力モノづくり!エンジニアへの道標</title>
	<atom:link href="https://depfields.com/category/learning/embedded/mc/feed/" rel="self" type="application/rss+xml" />
	<link>https://depfields.com</link>
	<description>組み込み（マイコン）スキルを楽しんで学びながら身につけて短期間で効率よく自由自在に扱えるようになりたいと思いませんか？</description>
	<lastBuildDate>Thu, 06 Jul 2023 00:50:05 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.3.1</generator>

<image>
	<url>https://depfields.com/wp-content/uploads/2020/07/cropped-favicon-1-32x32.png</url>
	<title>組み込みに使われるマイコン | 即戦力モノづくり!エンジニアへの道標</title>
	<link>https://depfields.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>ARMマイコンと組み込みプログラミングにおけるC言語のツボ</title>
		<link>https://depfields.com/c-language/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=c-language</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Fri, 29 May 2020 06:46:48 +0000</pubDate>
				<category><![CDATA[組み込みに使われるマイコン]]></category>
		<category><![CDATA[基礎知識]]></category>
		<guid isPermaLink="false">https://depfields.com/?page_id=1543</guid>

					<description><![CDATA[<p>C言語はやさしい！？ CMSISインターフェース規格に準じた仕様 ポイント 変数の中でも定数の場合はconst修飾子のついた変数として宣言します。組み込みの場合はROMに配置されますので、値の変更はできなくなります。値の [&#8230;]</p>
<p>The post <a href="https://depfields.com/c-language/">ARMマイコンと組み込みプログラミングにおけるC言語のツボ</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img fetchpriority="high" width="1024" height="683" src="https://depfields.com/wp-content/uploads/2020/05/coding-1853305_1920-1024x683.jpg" class="attachment-large size-large wp-post-image" alt="" decoding="async" srcset="https://depfields.com/wp-content/uploads/2020/05/coding-1853305_1920-1024x683.jpg 1024w, https://depfields.com/wp-content/uploads/2020/05/coding-1853305_1920-300x200.jpg 300w, https://depfields.com/wp-content/uploads/2020/05/coding-1853305_1920-768x512.jpg 768w, https://depfields.com/wp-content/uploads/2020/05/coding-1853305_1920-1536x1024.jpg 1536w, https://depfields.com/wp-content/uploads/2020/05/coding-1853305_1920.jpg 780w" sizes="(max-width: 1024px) 100vw, 1024px" /></div>




<h2 class="wp-block-heading">C言語はやさしい！？</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>今の世の中ではさまざまなプログラミング言語が存在しています。その中でC言語は比較的歴史が長いのですが、廃れることなくいまでも組み込みでの開発言語として現役で使用されています。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>他のプログラム言語に比べて、コードが軽くリアルタイムの制御に向いているなどの利点に加え、歴史が長い分、これまでの資産が豊富にあることもいまでの現役である理由でしょう。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/07/3250120_s.jpg" alt="" class="wp-image-4728" width="501" height="334" srcset="https://depfields.com/wp-content/uploads/2020/07/3250120_s.jpg 640w, https://depfields.com/wp-content/uploads/2020/07/3250120_s-300x200.jpg 300w" sizes="(max-width: 501px) 100vw, 501px" /></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ARMマイコンにはC言語は必須です。総合開発環境にもC言語やC++が標準です。C言語の歴史は古い分、成熟したプログラム言語でそれだけ書籍も豊富で自分にあったものも見つけやすいでしょう。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">抽象的なプログラミングだけの学習ではなく、マイコンを操作しながらの具体的に学習であれば独学でも短期間で習得できる</span></strong>でしょう。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>C言語に限らずどの言語でも文法上の最低限のルールや言語開発環境ツールに一度慣れるとあとは独学でもどんどん学習をすすめていけるものです。はじめのきっかけの一歩をどうするかが問題なわけですが、このサイトでは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">できるだけ早い段階で組み込み開発の環境でマイコンとC言語の学習を同時に行うことをおすすめします</span></strong>。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>C言語はプログラミング言語のなかでも古典的な分類にはいるわけですが、その分、文法的なクセに慣れさえすれば、例えばWindowsアプリ開発プログラム言語のC＃に比べて最新の知識やオブジェクト指向プログラミングをあえて意識する必要はないため<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">むしろ単純ですっきりしている</span></strong>と思います。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>C言語は高級言語ではあるのですが、汎用言語なのでなんでもかんでも既成の便利関数が用意されているわけでもなく、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">基本的な標準関数を利用してちょっとした機能を自作の関数という概念で作り上げていくことでスキルアップ</span></strong>してくこともC言語の醍醐味です。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-right vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>C言語らしい構造のプログラミングをはじめから意識する必要はまったくなく、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">初心者のうちは演算子と制御文の組み合わせだけの記述</span></strong>で動作するのであればそれいいと思います。ただし、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">変数関連の概念（ローカル変数、グローバル変数、static修飾子等）は最重要で初心者のうちからしっかり学習</span></strong>しておいてください。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-right vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>C言語特有のポインタ、構造体および共用体といったものを駆使した複雑なプログラミングはさておき、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">基本演算(四則、論理、ビット演算等）</span></strong>や<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">制御構造(ifやswitch文）</span></strong>といった基礎的なプログラムであればある程度使いこなせるようになるまではそんなに時間はかからないでしょう。マイコンで<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">特に大事なところはデジタル値を扱うための演算子を使いこなすところ</span></strong>ですので、このあたりは重点的に理解しておいたほうがよいでしょう。そう割り切ってC言語と付き合うと、むしろやさしい分類にはいるのではないでしょうか。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-right vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>慣れてくるにしたがって、文字列を自由に扱うなどより高度なことに挑戦したくなるので、その段階になってポインタや構造体などを意識してC言語らしいプログラミングを求めればよいのではないでしょうか。<br>C言語は奥が深いのでいくらでも<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">難解なもの</span></strong>にはできますがそれは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">実用的に好ましくはありません</span></strong>。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-right vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>まずは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">自分が見やすく整理されたプログラミング</span></strong>を心がければいいと思います。</p>
</div></div></div>



<h2 class="wp-block-heading">CMSISインターフェース規格に準じた仕様</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>一言でC言語といっても、言語の文法は共通なのですが、組み込みで使用するものはマイコンの仕様により多少異なりますので合わせる必要があります。言葉でいえば方言のようなものです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>方言のなかでも仕様が異なるのは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">変数の宣言の仕方</span></strong>のところくらいのものです。STM32マイコンのコンパイラは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ARM社が定めたCortex-Mシリーズで標準化されたCMSISインターフェース規格</span></strong>に準じています。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/05/variable_declaration1.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/variable_declaration1.jpg" alt="" class="wp-image-1625" width="423" height="196" srcset="https://depfields.com/wp-content/uploads/2020/05/variable_declaration1.jpg 465w, https://depfields.com/wp-content/uploads/2020/05/variable_declaration1-300x139.jpg 300w" sizes="(max-width: 423px) 100vw, 423px" /></a><figcaption class="wp-element-caption">通常変数</figcaption></figure>



<div style="display: inline-block; background: #191970; padding: 5px 10px; color: #ffffff; border-radius: 5px 5px 0px 0px;"><strong>ポイント</strong></div>
<div style="background: #ffffea; border-radius: 0px 10px 10px 10px; padding: 10px; border: 3px solid #191970;">
<p>変数の中でも<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">定数の場合はconst修飾子のついた変数として宣言</span></strong>します。組み込みの場合は<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">ROMに配置</span></strong>されますので、値の変更はできなくなります。値の変更する必要のない変数は定数として<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">RAM節約のためにconst修飾子をつけてROMに割り当て</span></strong>ます。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/05/variable_declaration2.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/variable_declaration2.jpg" alt="" class="wp-image-1626" width="424" height="191" srcset="https://depfields.com/wp-content/uploads/2020/05/variable_declaration2.jpg 460w, https://depfields.com/wp-content/uploads/2020/05/variable_declaration2-300x135.jpg 300w" sizes="(max-width: 424px) 100vw, 424px" /></a><figcaption class="wp-element-caption">const修飾子変数</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>小数点を扱う場合は浮動小数点型を使用します。Cortex-M3搭載のSTM32は演算をソフトウェアで行うので超高速ではありませんが32マイコンですので十分可能です。変数の型は単精度4バイトではfloatを、倍精度8バイトではdoubleを指定します。これらは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ARM特有ではなく、標準的なもの</span></strong>です。</p>
</div></div></div>



<h2 class="wp-block-heading">組み込みに特有な部分</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>C言語で<strong>組み込み特有のもの</strong>といえば"<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">volatile</span></strong>"修飾子のついた変数を使うことです。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/05/variable_declaration3-1.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/variable_declaration3-1.jpg" alt="" class="wp-image-1782" width="421" height="189" srcset="https://depfields.com/wp-content/uploads/2020/05/variable_declaration3-1.jpg 460w, https://depfields.com/wp-content/uploads/2020/05/variable_declaration3-1-300x134.jpg 300w" sizes="(max-width: 421px) 100vw, 421px" /></a><figcaption class="wp-element-caption">volatile修飾子変数</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>volatile修飾子をつけて変数を宣言すると<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">コンパイル時に最適化を抑止</span></strong>します。組み込み系では下記の例のように変数はCPUが常に関わっているものばかりではありません。</p>
</div></div></div>



<ul>
<li><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">値の変化をプログラム（CPU)が予測できない</span>変数</strong></li>



<li><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">割り込みなどで値が変わりうる</span>変数</strong></li>



<li><strong>ハードウェアと密接に関わっていて<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">CPUとは無関係に更新</span>される変数</strong></li>
</ul>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>コンパイル時に最適化されると、コード自体は無駄を削られたり処理速度が向上するのですが組み込み系特有の変数でCPUとは関連なしにハードウェアと密接に関わっている変数などは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">最適化により想定外の動作をしてバグを発生させる</span></strong>ことがあります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>このため、変数により<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">"volatile"修飾子をつけて宣言</span></strong>して<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">コンパイル時に最適化させない</span></strong>ようにします。ARM系コアでは修飾子として "__IO"をつけます。</p>
</div></div></div>



<div style="display: inline-block; background: #191970; padding: 5px 10px; color: #ffffff; border-radius: 5px 5px 0px 0px;"><strong>ポイント</strong></div>
<div style="background: #ffffea; border-radius: 0px 10px 10px 10px; padding: 10px; border: 3px solid #191970;">
<p>アプリケーションで<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">割り込み処理内で使用する変数</span></strong>、<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">周辺機能（ペリフェラル）により処理される変数</span></strong>は修飾子"__IO"をつけて"volatile"変数として宣言しておきます。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<h2 class="wp-block-heading">まとめ</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>この章ではマイコンの開発プログラミングに必須なC言語について解説してきました。プログラマーの間ではC言語は難易度が高く、敬遠されがちなところもあるようですが、プログラミング言語としてC言語そのものが難しいのではなく、初心者には難しい側面があるだけです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>組み込み初心者としては、比較的単純な構造のプログラミングでマイコンを操作することで慣れていくことをおすすめします。C言語特有の難解な概念のものは後回しにして、基本の演算や制御を操作しながら、変数の概念をしっかりおさえることが上達のツボであることを解説しています。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ARMマイコンの開発するC言語の仕様はARMの規格にしたがっており、変数表記が汎用C言語と多少異なりますが、違いはその部分だけです。</p>
</div></div></div>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>C言語の兄貴分の言語として、オブジェクト指向に対応したC++がありますが、プログラミングに慣れていないうちはC言語から始めることをお勧めします。オブジェクト指向の考え方自体は重要なのですが、慣れないうちにオブジェクト指向から入ると抽象的なため本来の目的を見失ってしまう恐れがあります。まずは、組み込みプログラミングというものに慣れて、ゆとりがあれば次のステップでオブジェクト指向のC++に挑戦してみればよいでしょう。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>



<p>教材ボードを使用したクロス環境でのC言語学習方法について</p>



<div class="linkcard"><div class="lkc-internal-wrap"><a class="lkc-link no_icon" href="https://depfields.com/guidance" target="_blank"><div class="lkc-card"><div class="lkc-info"><img class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">即戦力モノづくり!エンジニアへの道標</div>&nbsp;<div class="lkc-share"> <div class="lkc-sns-po">1 Pocket</div></div><div class="lkc-date">2020.05.04</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/2020/05/cog-wheels-1920_rev-150x150.jpg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">ARMマイコンをつかった組み込み技術習得のスキルアップ学習カリキュラム</div></div><div class="lkc-url">https://depfields.com/guidance</div><div class="lkc-excerpt">組み込みエンジニアになるために必要な資質および技能組み込み技術に興味はあるけど、どこから手をつければよいかわからない...めかのとろといったひとに組み込み技術を習得するうえでのカリキュラムにて準備するべきものを解説します。各個人によって、何から手をつければよいかは異なります。そのまえに、知っておいて欲しい組み込み世界の奥深さ...めかのとろ組み込み技術を身につけるには幅広い知識・経験を必要とします。その中でも特に初心者・未経験者にはとりわけコア部分であるマイコンの学習を始める前に電気・電子回路の知...</div></div><div class="clear"></div></div></a></div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>



<p>C言語学習におけるモニター出力について</p>



<div class="linkcard"><div class="lkc-internal-wrap"><a class="lkc-link no_icon" href="https://depfields.com/monitor-debug-apl" target="_blank"><div class="lkc-card"><div class="lkc-info"><img class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">即戦力モノづくり!エンジニアへの道標</div><div class="lkc-date">2020.06.16</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/2020/05/arif-riyanto-1DRq1ZsE2N0-unsplash-1-150x150.jpg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">シリアルモニター【STM32シリアル通信】</div></div><div class="lkc-url">https://depfields.com/monitor-debug-apl</div><div class="lkc-excerpt">STM32マイコンのシリアル通信機能を利用してプログラミングのデバッグを行います。プログラム内の任意の箇所に数値を表示するマイコン専用tsprintf文を挿入してPCの汎用ターミナルソフトでデータを表示することでデバッグを実現します。めかのとろプログラム内部の演算結果データや、分岐場所など特定するのに便利なモニターデバッグ用シリアルモニターアプリを紹介します。めかのとろ割り込みを使用した文字列送信（バッファ付き）をベースにしており、サンプルプログラムではシリアル通信USART3をシリアルモニター用に設定し、送信関...</div></div><div class="clear"></div></div></a></div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>


<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/c-language/" target="_blank" rel="external noopener"><div class="lkc-card"><div class="lkc-info"><img class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=en.depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">Most Powerful Bible to Become an Embedded Engineer</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/pz-linkcard/cache/ce21e6f2a06f40b2785d359686c4f50965365435bd5b16902d639767da26da34.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">C Language points in ARM Microcontrollers and Embedded programming | Most Pow...</div></div><div class="lkc-url">https://en.depfields.com/c-language/</div><div class="lkc-excerpt">C language is easy!?There are many different programming languages in the world today. Among them, C has a relatively long history and is still in use as a development language for embedded systems.In addition to its advanta</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/c-language/">ARMマイコンと組み込みプログラミングにおけるC言語のツボ</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ARMで電子工作しながら学習するのにお勧めNucleo開発ボード</title>
		<link>https://depfields.com/board/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=board</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Thu, 28 May 2020 04:14:00 +0000</pubDate>
				<category><![CDATA[組み込みに使われるマイコン]]></category>
		<category><![CDATA[STM32CubeIDE]]></category>
		<category><![CDATA[STM32]]></category>
		<category><![CDATA[Nucleo]]></category>
		<guid isPermaLink="false">https://depfields.com/?page_id=1541</guid>

					<description><![CDATA[<p>STM32マイコン搭載のNucleoボードを教材に使用する理由 マイコンボード仕様 ピンタイプ：I 入力　O 出力　I/O 入出力、S 供給電源I/Oレベル：FT 5V耐圧　無記入 電源電圧 教材ボードを利用したプログラ [&#8230;]</p>
<p>The post <a href="https://depfields.com/board/">ARMで電子工作しながら学習するのにお勧めNucleo開発ボード</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img width="409" height="291" src="https://depfields.com/wp-content/uploads/2020/05/nureo-f103rb.jpg" class="attachment-large size-large wp-post-image" alt="" decoding="async" srcset="https://depfields.com/wp-content/uploads/2020/05/nureo-f103rb.jpg 409w, https://depfields.com/wp-content/uploads/2020/05/nureo-f103rb-300x213.jpg 300w" sizes="(max-width: 409px) 100vw, 409px" /></div>




<h2 class="wp-block-heading">STM32マイコン搭載のNucleoボードを教材に使用する理由</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>マイコンの学習にあたって、一番の近道は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">自分で実際にマイコンを操作して、動作を確認しながら行うこと</span></strong>です。当サイトで解説しているものと同じ動作環境であれば、特に初心者が最も苦労し、時間を要する<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">実装への試行錯誤の行程を大幅に短縮</span></strong>できすぐにでも実機にて学習を開始できますので、マイコンの操作は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">最短期間で身につけることができる</span></strong>ようになっています。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>当サイトで教材として使用するボードはARM Cortex-M3コア<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">STM32F103RB</span></strong>を搭載した<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">NUCLEO-F103RB</span></strong>で行います。これ以外のSTM32シリーズのマイコンでもよいのですが、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">マイコンの仕様に合わせてカスタマイズする必要</span></strong>があり、初心者の場合はそこで挫折してしまいかねません。特に、マイコンを初めて扱うひとには<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">当サイトで紹介する教材ボードを使用して学習することをお勧めします</span></strong>。教材のマイコン操作に慣れたころには、他の仕様のSTM32マイコンへは容易に移植できるスキルが身についているでしょう。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong>NUCLEO-F103RB以外</strong>のSTM32マイコンが搭載されているボードでは、特にSTM32F1シリーズマイコンの場合は、互換性があるため同じSPL（Standard Peripheral Library)が使用でき、プロジェクト作成時に相当のMPUを選定して、SPL内で指定する<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">シンボル</span></strong>や<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">動作クロック</span></strong>などの設定をボードに合わせて多少カスタマイズする必要はありますが、比較的簡単に使用できるようになります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong>STM32マイコン</strong>でもSTM32F1シリーズでない場合、例えばCortex-M4コア搭載のSTM32F4シリーズではF4シリーズ専用SPLを使用する必要があり、当サイトで使用しているF1シリーズのSPLとは互換性がありませんので、そのままでは使用できません。STM32F1シリーズのマイコンで基本を理解したあとでは、移植もそんなに難しいものではありませんので使えるようになりますが、慣れないうちはF1シリーズで、特に<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">当サイトと同じ環境のNUCLEO-F103RBを使用することをおすすめ</span></strong>します。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>STM32F4などはCortex-M4を搭載していて、STM32F1(Cortex-M3)の上位機種となり、動作クロックも高く、浮動小数点演算機能をハードウェアで実現できたり高性能・高機能ではありますが、初心者の学習目的ではSTM32F1で過不足はまったくありません。また、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">STM32F4</span></strong>は当サイトで学習用として奨励しているSPLでも機能させることはできるのですが、性能・機能を活かすためにはできるだけ<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">最新のライブラリであるHAL(Hardware Abstruction Layer)ライブラリを使うほうがよい</span></strong>ため、F1シリーズで慣れてから上位機種を選ぶことをおすすめします。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>教材ボードにはターゲットマイコンとして<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">STM32F103RBが搭載</span></strong>されています。外部クロック発振源として水晶振動子8MHzを搭載しており、システムクロックは72MHzとしています。通常のアプリケーションでは十分な処理速度です。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>Nucleoボードはデバッガ用<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ST-Linkを内蔵</span></strong>していますのでUSBケーブルのみで学習を開始できます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>このボードはSTエレクトロニクス社のNUCLEOシリーズでSTM32F1マイコンを搭載したものです。NUCLEOシリーズの特徴は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ARM Mbed開発環境に対応</span></strong>した基板であることに加えて、電子工作で大人気の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">Arduino Uno Rev.3と互換のIOピンヘッダを搭載している</span></strong>ので電子工作でArduinono対応の数多い資産を利用することができます。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/nureo-f103rb.jpg" alt="" class="wp-image-4970" width="482" height="343" srcset="https://depfields.com/wp-content/uploads/2020/05/nureo-f103rb.jpg 409w, https://depfields.com/wp-content/uploads/2020/05/nureo-f103rb-300x213.jpg 300w" sizes="(max-width: 482px) 100vw, 482px" /><figcaption>教材ボードNUCLEO-F103RB</figcaption></figure>



<h2 class="wp-block-heading">マイコンボード仕様</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>以下に、教材マイコンボードの仕様を示します。<br>プログラム転送や学習のためのマイコン動作をちょっとした軽負荷で動作確認するだけであれば<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ボードに内蔵のST-LINK</span></strong>へ<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">USBケーブルを介して電源が供給されますので外付け電源は不要</span></strong>です。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/table-mc_rb.jpg" alt="" class="wp-image-5029" width="509" height="217" srcset="https://depfields.com/wp-content/uploads/2020/05/table-mc_rb.jpg 473w, https://depfields.com/wp-content/uploads/2020/05/table-mc_rb-300x128.jpg 300w" sizes="(max-width: 509px) 100vw, 509px" /><figcaption>搭載マイコン仕様</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ボード上にはヘッダピンとソケットがありますが、外側のヘッダピン(CN7/CN10)がSTMマイコン直結のMorphoコネクタとよばれるものです。内側のソケット(CN8/CN9)はArduinoに互換なのでこのボード自体をArduinoの互換機として開発もできるし、Arduino用の外付けシールドなどを活用することもできます。当サイトではArduinoの開発のことは割愛します。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/learning_board_nucleo.jpg" alt="" class="wp-image-5080" width="555" height="566"/><figcaption>NUCLEO-F103RBレイアウト</figcaption></figure>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>下記にSTM32F103RBのピン番号をそれに対応する機能をまとめました。この<strong>ピン番号はマイコン自体のもの</strong>であってNulecoのMorphoコネクタの番号ではありませんのでご注意ください。例えば、CN7の１番目は"<strong>PC10"</strong>であるからSTM32F103RBのピン51に直結しています。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>下記のピン定義表からこのピンはデフォルトでは汎用入出力Cポートの10として入力か出力で使用することができますが、リマップするとUSART3_TXで使うこともできるようになります。</p>
</div></div></div>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/08/table_pin.jpg" alt="" class="wp-image-6718" width="478" height="2382" srcset="https://depfields.com/wp-content/uploads/2020/08/table_pin.jpg 478w, https://depfields.com/wp-content/uploads/2020/08/table_pin-60x300.jpg 60w, https://depfields.com/wp-content/uploads/2020/08/table_pin-308x1536.jpg 308w, https://depfields.com/wp-content/uploads/2020/08/table_pin-411x2048.jpg 411w" sizes="(max-width: 478px) 100vw, 478px" /><figcaption>STM32F103RBピン定義表</figcaption></figure>



<p>ピンタイプ：I 入力　O 出力　I/O 入出力、S 供給電源<br>I/Oレベル：FT 5V耐圧　無記入  電源電圧</p>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>



<h2 class="wp-block-heading">教材ボードを利用したプログラミング学習環境</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>通常、C言語のプログラミングを学習するためには、<br>例えばWINDOS上で動作するC言語の開発環境として、Visual Studio等開発環境を構築してプログラミング学習を行います。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>プログラムの実行環境と開発環境が同じため、ちょっとした演算などの実行結果は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">printf文を使ってモニター表示で確認</span></strong>しながら学習をおこなうことができます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>この方法は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">学習目的がWindowsアプリの作成などはっきりとしている場合には有効</span></strong>で学習しながらスキルアップも図ることができるのですが、単にC言語学習だけが目的の場合では<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">具体的なプログラミン学習のカリキュラムがないとモチベーションが持続しない</span></strong>かもしれません。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>この方法の利点はPCだけでC言語を学習できることですが、コンパイラがマイコン用ではありませんので、<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>マイコン用C言語コンパイラに適用する場合は変数の型など仕様変更が必要</strong></span>です。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/cprograming.jpg" alt="" class="wp-image-1573" width="502" height="256" srcset="https://depfields.com/wp-content/uploads/2020/05/cprograming.jpg 506w, https://depfields.com/wp-content/uploads/2020/05/cprograming-300x153.jpg 300w" sizes="(max-width: 502px) 100vw, 502px" /><figcaption>C言語総合開発環境</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>これに対して、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">教材ボードを使用したC言語学習を行う方法</span></strong>もありますので紹介します。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>教材ボードに<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">PCとシリアル通信できる環境を構成</span></strong>すると、実際のマイコン内で動作するC言語によるプログラムをPCにモニター表示できるようになるので<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">実践的なC言語プログラミングとマイコン操作の学習を同時に行うことができる</span></strong>ようになります。プログラム実行環境(マイコン)と異なるシステム（PC）で開発をおこなう<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">クロス環境</span></strong>と呼ばれるものです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>環境構築に必要なものはPCの他に、教材ボード（マイコン）、USB-UART変換ケーブルおよびST-Linkデバッガと呼ばれるものです。PCだけではC言語学習ができないのはデメリットですが、これからマイコンを始める人にとっては<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">マイコンを直接操作するC言語の動作を確認しながら学習できる</span></strong>のは大きなメリットとなります。また、C言語のコンパイラがSTM32マイコン用のものですので、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">学習して慣れたものがそのまま実践で使用できる</span></strong>のも大きなメリットです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-right vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>STM32マイコン用プログラムを作成する総合開発環境STM32CubeIDEとST-Linkデバッガの組み合わせで、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">マイコンと通信してプログラムを動作</span></strong>させます。プログラムの動作をPC上でモニター確認するために、シリアル通信をおこないます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-right vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>PC上にはターミナルソフト（端末エミュレータ）と呼ばれる通信ソフトを使用して、シリアル通信を行います。マイコンとの接続は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">UART-USB変換ケーブルを使用</span></strong>します。ST-Linkの接続からマイコン電源は供給されますのでC言語学習目的では外付け電源はなくても動作します。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-right vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>初心者にとっては環境構築をすべて理解しておこなうことは難しいのですが、とにかく、PCとシリアル通信ができる環境を整えるところから始まります。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/clossdevelop_a.jpg" alt="" class="wp-image-5028" width="699" height="426" srcset="https://depfields.com/wp-content/uploads/2020/05/clossdevelop_a.jpg 680w, https://depfields.com/wp-content/uploads/2020/05/clossdevelop_a-300x183.jpg 300w" sizes="(max-width: 699px) 100vw, 699px" /><figcaption>クロス開発環境</figcaption></figure>



<div style="display: inline-block; background: #191970; padding: 5px 10px; color: #ffffff; border-radius: 5px 5px 0px 0px;"><strong>ポイント</strong></div>
<div style="background: #ffffea; border-radius: 0px 10px 10px 10px; padding: 10px; border: 3px solid #191970;">
<p>マイコン学習にあたって最低限必要な機材：<br />・<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">マイコンボード(STM32F1xx Cortex-M3搭載)<br />・USBケーブル（Mini USB Type-B)<br /></span></strong>・<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">プログラム転送用デバッガST-LINK/V2：<span style="color: #ff0000;">Nucleoボードには内蔵</span><br />・信号入力用SW類（押しボタンSWなど）：<span style="color: #ff0000;">Nucleoボードには内蔵</span><br />・信号出力確認用ランプ類（LEDなど）：<span style="color: #ff0000;">Nucleoボードには内蔵</span><br />・電流制限用抵抗器やボリューム：<span style="color: #ff0000;">外付けでLEDなどを使用する場合</span></span></strong></p>
<p>あれば便利なツール：<br />・<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">USB-UART変換ケーブル</span></strong>（これがあれば入出力はPCモニターで確認できる!!）</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<h2 class="wp-block-heading">市販のマイコンボード</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>市販のマイコンボードでSTM32F1xx（Cortex-M3)シリーズが搭載されているものは当サイトの内容を一部実践で動作確認することに使用することができます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ただし、当サイトで使用するアプリケーションプログラムは指定の教材ボード (NUCLEO-F103RB) 用ですので搭載している<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">マイコンやクロックの仕様に合わせて変更することが必要</span></strong>です。</p>
</div></div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer"><div class="vk_spacer-display-pc" style="height:20px"></div><div class="vk_spacer-display-tablet" style="height:10px"></div><div class="vk_spacer-display-mobile" style="height:5px"></div></div>



<figure class="wp-block-gallery has-nested-images columns-4 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" width="582" height="357" data-id="3374" src="https://depfields.com/wp-content/uploads/2020/06/stm32discovery.jpg" alt="" class="wp-image-3374" srcset="https://depfields.com/wp-content/uploads/2020/06/stm32discovery.jpg 582w, https://depfields.com/wp-content/uploads/2020/06/stm32discovery-300x184.jpg 300w" sizes="(max-width: 582px) 100vw, 582px" /><figcaption>STMVLDiscovery(F100RB)</figcaption></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="409" height="291" data-id="4970" src="https://depfields.com/wp-content/uploads/2020/05/nureo-f103rb.jpg" alt="" class="wp-image-4970" srcset="https://depfields.com/wp-content/uploads/2020/05/nureo-f103rb.jpg 409w, https://depfields.com/wp-content/uploads/2020/05/nureo-f103rb-300x213.jpg 300w" sizes="(max-width: 409px) 100vw, 409px" /><figcaption>Nucleo-F103RB</figcaption></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="554" height="407" data-id="3373" src="https://depfields.com/wp-content/uploads/2020/06/stbee.jpg" alt="" class="wp-image-3373" srcset="https://depfields.com/wp-content/uploads/2020/06/stbee.jpg 554w, https://depfields.com/wp-content/uploads/2020/06/stbee-300x220.jpg 300w" sizes="(max-width: 554px) 100vw, 554px" /><figcaption>STBee (STM32F103VE)</figcaption></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="424" height="309" data-id="3375" src="https://depfields.com/wp-content/uploads/2020/06/stm32f103c8.jpg" alt="" class="wp-image-3375" srcset="https://depfields.com/wp-content/uploads/2020/06/stm32f103c8.jpg 424w, https://depfields.com/wp-content/uploads/2020/06/stm32f103c8-300x219.jpg 300w" sizes="(max-width: 424px) 100vw, 424px" /><figcaption>STM32F103C8 board</figcaption></figure>
<figcaption class="blocks-gallery-caption">市販の教材ボード</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>市販の教材ボードを選ぶにはマイコンがSTM32F１xxシリーズが搭載されていることと、SWDデバッガ用ピンPA13とPA14が使えるものが条件です。</p>
</div></div></div>



<h2 class="wp-block-heading">その他教材部品</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>教材ボードの入出力用部品を接続するのにははんだ付け不要の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ブレッドボード</span></strong>、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ジャンプワイヤ</span></strong>を使用すると便利です。ジャンプワイヤのコネクタはブレッドボードには基本的にオスーオスタイプを使用しますが、ほかにオスーメス、メスーメスタイプもあります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>入出力用パーツとしては押しボタンスイッチ、LED、抵抗器などがあればよいのですが、最近では電子工作入門キットとしてある程度まとめられたものが販売されています。抵抗器は330Ω程度のものと、1kΩ程度のものを使用します。詳細は「<strong><a href="https://depfields.com/applications/">アプリケーションと実践</a></strong>」章の各アプリで使用する配線図にあります。</p>
</div></div></div>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" width="537" height="346" data-id="3385" src="https://depfields.com/wp-content/uploads/2020/06/bread-board-1.jpg" alt="" class="wp-image-3385" srcset="https://depfields.com/wp-content/uploads/2020/06/bread-board-1.jpg 537w, https://depfields.com/wp-content/uploads/2020/06/bread-board-1-300x193.jpg 300w" sizes="(max-width: 537px) 100vw, 537px" /><figcaption>ブレッドボード</figcaption></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="510" height="378" data-id="3386" src="https://depfields.com/wp-content/uploads/2020/06/jump-wire-1.jpg" alt="" class="wp-image-3386" srcset="https://depfields.com/wp-content/uploads/2020/06/jump-wire-1.jpg 510w, https://depfields.com/wp-content/uploads/2020/06/jump-wire-1-300x222.jpg 300w" sizes="(max-width: 510px) 100vw, 510px" /><figcaption>ジャンプワイヤ</figcaption></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="780" height="447" data-id="3387" src="https://depfields.com/wp-content/uploads/2020/06/parts-1.jpg" alt="" class="wp-image-3387" srcset="https://depfields.com/wp-content/uploads/2020/06/parts-1.jpg 780w, https://depfields.com/wp-content/uploads/2020/06/parts-1-300x172.jpg 300w, https://depfields.com/wp-content/uploads/2020/06/parts-1-768x440.jpg 768w" sizes="(max-width: 780px) 100vw, 780px" /><figcaption>電子部品類</figcaption></figure>
<figcaption class="blocks-gallery-caption">教材部品</figcaption></figure>



<h2 class="wp-block-heading">電源</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>外付けの部品を使用しないでプログラムの動作を確認するだけであれば、プログラム転送用デバッガST-LINKから電源が供給されるので外付けの電源は不要です。通常はPCのUSBバスパワーからの電源で300mAまで供給でき、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ST-Linkデバイス側で保護回路によりUSB電流を管理</span></strong>しています。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>電源電流が300mAを超える負荷のかかる入出力の部品を装着する場合は<strong>外付け電源(DC5/7-12V)が必要</strong>です。<br>例えば、WiFiモジュールでの通信を行う場合などUSBポートからの電源では不足気味の場合は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>外部から</strong>５V電源を供給すると安定します。</span></strong></p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>Nucleoシリーズのボードへの電源供給は<strong>USBポートからのUSBバスパワー</strong>の他に、外部電源を供給することができます。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">５V外部電源の場合</span></strong>（最大500mA)は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">E5V</span></strong>(CN7-6)へ、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">７~12V外部電源</span></strong>（最大800mA)の場合は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">VIN</span></strong>(CN7-24またはCN6-8)へ接続します。外部電源を使用する場合はボード上の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ジャンパピンJP5をE5V側に設定すると有効</span></strong>となります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ただし、ジャンパピンJP5をE5V側に設定するとUSBの電流保護回路が切断され機能しない状態となり最悪PCの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">USBポートにダメージを与える恐れがあるため</span></strong>、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">電源の投入順序を守ることが重要</span></strong>です。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/08/external-power-supply.jpg" alt="" class="wp-image-6973" width="594" height="466" srcset="https://depfields.com/wp-content/uploads/2020/08/external-power-supply.jpg 594w, https://depfields.com/wp-content/uploads/2020/08/external-power-supply-300x235.jpg 300w" sizes="(max-width: 594px) 100vw, 594px" /><figcaption> 外部電源使用時の設定 </figcaption></figure>



<ol class="is-style-vk-numbered-circle-mark"><li><strong>JP5をEV5側に設定</strong>する</li><li>外部電源をE5V(5V)かVIN(7~12V)に接続し、電源を投入する</li><li><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">電源ランプLD3の点灯を確認</span></strong></li><li><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">USBを接続</span></strong>（<strong>USBポートに接続するのは最後</strong>にすることが重要）</li></ol>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div style="display: inline-block; background: #191970; padding: 5px 10px; color: #ffffff; border-radius: 5px 5px 0px 0px;"><strong>ポイン</strong>ト</div>
<div style="background: #ffffea; border-radius: 0px 10px 10px 10px; padding: 10px; border: 3px solid #191970;">
<p><strong>Nucleoボードへの供給電源は3通り：<br></strong><strong>・USBから供給（JP5: U5V側）ST-Linkデバイス側でUSB電流を管理</strong><br><strong>・５VをE5Vへ供給（JP5: E5V側）<br>・7~12VをVINへ供給（JP5: E5V側）</strong></p>
<p><strong>（重要）外部電源を使う場合は先に外部電源を投入してから最後にUSBケーブルを接続すること！</strong></p>
</div>
<p>&nbsp;</p>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/06/power-supply.jpg" alt="" class="wp-image-3396" width="450" height="293" srcset="https://depfields.com/wp-content/uploads/2020/06/power-supply.jpg 533w, https://depfields.com/wp-content/uploads/2020/06/power-supply-300x196.jpg 300w" sizes="(max-width: 450px) 100vw, 450px" /><figcaption>外付け電源</figcaption></figure>





<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<p></p>


<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/board/" target="_blank" rel="external noopener"><div class="lkc-card"><div class="lkc-info"><img class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=en.depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">Most Powerful Bible to Become an Embedded Engineer</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/pz-linkcard/cache/5038820c610d054a04b61c56808a533c405e2bae2172acf00fe44f0a0fd29669.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">STM32Nucleo board recommended for learning while electronics work | Most Powe...</div></div><div class="lkc-url">https://en.depfields.com/board/</div><div class="lkc-excerpt">Why use Nucleo boards with STM32 microcontrollers for teaching materials?The shortest way to learn MCUs is to actually operate a MCU and check its operation by yourself. If the operating environment is the same as the one explaine</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/board/">ARMで電子工作しながら学習するのにお勧めNucleo開発ボード</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>STM32純正IDEのSTM32CubeIDEがインストールできない場合</title>
		<link>https://depfields.com/troubleshoot/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=troubleshoot</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Thu, 28 May 2020 01:54:50 +0000</pubDate>
				<category><![CDATA[組み込みに使われるマイコン]]></category>
		<category><![CDATA[STM32CubeIDE]]></category>
		<guid isPermaLink="false">https://depfields.com/?page_id=1453</guid>

					<description><![CDATA[<p>実際に数台のPCやタブレット等にインストールしたところ、手順通りにすすめていけば通常は問題なくインストールできることが確認できましたが、インストールができないものにも遭遇してなんとか解決しましたので、それに関して例をあげ [&#8230;]</p>
<p>The post <a href="https://depfields.com/troubleshoot/">STM32純正IDEのSTM32CubeIDEがインストールできない場合</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img width="800" height="500" src="https://depfields.com/wp-content/uploads/2020/05/nayami.jpg" class="attachment-large size-large wp-post-image" alt="" decoding="async" srcset="https://depfields.com/wp-content/uploads/2020/05/nayami.jpg 800w, https://depfields.com/wp-content/uploads/2020/05/nayami-300x188.jpg 300w, https://depfields.com/wp-content/uploads/2020/05/nayami-768x480.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /></div>


<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"> 実際に数台のPCやタブレット等にインストールしたところ、手順通りにすすめていけば通常は問題なくインストールできることが確認できましたが、インストールができないものにも遭遇してなんとか解決しましたので、それに関して例をあげて解説します。 </p>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<p><span style="background-color: #003300; color: #ffffff;">&nbsp;現象 </span>:</p>
<p>Windows10タブレットにインストールしたところ、”<strong>NSIS error</strong>”が表示され先に進むことができません</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/nsis_error.jpg" alt="" class="wp-image-1449" width="253" height="177"/><figcaption>NSIS Errof</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ネットで情報を調べた所、NSISエラーの原因はインストールファイルが破損しているなどいろいろな情報が錯綜していますが今回の原因はWindows10の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ユーザーアカウント名（特にユーザーフォルダ名）が漢字表記の全角であったため</span></strong>でした。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/local_account.jpg" alt="" class="wp-image-1450" width="427" height="369" srcset="https://depfields.com/wp-content/uploads/2020/05/local_account.jpg 482w, https://depfields.com/wp-content/uploads/2020/05/local_account-300x260.jpg 300w" sizes="(max-width: 427px) 100vw, 427px" /><figcaption>ローカルアカウントユーザー名</figcaption></figure>





<div style="display: inline-block; background: #191970; padding: 5px 10px; color: #ffffff; border-radius: 5px 5px 0px 0px;"><strong>ポイント</strong></div>
<div style="background: #ffffea; border-radius: 0px 10px 10px 10px; padding: 10px; border: 3px solid #191970;">
<p>”NSIS error”が発生した場合は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ユーザーアカウント名が半角であるかどうかを確認</span></strong>し、全角であった場合は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">半角のものに変更</span></strong>してください。最終的に<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ユーザーアカウントのフォルダも半角である必要があります</span></strong>。ユーザー名が半角になると、正常にインストールできるようになりました。大抵はこれで問題は解決できるのではないでしょうか。</p>
</div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ユーザーアカウント名変更のやり方につきましてはインターネットで十分参考にできるものがあります。「<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">Winsows10 ユーザーアカウント名　変更</span></strong>」で検索するとたくさんでてきますので試してください。レジストリを操作するものもありますので<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">十分注意</span></strong>して行ってください。</p>
</div></div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/troubleshoot/" target="_blank" rel="external noopener"><div class="lkc-card"><div class="lkc-info"><img class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=en.depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">Most Powerful Bible to Become an Embedded Engineer</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/pz-linkcard/cache/b547a863d1eb792c7d095f88188b38ec87846c2ecb0ea4aea8a22a9889283f47.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">If you cannot install STM32CubeIDE of STM32 genuine IDE | Most Powerful Bible...</div></div><div class="lkc-url">https://en.depfields.com/troubleshoot/</div><div class="lkc-excerpt">However, there were some cases where STM32CubeIDE installation was not possible, and I managed to resolve them, so I will explain them with examples. Trouble content :After installing on a Windows 10 tablet, I get an &quot;NSIS erro</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/troubleshoot/">STM32純正IDEのSTM32CubeIDEがインストールできない場合</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ARMマイコンSTM32の学習におすすめの開発環境【初心者必見】</title>
		<link>https://depfields.com/environment/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=environment</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Wed, 27 May 2020 07:03:38 +0000</pubDate>
				<category><![CDATA[組み込みに使われるマイコン]]></category>
		<category><![CDATA[STM32CubeIDE]]></category>
		<category><![CDATA[STM32]]></category>
		<guid isPermaLink="false">https://depfields.com/?page_id=1402</guid>

					<description><![CDATA[<p>ARMマイコン(STM32)初心者が勉強するのに適した開発環境とは プログラムを作成するために何を準備すればいいのでしょうか。 作成したプログラムが動作するマイコンと周辺回路搭載のハードウェア（インターフェース）はどうす [&#8230;]</p>
<p>The post <a href="https://depfields.com/environment/">ARMマイコンSTM32の学習におすすめの開発環境【初心者必見】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img width="1024" height="683" src="https://depfields.com/wp-content/uploads/2020/05/arif-riyanto-1DRq1ZsE2N0-unsplash-1-1024x683.jpg" class="attachment-large size-large wp-post-image" alt="" decoding="async" srcset="https://depfields.com/wp-content/uploads/2020/05/arif-riyanto-1DRq1ZsE2N0-unsplash-1-1024x683.jpg 1024w, https://depfields.com/wp-content/uploads/2020/05/arif-riyanto-1DRq1ZsE2N0-unsplash-1-300x200.jpg 300w, https://depfields.com/wp-content/uploads/2020/05/arif-riyanto-1DRq1ZsE2N0-unsplash-1-768x512.jpg 768w, https://depfields.com/wp-content/uploads/2020/05/arif-riyanto-1DRq1ZsE2N0-unsplash-1-1536x1024.jpg 1536w, https://depfields.com/wp-content/uploads/2020/05/arif-riyanto-1DRq1ZsE2N0-unsplash-1-2048x1365.jpg 2048w, https://depfields.com/wp-content/uploads/2020/05/arif-riyanto-1DRq1ZsE2N0-unsplash-1-scaled.jpg 780w" sizes="(max-width: 1024px) 100vw, 1024px" /></div>






<h2 class="wp-block-heading">ARMマイコン(STM32)初心者が勉強するのに適した開発環境とは</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>マイコンの学習を始めようとしてマイコンを選択した後の課題が<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">マイコンの開発環境</span></strong>についてです。</p>
</div></div></div>



<ul class="environment1"><li><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">プログラムを作成するために何を準備</span></strong>すればいいのでしょうか。</li><li>作成したプログラムが動作する<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">マイコンと周辺回路搭載のハードウェア（インターフェース）</span></strong>はどうすればいいでしょうか。</li><li>作成したプログラムを<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">マイコンに転送するためのツール</span></strong>はどうすればいいのでしょうか。</li></ul>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>具体的には以上のことではないでしょうか。<br>筆者も組み込みを始めた当初、マイコンをSTM32にターゲットを絞り、具体的に開発するためのツールに関する情報を集めるには結構苦労しました。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>マイコンSTM32シリーズの開発環境は世界的に見ても人気のあるマイコンのため選択肢がないのではなくむしろ多すぎるため自分に最も適した開発環境がどれかを絞ることが難しかったからです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>今でも開発環境についての情報は便利なツールも含め更にふえたので入門者ではどれから始めたらよいのかますます困難でしょう。これまで筆者がたどってきた選択のポイントを顧みながら今では当面はこれを使っておけばよいといったものを紹介しましょう。</p>
</div></div></div>



<div style="display: inline-block; background: #191970; padding: 5px 10px; color: #ffffff; border-radius: 5px 5px 0px 0px;"><strong>ポイント</strong></div>
<div style="background: #ffffea; border-radius: 0px 10px 10px 10px; padding: 10px; border: 3px solid #191970;">
<p>開発環境の条件として<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">Windows PCで動作し、学習目的のため無料であること</span></strong>。<br>ただし、開発環境の無料版のものは数ありますがコード制限のあるものや機能制限のあるものは使えません。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/development-environment.jpg" alt="" class="wp-image-1419" width="524" height="229" srcset="https://depfields.com/wp-content/uploads/2020/05/development-environment.jpg 667w, https://depfields.com/wp-content/uploads/2020/05/development-environment-300x131.jpg 300w" sizes="(max-width: 524px) 100vw, 524px" /><figcaption>マイコン開発環境</figcaption></figure>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>マイコンの開発には通常、<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">総合開発環境</span></strong>（<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">IDE</span></strong>：Integrated Development Environment )とよばれるソフトウェア開発用のさまざまな機能がオールインワンとなったパッケージアプリケーションを使用します。総合開発環境にはプログラムを記述する<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">エディタ</span></strong>、C言語等プログラミングの<strong>コンパイラ</strong>、<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">アセンブラ</span></strong>、<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">リンカ</span></strong>および<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">デバッガ</span></strong>等の機能が備わっています。</p>
<p><strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">総合開発環境を使用すると、開発者はプログラミングに集中でき、転送、実行までかんたんな操作で実現</span></strong>できます。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>筆者は使用制限のない開発環境を構築したくフリーの総合開発環境のプラットフォームである<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">EclipseをベースにしたSTM32開発環境の構築</span></strong>もしてきました。自由度があり一度安定したものは自己満足感満載で使いやすくよかったのですが、マイコン仕様変更の際にはプロジェクト再構築やコンパイラの指定などが結構煩わしくとにかく手間ひまかかりました。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>手作りで開発環境を構築するのが趣味であればよいかもしれませんが仕事や学習などを優先させたい場合は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">貴重な時間を技能習得などに割くべきで開発環境を自分で構築するのは避けたほうがよいでしょう</span></strong>。</p>
</div></div></div>



<h2 class="wp-block-heading">ファームウェアライブラリ</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>STM32シリーズでは以前より<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">スタンダードペリフェラルライブラリ（SPL）</span></strong>と呼ばれるファームウェアライブラリが利用できます。このライブラリはよくできており、インターネット、書籍でも<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">解説記事は多いので使い方に関しての情報は十分取得できます</span></strong>。ハードウェア寄りで具体的なものだから<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">マイコンの学習にはこちらをすすめます</span></strong>。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>対して、最新の開発環境ツールではファームウェアライブラリは最新のマイコンにも対応できるように一新（<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">SPLに対してHAL、LLと呼ばれるライブラリ</span></strong>）されているため、今後新しいマイコンの新規開発ではこちらを使うべきなのですが、HALとLLファームウェアライブラリのまとまった解説情報はあまりない状況です。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>また、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">HALコードは抽象化されている</span></strong>ため<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">SPL</span></strong>で理解したあとで使用することをすすめます。今後はこちらが主流となるため、解説記事なども増えて使いやすくなるのでしょうが、入門者には敷居が低くなったようにも見えますが向いていないように感じられます。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">SPLでマイコンの基礎を十分に身に着けてから使用するとHAL、LLには容易に移行できます</span></strong>のでまずじっくり腰を据えて基礎固めに徹してください。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-right vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>電子工作で大人気の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">Arduino</span></strong>やARMマイコンのメーカーの垣根を超えた開発環境である<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">Mbed</span></strong>に共通した特徴は手軽にマイコン開発ができるように<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ハードウェアとのインターフェース部分を抽象化している</span></strong>ことです。STM32の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">コード自動生成機能</span></strong>と組み合わせた<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">HALライブラリ</span></strong>も同様な環境で、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">開発が容易になる反面、インターフェース部を隠蔽している</span></strong>ために、モノづくり、特にマイコンの基礎を勉强しようとする人が初めから使うにはどうかと思います。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-right vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ある程度の知識経験をもったエンジニア等が開発の試作などを容易で有利にすすめる場合や、中身はよくわからなくても動作させればよいホビー向けの電子工作、あるいは学生の開発現場などには向いていると思われます。仕事でマイコンを使う場合は基礎がなければつぶしが効きませんのでここではあえてライブラリに<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ハードウェアに近いSPLを使用することを奨励</span></strong>しています。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-right vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">SPL</span></strong>によりSTM32マイコンにある程度なれたら、STM32CubeIDEの本来の使い方（HALライブラリとコード自動生成）を使うことを始めるのがよいと思います。実際の開発では新しい環境で行うことがマイコンの種類に限りはないし、効率もよいです。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">SPLで基礎ができていればHAL等への移植は容易</span></strong>です。</p>
</div></div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>&nbsp;技術には<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">パラダイムシフト</span></strong>により真空管からドランジスタ、LSI、マイコンに進化して行く過程で例えば真空管の知識などはエンジニアにとって現在ではあえて必要のあるものではありません。マイコン開発を行っていく上では、例えば一昔まえではアセンブリ言語と呼ばれるマイコンに近い低水準言語でプログラムを作成していましたが、今ではアセンブリを使用しなくてもより開発しやすいC言語などで開発ができてしまいます。また、IoTを実現するうえで使う通信のプロトコル・スタックの中身などはあえて知らなくても完成されたものを利用できればそれでよい場合もあります。ただ、すべてがそうではなくて<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">開発するにあたって押さえるべき基礎</span></strong>、例えば古くからある技術でも重要なトランジスタなど<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">初心者のうちからしっかり学習しておかならないポイントは自分でしっかり理解</span></strong>しておいてはじめて<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">使えるエンジニア</span></strong>として活躍できるようになるのです（ホビー目的の電子工作ではそこまでは求められないかもしれませんが）。現代では数多くある開発プログラム言語のなかでも比較的古典的なプログラミング言語であるC言語が開発ではまだ現役であることがそれを物語っています。<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">SPLをあえて採用</span></strong>しているのはそういった意味も込められています。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<h2 class="wp-block-heading">STM32マイコンの開発ツール</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>実際のところツールになにを選べばよいかの話に戻りますが、STM32専用開発環境のIDE（総合開発環境）がよくSTマイクロ社公式のIDEであるTrueSTUDIOが最強です（正確にいえば最強でした）。Eclipseベースでとても使いやすい環境です。機能制限がなく、コンパイラからデバッガまですべてオールインワンでプログラム作成からプログラム転送まで簡単に実現できる開発環境です。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>このIDEとの組み合わせで視覚的に周辺機能などの機能を選択するとコードを自動生成してくれるアプリであるSTM32CubeMXもありますが<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">学習段階では自動生成は使う必要はない</span></strong>でしょう。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>この原稿を作成している現在は、IDEのTrueSTUDIOと自動生成ツールSTM32CubeMXを統合した<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">STM32CubeIDE</span></strong>が<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">STマイクロ純正のIDEとして主流</span></strong>となっています。同時にTrueSTUDIOは新規開発には非奨励対象となりました。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-right vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>このような状況下ですので将来性を考慮するとこの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">STM32CubeIDEを使用して慣れていくのがベストな選択</span></strong>だと考えます。ただ、スタンダードペリフェラルライブラリ（SPL）には対応していませんので<strong>、<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">手動で設定</span></strong>したものを使用することにします。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-right vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>このように開発環境は技術の進化に合わせて更新したり、フルモデルチェンジしたりするものです。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">最新のマイコンを採用して新規に開発を開始するにはやはり、最新の開発環境は必要</span></strong>で対応できるスキルを身につけることも重要でしょう。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-right vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>このサイトでは組み込み技術入門者に32ビットマイコンARMコア搭載のSTM32を教材として使用してマイコンをつかいこなすための基本を習得してもらうものが趣旨ですので、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">総合開発環境STM32CubeIDEに対象マイコンのファームウェアライブラリSPLを組み込んだもの</span></strong>を使用することにしています。</p>
</div></div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>持論ですが<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">開発環境はできるだけシンプルなものが好ましい</span></strong>と考えています。その点、STM32CubeIDEは色々な機能が盛り込まれてはいるのですが、<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">使うものを限定するとシンプル</span></strong>です。インストールをするとコンパイラに必要な専用のツールチェインをはじめ、必要なツールすべてが自動的に組み込まれます。<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">手動で追加するのはスタンダードペリフェラルライブラリ(SPL)とFreeRTOSだけ</span></strong>です。アプリケーションによっては必要に応じてファームウェアを追加すればよいわけで、基本的なものはオールインワンの開発環境です。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>STM32CubeIDEはコード自動生成などの最新のツールも含まれています。ただし、生成されるコードはHALライブラリですのでファームウェアライブラリSPLが使用できる開発環境でSTM32の基礎技能を一通り習得した段階でこのツールを使うと大いに便利でしょう。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>いきなりすべての機能を使いこなすのは困難でツールに振り回されます。最新ツールを使うのはインターネットで使いこなすための十分な情報がでるようになってからでもよいでしょう。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">楽しみはあとにとっておいてください</span></strong>。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>マイコンへのプログラム転送書き込みでは数種類の方法があるなかで<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">SWD方式のST-Link/V2</span></strong>を使用します。詳細は「開発環境構築」および「実装」で解説します。当サイトで教材ボードとして使用する<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">NUCLEO-F103RBにはST-Link/V2が含まれています</span></strong>。</p>
</div></div></div>





<h2 class="wp-block-heading">STM32CubeIDEの構築</h2>



<p>ターゲットマイコン：ARM Cortex-M3 STM32F103RB(NUCLEO-F103RB)<br>デバッガ：ST-Link/V2 SWD</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/STM32CubeIDE.jpg" alt="" class="wp-image-5011" width="544" height="141"/><figcaption>STM32CubeIDEの開発環境</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ここでは、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">このサイトの教材(Nucleo-STM32F103RB</span>)</strong>を使用するための開発環境として、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">SPLおよびFreeRTOSを組み込んだ仕様を構築</span></strong>します。STM32CubeIDEの開発環境仕様として最も軽快なものではないでしょうか。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>初めの手間はかかりますが、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">一度プロジェクトを構築して無事動作すればアプリごとに転用できます</span></strong>。<br>このサイトでは使用しませんが、STM32CubeIDEにはコード自動生成機能もありますので、ある程度慣れてきてから挑戦してみてはいかがでしょうか。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>STM32マイコンの開発環境として使用するSTM32CubeIDEのダウンロードからインストールまでに関しましてはインターネットで十分な情報が得られますので詳細は割愛します。インストール半ばで<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ST-Link関連のコンポーネントチェック選択箇所がありますのでチェックを入れておいてください</span></strong>。SEGGER-Jlinkドライバは使用しないのでチェックを外しておいてもよいです。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/step5.jpg" alt="" class="wp-image-1444" width="432" height="336" srcset="https://depfields.com/wp-content/uploads/2020/05/step5.jpg 496w, https://depfields.com/wp-content/uploads/2020/05/step5-300x233.jpg 300w" sizes="(max-width: 432px) 100vw, 432px" /><figcaption>ST-LINKのチェック</figcaption></figure>



<p class="has-medium-font-size"><a href="https://depfields.com/troubleshoot/" target="_blank" aria-label=" (opens in a new tab)" rel="noreferrer noopener">インストールができない場合の解決手順はこちら</a></p>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>



<h2 class="wp-block-heading">ファームウェアライブラリSPLを組み込んだプロジェクトの作成</h2>



<div class='w3eden'><!-- WPDM Link Template: Default Template -->

<div class="link-template-default card mb-2">
    <div class="card-body">
        <div class="media">
            <div class="mr-3 img-48"><img class="wpdm_icon" alt="アイコン"   src="https://depfields.com/wp-content/plugins/download-manager/assets/file-type-icons/box_download.png" /></div>
            <div class="media-body">
                <h3 class="package-title"><a href='https://depfields.com/download/spllibrary-stm32cortexm3/'>ファームウェアライブラリSPL(STM32 Cortex-M3用）</a></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 356.56 KB</div>
            </div>
            <div class="ml-3">
                <a href='#unlock' class='wpdm-download-link wpdm-download-locked btn btn-primary ' data-package='1683'>ダウンロード</a>
            </div>
        </div>
    </div>
</div>

</div>



<script>
( function() {
	let f =(v)=>{
		let l = location.href.split('#')[0];
		let e = document.getElementsByClassName(v);
		let ec = e.length;
		for(let i=0;i<ec;i++){
			let h = e[i].href;
			h= h.indexOf(l) === 0 ?  h.replace(l,'') : h;
 			if(h ==="#"){e[i].href="javascript:void(0)";}
  		}
	}
	window.addEventListener('DOMContentLoaded', function() {
 		f('wpdm-download-link');
	});
}());
</script>



<div class='w3eden'><!-- WPDM Link Template: Default Template -->

<div class="link-template-default card mb-2">
    <div class="card-body">
        <div class="media">
            <div class="mr-3 img-48"><img class="wpdm_icon" alt="アイコン"   src="https://depfields.com/wp-content/plugins/download-manager/assets/file-type-icons/box_download.png" /></div>
            <div class="media-body">
                <h3 class="package-title"><a href='https://depfields.com/download/freertos/'>FreeRTOS</a></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 81.20 KB</div>
            </div>
            <div class="ml-3">
                <a href='#unlock' class='wpdm-download-link wpdm-download-locked btn btn-primary ' data-package='1684'>ダウンロード</a>
            </div>
        </div>
    </div>
</div>

</div>





<ol class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><li>インストールしたSTM32CubeIDEアイコンをクリックして起動</li></ol>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/step8.jpg" alt="" class="wp-image-1462" width="58" height="75"/></figure>



<ol start="2" class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><li>作業用フォルダワークスペースを指定します。<br>慣れるまではデフォルトでいいと思います。</li></ol>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/step9.jpg" alt="" class="wp-image-1464" width="595" height="259" srcset="https://depfields.com/wp-content/uploads/2020/05/step9.jpg 635w, https://depfields.com/wp-content/uploads/2020/05/step9-300x130.jpg 300w" sizes="(max-width: 595px) 100vw, 595px" /></figure>



<ol start="3" class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><li>この画面がでてきたら新規のプロジェクトを作成するので左のアイコンを選択<br>あるいはメニューバー「File」-「New」-「STM32 Project」　</li></ol>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/step11.jpg" alt="" class="wp-image-1465" width="569" height="525" srcset="https://depfields.com/wp-content/uploads/2020/05/step11.jpg 718w, https://depfields.com/wp-content/uploads/2020/05/step11-300x277.jpg 300w" sizes="(max-width: 569px) 100vw, 569px" /></figure>



<ol start="4" class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><li>使用する対象のマイコン(MCU/MPU selectorタブ）を選択。<br>この例では<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">STM32F103RB</span></strong>(LQFP64パッケージ)を選択</li></ol>



<figure class="wp-block-image size-large"><img decoding="async" width="780" height="545" src="https://depfields.com/wp-content/uploads/2020/05/step1a.jpg" alt="" class="wp-image-5000" srcset="https://depfields.com/wp-content/uploads/2020/05/step1a.jpg 780w, https://depfields.com/wp-content/uploads/2020/05/step1a-300x210.jpg 300w, https://depfields.com/wp-content/uploads/2020/05/step1a-768x537.jpg 768w" sizes="(max-width: 780px) 100vw, 780px" /></figure>



<ol start="5" class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><li>プロジェクト名は任意のものをつけます(ここでは<strong>NUCLEO-F103RB</strong>)。プロジェクトにはファームウェアライブラリSPLをプラグインとして手動で追加する方式でコード自動生成は使わないのでTargeted Project Typeには<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">Empty</span></strong>を指定して「Finish」をクリック。</li></ol>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/step2a.jpg" alt="" class="wp-image-5003" width="455" height="535"/></figure>



<ol start="5" class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><li>新規プロジェクトフォルダ（この場合はNUCLEO-F103RB）が作成されました。あらかじめダウンロードしておいた<strong>ファームウェアライブラリSPL</strong>が含まれた<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">Libraries</span></strong>フォルダをプロジェクト内にコピーしておきます。<strong>FreeRTOS（OS)</strong>を使用することも前提としているので<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">Source</span></strong>フォルダも同様にコピーしておきます（エクスプローラ等ファイルマネーファを使って）。</li></ol>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/step3a.jpg" alt="" class="wp-image-5004" width="567" height="346" srcset="https://depfields.com/wp-content/uploads/2020/05/step3a.jpg 532w, https://depfields.com/wp-content/uploads/2020/05/step3a-300x184.jpg 300w" sizes="(max-width: 567px) 100vw, 567px" /></figure>



<ol start="6" class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><li>アプリケーションプログラムや関連ヘッダファイル類は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">Src</span></strong>フォルダに入れます。</li></ol>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/step3a_2.jpg" alt="" class="wp-image-5005" width="572" height="371"/></figure>



<ol start="7" class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><li>この段階でメニューバー「Project」-「Build All」で一度ビルドを実行します。<br>デフォルトのままですので、エラーもなく実行ファイルが作成され、<strong>追加したフォルダ等がプロジェクトに反映されている</strong>はずです。</li></ol>



<ol start="8" class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><li>これで準備完了です。新規のプロジェクトは標準仕様でこのままでは追加したプラグイン（<strong>SPL</strong>と<strong>FreeRTOS</strong>）は<strong>まだ使用できません</strong>ので、追加フォルダへの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">インクルードパス</span></strong>を設定したり、SPLを使えるための<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">シンボルを指定</span></strong>したりします。</li></ol>



<h2 class="wp-block-heading">インクルードパス</h2>



<ol start="1" class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><li>Project　Explorerで編集したいプロジェクトを指定してからメニューバー 「Project」–「Propaties」の順にクリックしてプロパティ画面を開きます。ここで左ペインの「<strong>C/C++ General</strong>」を開き、「<strong>Paths and Symbols</strong>」タブを選ぶとインクルードパスの設定画面になります。</li></ol>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/step4.jpg" alt="" class="wp-image-1478" width="578" height="392" srcset="https://depfields.com/wp-content/uploads/2020/05/step4.jpg 780w, https://depfields.com/wp-content/uploads/2020/05/step4-300x204.jpg 300w, https://depfields.com/wp-content/uploads/2020/05/step4-768x521.jpg 768w" sizes="(max-width: 578px) 100vw, 578px" /></figure>



<ol start="2" class="vk_block-margin-sm--margin-bottom"><li>右の「<strong>Add</strong>」ボタンをクリックするとパスを指定するダイアログが現れます。</li></ol>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/step4_1.jpg" alt="" class="wp-image-1480" width="578" height="400" srcset="https://depfields.com/wp-content/uploads/2020/05/step4_1.jpg 780w, https://depfields.com/wp-content/uploads/2020/05/step4_1-300x208.jpg 300w, https://depfields.com/wp-content/uploads/2020/05/step4_1-768x533.jpg 768w" sizes="(max-width: 578px) 100vw, 578px" /></figure>



<ol start="3" class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><li>すべてチェックを入れて「<strong>Workspace</strong>」をクリックしてからプロジェクト内のパスを通していきます。以下のようにパスが通れば完了です。</li></ol>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/step4a_2.jpg" alt="" class="wp-image-5019" width="796" height="580" srcset="https://depfields.com/wp-content/uploads/2020/05/step4a_2.jpg 796w, https://depfields.com/wp-content/uploads/2020/05/step4a_2-300x219.jpg 300w, https://depfields.com/wp-content/uploads/2020/05/step4a_2-768x560.jpg 768w" sizes="(max-width: 796px) 100vw, 796px" /></figure>



<ol start="4" class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><li>プロジェクトフォルダは　以下の通りです。</li></ol>



<figure class="wp-block-image size-large"><img decoding="async" width="705" height="542" src="https://depfields.com/wp-content/uploads/2020/05/step5a_1.jpg" alt="" class="wp-image-9529" srcset="https://depfields.com/wp-content/uploads/2020/05/step5a_1.jpg 705w, https://depfields.com/wp-content/uploads/2020/05/step5a_1-300x231.jpg 300w" sizes="(max-width: 705px) 100vw, 705px" /></figure>



<ol start="5" class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><li>インクルードパスを設定したあとは「<strong>Source Location</strong>」タブで追加したプラグインフォルダの場所を指定しておきます。これを忘れると、ビルド時にエラーとなります。</li></ol>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/step6a.jpg" alt="" class="wp-image-5007" width="816" height="540"/></figure>



<ol start="6" class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><li>最後に、ペリフェラルライブラリSPL内でMPUを指定したりする<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">シンボル（Symbol）を登録</span></strong>します。下図のとおり、シンボルを追加してください。</li></ol>



<figure class="wp-block-image size-large"><img decoding="async" width="780" height="520" src="https://depfields.com/wp-content/uploads/2020/05/step7a.jpg" alt="" class="wp-image-4994" srcset="https://depfields.com/wp-content/uploads/2020/05/step7a.jpg 780w, https://depfields.com/wp-content/uploads/2020/05/step7a-300x200.jpg 300w, https://depfields.com/wp-content/uploads/2020/05/step7a-768x512.jpg 768w" sizes="(max-width: 780px) 100vw, 780px" /></figure>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">シンボルはそのまま"Name"のところに追加してください。<br>"Value"は空白のままにしておいてください。</p>



<ul class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><li><strong>STM32F10X_MD</strong></li><li><strong>USE_STDPERIPH_DRIVER</strong></li></ul>



<figure class="wp-block-image size-large"><img decoding="async" width="634" height="352" src="https://depfields.com/wp-content/uploads/2020/05/step7a_1.jpg" alt="" class="wp-image-4995" srcset="https://depfields.com/wp-content/uploads/2020/05/step7a_1.jpg 634w, https://depfields.com/wp-content/uploads/2020/05/step7a_1-300x167.jpg 300w" sizes="(max-width: 634px) 100vw, 634px" /></figure>



<ol start="7" class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><li>以上でSTM32CubeIDEの開発環境設定は完了です。</li></ol>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p style="text-align: left;">当サイトで使用している教材ボードに搭載しているマイコンはSTMF1シリーズの<strong>STM32F103RB</strong>でMedium Desityバリューライン（MD)に属するため、<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">シンボル</span></strong>に<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">”STM32F10X_MD”</span></strong>を指定しています。他の市販ボードに搭載しているマイコンで<strong>STM32F103RB</strong>以外では<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">シンボルをマイコンの種類に相当するものに指定する必要</span></strong>があります。シンボルはペリフェラルライブラリのsystem_stm32f10x.cおよびstm32f10x.h内で定義され各マイコンの機能に合わせるために使用するものです。例えば、STM32F100RBを搭載したSTM32VLDISCOVERYではシンボル<strong>”<span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">STM32F10X_MD_VL</span>”</strong>か<strong>”<span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">STM32F10X_MD</span>”</strong>を、High-DensityパフォーマンスラインのSTM32F103VEを搭載したボードでは<strong>”<span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">STM32F10X_HD</span>”</strong>を指定します。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<h2 class="wp-block-heading">コンパイル・リンク・ビルド</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>Cコードでのソース・ファイルが完成したあとは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ビルド(build)を行い、コンパイル・リンクを経て実行ファイルを作成</span></strong>します。<br>メニュー「Project」-「Build Project」の順にクリックすると実行ファイルまで作成してくれます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">コンパイルとはCコードで記述されたソース・ファイルをオブジェクトコードのファイルに変換すること</span></strong>です。変換されたファイルの拡張子は.oで、プロジェクト内の「Debug」フォルダ内に格納されます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>エラーもなくビルドが無事成功するとプロジェクトツリー内で「<strong>Binaries</strong>」フォルダが作成されて拡張子elfのファイルがあるはずです。同時に拡張子binのバイナリ実行ファイルも作成されています。ここまでくれば後はデバッガST-Linkでマイコンに実行ファイルを転送するだけです。</p>
</div></div></div>



<figure class="wp-block-image size-large"><img decoding="async" width="780" height="659" src="https://depfields.com/wp-content/uploads/2020/05/step8a.jpg" alt="" class="wp-image-5008" srcset="https://depfields.com/wp-content/uploads/2020/05/step8a.jpg 780w, https://depfields.com/wp-content/uploads/2020/05/step8a-300x253.jpg 300w, https://depfields.com/wp-content/uploads/2020/05/step8a-768x649.jpg 768w" sizes="(max-width: 780px) 100vw, 780px" /></figure>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>



<h3 class="wp-block-heading">コンパイルエラー</h3>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">初めてSTM32CubeIDEをインストールした場合は、このコンパイルの特性でint8_tとcharが異なりコンパイル時にwarningが発生することがあります。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><strong>Warning : pointer targets in passing argument 1 of 'xxxx' differ in signedness</strong></p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">この警告は変数の符号が違うとコンパイラが判断するからです。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">これはARM仕様のCMSISがISO C99に準拠した変数宣言の定義としており、通常のchar、intに対して変数のビット数まで明示的に宣言したもの（例えば、8ビット符号付きはint8_t、符号なしはuint8_t)であるからです。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">int8_tの定義をsigned charでなくcharにすればよいのですが、これはツールチェイン（コンパイラ）の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">「machineフォルダ」</span></strong>内の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">_default_types.h</span></strong>内のものが最優先であるらしく、ここで定義している __INT8_TYPE__ がデフォルトでsigned charであることが問題の原因であることが判明しました。これを強制的にcharにするため、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">#define __INT8_TYPE__&nbsp; char</span></strong>を<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">_default_types.h</span></strong>内に追加します。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="564" height="356" src="https://depfields.com/wp-content/uploads/2020/07/step8_2-2.jpg" alt="" class="wp-image-4527" srcset="https://depfields.com/wp-content/uploads/2020/07/step8_2-2.jpg 564w, https://depfields.com/wp-content/uploads/2020/07/step8_2-2-300x189.jpg 300w" sizes="(max-width: 564px) 100vw, 564px" /></figure>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">ツールチェイン（コンパイラ）の<strong>「machineフォルダ」</strong>内の<strong>_default_types.h</strong>の場所<br>（デフォルトの場合）</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">ST →STM32CubeIDE_xxx → STM32CubeIDE → Plugins→com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610→ tools → arm-non-eabi → include → machine →_default_types.h</p>



<figure class="wp-block-image size-large"><img decoding="async" width="682" height="496" src="https://depfields.com/wp-content/uploads/2020/07/step8_1.jpg" alt="" class="wp-image-4528" srcset="https://depfields.com/wp-content/uploads/2020/07/step8_1.jpg 682w, https://depfields.com/wp-content/uploads/2020/07/step8_1-300x218.jpg 300w" sizes="(max-width: 682px) 100vw, 682px" /></figure>



<div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow"><div class="wp-block-group__inner-container"></div></div>



<h2 class="wp-block-heading">転送</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ビルドで作成された実行ファイル</span></strong>をマイコンのフラッシュメモリに転送（書き込み）して初めてマイコンが機能するようになります。転送用ツールは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ST-LINKデバイス</span></strong>を使用します。</p>
</div></div></div>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-7 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" width="331" height="318" data-id="1488" src="https://depfields.com/wp-content/uploads/2020/05/stlink_1.jpg" alt="" class="wp-image-1488" srcset="https://depfields.com/wp-content/uploads/2020/05/stlink_1.jpg 331w, https://depfields.com/wp-content/uploads/2020/05/stlink_1-300x288.jpg 300w" sizes="(max-width: 331px) 100vw, 331px" /><figcaption>ST-LINKデバイス1</figcaption></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="294" height="349" data-id="1490" src="https://depfields.com/wp-content/uploads/2020/05/stlink_2.jpg" alt="" class="wp-image-1490" srcset="https://depfields.com/wp-content/uploads/2020/05/stlink_2.jpg 294w, https://depfields.com/wp-content/uploads/2020/05/stlink_2-253x300.jpg 253w" sizes="(max-width: 294px) 100vw, 294px" /><figcaption>ST-LINKデバイス2</figcaption></figure>
</figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>マイコン側とデータのやり取りに<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ARM通信規格のSWD方式を採用</span></strong>しています。SWDとは2本の信号（SWCLKとSWDIO）でデータを書き込む方式です。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>転送用ツールの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ST-LINK(V2)</span></strong>はPC側にはUSB、マイコン側にはSWDの信号線2本およびGNDの合計3本を接続すれば構成は完成です。ST-LINKはV1ではSTM32CubeIDEで機能しないため<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">V2以上が必要</span></strong>です。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/program-transfer.jpg" alt="program transfer" class="wp-image-4981" width="478" height="114"/><figcaption>転送構成図</figcaption></figure>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">メニューバー「<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">Run</span></strong>」 - 「<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">Debug</span></strong>」の順にクリックすると転送が開始されます。転送が始まるとST-LINKデバイスの赤LEDが点滅はじめます。無事終了すると点灯か消灯に状態が変わります。</p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>以上で、STM32マイコンの開発環境構築からプログラム転送まで解説してきました。あとは実際に動作させてみて順調に転送書き込みが正常に完了するまである程度の試行錯誤を繰り返しながら経験してみてください。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>プログラムも含めて、初回で転送まで成功することはないものですが、<strong>なんらかの不具合には必ず原因</strong>がありますので、<strong>自力で原因を探しあてて解決できるようになるのもスキルの一つ</strong>です。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>STM32CubeIDEの具体的な操作方法（コンパイラ・ビルドおよび転送方法）に関しましては、ここでは詳細は解説しませんが、これに関しましてはインターネットで豊富な情報がありますのでそちらを参考にしてください。STM32CubeIDE はeclipseベースですのでeclipse関連の情報が役に立つのではと思います。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>組み込み開発環境でよく使われる用語について解説しておきます。知っておかなければならない用語でもないのですが、よく耳にする言葉なのでいちど理解しておいてください。</p>
</div></div></div>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>当サイトで使用する<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">NUCLEO-F103RB</span></strong>やSTM32F100RBを搭載した<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">STM32VLDISCOVERY</span></strong>ボード等STマイクロエレクトロニクス社販売の評価ボードには<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">デバッガのST-Linkが付属</span></strong>していますので外付けでST-Linkを準備しなくてもUSBケーブルがあれば転送までできてしまいます。ST-Linkデバイスは他社のSTM32搭載ボードや新規に設計した自作マイコンボードに必要となります。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<h2 class="wp-block-heading">セルフ環境とクロス環境</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>セルフ環境</strong></span><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">とは開発環境と実行環境が同じ</span></strong>もので例えばPCでVisual C#などをつかってアプリケーション開発を行う環境です。対して、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">クロス環境は開発環境と実行環境が別</span></strong>でそれ自体に開発環境を持たない組み込み機器で動かすアプリケーションを別のパソコン上で開発する環境のことです。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">組み込み機器では</span></strong>さまざまなCPUやOSが使用されるため<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">クロス環境で開発</span></strong>が行われます。</p>
</div></div></div>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>プログラムを作成するPCを<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">ホストコンピュータ</span></strong>（開発コンピュータ）といいます。 組み込み機器は<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">ターゲットコンピュータ</span></strong>といいます。ターゲット用にプログラムをコンパイルするものを<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">クロスコンパイラ/アセンブラ/リンカ</span></strong>といい、ライブラリは<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">クロスライブラリ</span></strong>、プログラムのパグ取りは<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">クロスデバッガ</span></strong>といいます。 開発環境を構築する際の用語として上記のものをよく耳にすると思われます。</p>
</div>
<p> </p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"> 「<strong><a href="https://depfields.com/nucleo/" target="_blank" aria-label=" (opens in a new tab)" rel="noreferrer noopener">マイコン学習の初心者にArduinoでなくSTM32Nucleoをすすめるわけ</a></strong>」に<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">当サイトで採用している開発環境</span></strong>を使った学習方法についての<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">優位なポイントを解説</span></strong>しています。 </p>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">当サイトで紹介しているマイコン開発環境用ツールはフリーで提供しております。<br>ダウンロードするためにはお問い合わせフォームで登録してパスワードを取得してください。</p>



<div class="wp-block-button"><a class="wp-block-button__link has-white-color has-vivid-red-background-color has-text-color has-background" href="https://depfields.com/contact/"><strong>お問い合わせはこちら</strong></a></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>


<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/environment/" target="_blank" rel="external noopener"><div class="lkc-card"><div class="lkc-info"><img class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=en.depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">Most Powerful Bible to Become an Embedded Engineer</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/pz-linkcard/cache/ce143bc5b5a4b11e9b6f7eb5a9a5be756025bec4a838af3379920e528283941c.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">Recommended development environment for learning ARM STM32 [must see for begi...</div></div><div class="lkc-url">https://en.depfields.com/environment/</div><div class="lkc-excerpt">What is a suitable integrated development environment for ARM MCU (STM32) beginners to study?After choosing MCU to start learning about MCUs, the next challenge is about MCU development environment.What do I need to prepare</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/environment/">ARMマイコンSTM32の学習におすすめの開発環境【初心者必見】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>組み込みエンジニアのためのマイコン周辺の基礎知識【初心者必見】</title>
		<link>https://depfields.com/background/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=background</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Sun, 24 May 2020 13:58:52 +0000</pubDate>
				<category><![CDATA[組み込みに使われるマイコン]]></category>
		<category><![CDATA[基礎知識]]></category>
		<guid isPermaLink="false">https://depfields.com/?page_id=1201</guid>

					<description><![CDATA[<p>マイコン周辺のハードとソフト マイコン自体はどんな構成でどのような機能をもったものでしょうか。 マイコン（マイクロコントローラ）はコンピュータの中でも電気機器を制御するのに特化したコンピュータで頭脳の役割であるCPUのほ [&#8230;]</p>
<p>The post <a href="https://depfields.com/background/">組み込みエンジニアのためのマイコン周辺の基礎知識【初心者必見】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img width="693" height="529" src="https://depfields.com/wp-content/uploads/2020/05/stm32_board-1.jpg" class="attachment-large size-large wp-post-image" alt="" decoding="async" srcset="https://depfields.com/wp-content/uploads/2020/05/stm32_board-1.jpg 693w, https://depfields.com/wp-content/uploads/2020/05/stm32_board-1-300x229.jpg 300w" sizes="(max-width: 693px) 100vw, 693px" /></div>




<h2 class="wp-block-heading">マイコン周辺のハードとソフト</h2>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">マイコン自体はどんな構成でどのような機能をもったものでしょうか。</p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>コンピュータが存在する以前の世界は身の回りはハードウェアばかりでした。電気製品においてもテレビなどは機能をすべて電気・電子回路のハードウェアで構成していました。自動車においてもそうです。すべて機械部品の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ハードウェア</span></strong>で構成されていました。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>コンピュータが登場して、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ソフトウェア</span></strong>という概念ができました。コンピュータは自然界のアナログ的（物理的）なもの、例えば光の強さや音の大きさなどをセンサーなどの入力機器を介して取り込み、内部でデジタルに変換してからコンピュータプログラムによりさまざまな機能を付加して求められている形態で出力するものです。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/hard-and-soft.jpg" alt="" class="wp-image-1205" width="333" height="219" srcset="https://depfields.com/wp-content/uploads/2020/05/hard-and-soft.jpg 333w, https://depfields.com/wp-content/uploads/2020/05/hard-and-soft-300x197.jpg 300w" sizes="(max-width: 333px) 100vw, 333px" /><figcaption class="wp-element-caption"><strong>ハードウェアとソフトウェア</strong></figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>この<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">コンピュータプログラムがソフトウェアと呼ばれているもの</span></strong>です。ハードウェアのような形はありません。<br>そのため、コンピュータのサイズが小さくなればなるほど、同じ機能をもったハードウェアだけで構成されていたものより小型になり機械的な部品点数が減るため、故障も少なくなり量産しやすく価格も下がるのです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer"><div class="vk_spacer-display-pc" style="height:20px"></div><div class="vk_spacer-display-tablet" style="height:10px"></div><div class="vk_spacer-display-mobile" style="height:5px"></div></div>



<div class="wp-block-media-text is-stacked-on-mobile is-vertically-aligned-top" style="grid-template-columns:35% auto"><figure class="wp-block-media-text__media"><img decoding="async" width="408" height="277" src="https://depfields.com/wp-content/uploads/2020/05/マイコン3.jpg" alt="" class="wp-image-1208 size-full" srcset="https://depfields.com/wp-content/uploads/2020/05/マイコン3.jpg 408w, https://depfields.com/wp-content/uploads/2020/05/マイコン3-300x204.jpg 300w" sizes="(max-width: 408px) 100vw, 408px" /></figure><div class="wp-block-media-text__content">
<p class="has-normal-font-size"><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">マイコン（マイクロコントローラ）はコンピュータの中でも電気機器を制御するのに特化したコンピュータ</span></strong>で頭脳の役割である<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">CPUのほか、アナログ、デジタル的な信号の入出力、タイマ・カウンタ、シリアル通信機能などが内蔵されており</span></strong>、開発者は実際の入出力の信号との間に必要最低限のインターフェース回路を付加するだけで簡単に高機能な電気機器を開発できるようになりました。</p>
</div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none vk_block-margin-sm--margin-top"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>機能はソフトウェアと呼ばれるプログラムにより作成されます。プログラマーの腕のみせどころです。<br>ゆえに<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">マイコンのプログラマーはプログラム言語の知識のみならず、マイコンの機能、周辺回路（インターフェース）などハードウェアの知識・経験が必要</span></strong>となってきます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ハードウェアの知識も一昔前とは違い、インターネットを活用するとかなりの情報が得られます。この知識を活かして<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">実際にハードウェアなる回路を自分で組むことは理解を深めることへの近道</span></strong>です。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>組み込み技能はソフトウェア（プログラミング）だけを扱って実物（ハードウェア）を知らなければまったく身につきませんし、役にもたたないでしょう。実際にプログラミングしながら、入力や出力を計測しながら完成度を高めていくことが組み込みの醍醐味、魅力なのです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>



<h2 class="wp-block-heading">マイコンの基本構造</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>マイコンはCPU, ROM, RAM, I/Oポート その他各種機能で構成されています。</p>
</div></div></div>



<p><span style="background-color: #003300; color: #ffffff;">　　CPU　　<span style="background-color: #ffffff; color: #000000;">：<br></span></span><span style="color: #ffffff;"><span style="color: #000000;"><strong>マイコンの頭脳</strong></span></span><span style="background-color: #003300; color: #ffffff;"><span style="background-color: #ffffff; color: #000000;">にあたる部分でプログラムの命令を実行して演算したり機能を実現したりします。</span></span></p>



<p><span style="background-color: #003300; color: #ffffff;">　　ROM　　<span style="background-color: #ffffff; color: #000000;">：<br></span></span>記憶部分であるメモリのうち、<strong>読み出し専用</strong>（<strong>R</strong>ead <strong>O</strong>nly <strong>M</strong>emory）で<strong>プログラム</strong>や<strong>実行中に変更する必要のない定数</strong>などのデータを格納するところです。電源を切ってもデータは消えず、マイコンが起動してからプログラムを読み出して実行します。</p>



<p><span style="background-color: #003300; color: #ffffff;">　　RAM　　<span style="background-color: #ffffff; color: #000000;">：<br></span></span>記憶部分であるメモリのうち、<strong>読み書き可能</strong>（<strong>R</strong>andam <strong>A</strong>ccessy <strong>M</strong>emory）でデータ（変数）を<strong>一時的に保管する場所</strong>。電源を切ったら内容も消えてしまいます。</p>



<p><span style="background-color: #003300; color: #ffffff;">　IOポート　<span style="background-color: #ffffff; color: #000000;">：<br></span></span>マイコンと外部部品との信号を読み取る機能を行う部分（端子）です。<strong>I</strong>が入力(Input)、<strong>O</strong>が出力(Output)です。</p>



<p><span style="background-color: #003300; color: #ffffff;">　周辺機能　<span style="background-color: #ffffff; color: #000000;">：<br></span></span>マイコンには<strong>AD/DAコンバータ</strong>、<strong>タイマ・カウンタ</strong>、<strong>シリアル通信</strong>などアプリケーションで使用する<strong>さまざまな機能（ハードウェア回路）が内蔵</strong>されています。<a title="マイコン周辺機能（ペリフェラル）とは" href="https://depfields.com/category/learning/embedded/peripheral/" target="_blank" rel="noopener"><strong><span class="vk_highlighter" data-color="#fffd6b">ペリフェラル</span></strong></a>と呼ばれます。</p>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/05/micon_structure.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/micon_structure.jpg" alt="" class="wp-image-1212" width="399" height="228" srcset="https://depfields.com/wp-content/uploads/2020/05/micon_structure.jpg 496w, https://depfields.com/wp-content/uploads/2020/05/micon_structure-300x171.jpg 300w" sizes="(max-width: 399px) 100vw, 399px" /></a><figcaption class="wp-element-caption"><strong>マイコン基本構造</strong></figcaption></figure>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>



<h2 class="wp-block-heading">レジスタとメモリ（少し専門的な話）</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">レジスタは主にマイコンの状態を保存および確認するための特殊なメモリ</span></strong>です。CPUのレジスタではCPUの状態を保存および確認するのに使われます。具体的には演算途中のデータ、割り込みやサブルーチンでプログラムが分岐した時の戻り先アドレス、演算結果が負値、ゼロになった場合の情報や桁上がり値などです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">CPUの汎用レジスタ</span></strong>はハードウェアでCPUに直結しているので、内部バスを経由してデータにアクセスするRAMよりも高速アクセスできます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">周辺機能の制御レジスタ</span></strong>では汎用入出力GPIOとよばれるI/Oポート、タイマ、シリアル通信、ADコンバータ、DAコンバータなどの周辺機能を設定するのに使われます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">周辺機能の状態を示すステータスレジスタ</span></strong>やADコンバータの変換結果を保存しておく<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">結果レジスタ</span></strong>や通信機能では送受信データを保存する<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">送受信データレジスタ</span></strong>などがあります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>直接プログラムからレジスタを設定することもできますが、通常はメーカーから提供されている<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>ファームウェアライブラリ（デバイスドライバ）</strong></span>を使用しますので<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>レジスタは直接意識せず、間接的に設定する</strong></span>ことになります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ただし、<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>ある程度理解ができたところで仕様書などにかかれている各レジスタに目を通しておくことは理解を深める上でおすすめします</strong>。</span>「<strong><a href="https://depfields.com/register-map/" target="_blank" rel="noreferrer noopener" title="ARMマイコンSTM32レジスタマップの見方【上級者向け】">ARMマイコンSTM32レジスタマップの見方</a></strong>」を参照してください。</p>
</div></div></div>



<h2 class="wp-block-heading">マイコンに内蔵されている周辺機能の紹介</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>マイコンにはたくさんの足（ピン）があります。マイコンのデータシートをみると各ピンにいろいろな機能が割り当てられているのが確認できます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>いろいろな機能とはアプリケーションで使用する<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">汎用I/Oポート、AD/DAコンバータ、タイマ・カウンタ、シリアル通信などの便利な機能</span></strong>のことです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>マイコンのピン数は限られているので<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">一つのピンに複数の機能を割り当てられていてソフトウェアで使用する機能を選択できる</span></strong>ようになっています。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>各種機能を以下に紹介しますのでここで<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">それぞれの概念を理解</span></strong>してください。</p>
</div></div></div>



<p><span style="background-color: #003300; color: #ffffff;">　汎用I/Oポート(GPIO)　<span style="background-color: #ffffff; color: #000000;">：</span></span></p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">スイッチ、センサーなど<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">なんらかの信号を入力するのが入力(I)ポート</span></strong>で、LEDなどの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">負荷を駆動する出力をあたえるのが出力(O)ポート</span></strong>です。ポートとは入出力の窓口であるピン（端子）のことです。<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>GPIO</strong></span>（General Purpose Input/Output）とも呼ばれます。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">GPIOはリファレンス・マニュアルや図面上では「PA1」で略記されていることがあります。<strong>PA1は「GPIOポートAの1番目のピン」</strong>を意味します。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">入力ポートと出力ポートは兼用されていることが多く、レジスタ設定により切り替える</span></strong>ことができます。GPIOはデジタル方式の入出力ポートですので入力の場合、入力された電圧に応じて0か1を判別し、出力であれば0か1の状態を与えます。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">電源電圧が3.3Vのマイコンであれば上基準値約2V以上でHレベル、下基準値約0.8V以下でLレベルとなります。通常、<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>マイコン内部ではHレベルを1</strong>、<strong>Lレベルを0</strong></span>として表現します。Hレベルで1、Lレベルで0を<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">正論理</span></strong>、Hレベルで0、Lレベルで1を<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">負論理</span></strong>といいます。プログラムを作成にあたっては出力などではこの論理を反転して使うことも多いです。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">入出力ポートの一部にアナログ信号を扱えるものもあります。使用できるポート（ピン）は限られていますので、設計段階で仕様書をよく確認しながら割当をします。</p>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/05/GPIO.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/GPIO.jpg" alt="" class="wp-image-1251" width="428" height="187" srcset="https://depfields.com/wp-content/uploads/2020/05/GPIO.jpg 488w, https://depfields.com/wp-content/uploads/2020/05/GPIO-300x131.jpg 300w" sizes="(max-width: 428px) 100vw, 428px" /></a><figcaption class="wp-element-caption"><strong>汎用入出力ポート(GPIO)</strong></figcaption></figure>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">当サイトで採用している<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">STM32のGPIO</span></strong>については「<strong><a href="https://depfields.com/gpio/" target="_blank" rel="noreferrer noopener" title="汎用入出力【STM32のGPIO使い方詳細】">汎用入出力【STM32のGPIO使い方詳細】</a></strong>」を参考にしてください。</p>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<p><span style="background-color: #003300; color: #ffffff;">　タイマ・カウンタ　<span style="background-color: #ffffff; color: #000000;">：</span></span></p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">水晶振動子などの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">クロック発生装置から発生した一定周期の信号をシステムクロック</span></strong>といいます。このシステムクロックを<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">任意に分周したクロック信号とカウンタを組み合わせたものが周辺機能のタイマ・カウンタ</span></strong>です。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">分周</span></strong>とはクロックの周波数が高い場合に例えば１MHzクロックを1/1000に下げて１kHzクロックにすることです。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">クロック</span></strong>(クロックパルス）は単純にHレベルとLレベルを一定周期で繰り返すデジタル信号です。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">クロックを自動的にカウントして設定した経過時間後に通知する機能がマイコンのタイマ・カウンタ機能</span></strong>です。</p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>タイマ・カウンタを利用した信号出力の例を見てみましょう。この例はタイマ用に1kHzに分周したクロックを使って任意の一定間隔の出力を作り出すものです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ここではクロックをカウントするのにアップカウンタを使っています。アップカウンタは0から設定した値まで入力クロック（パルス）を増やす方へカウントし、設定値に達すると0に戻ってまたカウントを繰り返します。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>設定値に達した時の通知として出力状態を反転（ここではHレベルとLレベルを入れ替える）する例です。</p>
</div></div></div>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">クロック周期は1msですのでカウンタに50を設定すると50ms毎にカウント値は到達してからリセットされるのを繰り返します。この例ではカウンタリセット毎に出力状態を反転させるため、100msサイクルのパルス出力となります。</p>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/05/タイマを利用した信号出力.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/タイマを利用した信号出力.jpg" alt="" class="wp-image-1257" width="420" height="251" srcset="https://depfields.com/wp-content/uploads/2020/05/タイマを利用した信号出力.jpg 505w, https://depfields.com/wp-content/uploads/2020/05/タイマを利用した信号出力-300x179.jpg 300w" sizes="(max-width: 420px) 100vw, 420px" /></a><figcaption class="wp-element-caption"><strong>タイマを利用した信号出力</strong></figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ここではタイマ・カウンタを利用した信号出力を例に挙げましたが、作成するアプリケーションにおいて時間にかかわる処理はすべてタイマ・カウンタで実現できます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>タイマ・カウンタは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">CPUとは独立したハードウェア回路による機能</span></strong>なので<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">CPUには負担を与えず高度な処理を行う</span></strong>ことができます。タイマ機能の中でも応用用途の広い便利な<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">PWM</span></strong>をもったマイコンもあります（PWMについては後に詳細を解説します）。</p>
</div></div></div>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">当サイトで採用している<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">STM32のタイマ</span></strong>については「<strong><a href="https://depfields.com/timer/" target="_blank" rel="noreferrer noopener" title="当サイトで採用しているSTM32のタイマについては「タイマ・カウンタ【STM32の高機能・汎用タイマ詳細】」を参考にしてください。">タイマ・カウンタ【STM32の高機能・汎用タイマ詳細】</a></strong>」を参考にしてください。</p>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<p><span style="background-color: #003300; color: #ffffff;">　ADコンバータ　<span style="background-color: #ffffff; color: #000000;">：</span></span></p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">GPIOによる入力は通常はデジタルで電圧の1か0の判断だけするのですが、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ポートの一部にアナログ信号を扱えるものがありADコンバータ機能を使用することができます</span></strong>。使用できるポート（ピン）は限られていますので、設計段階で仕様書をよく確認しながら割当し、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">入力ポートの仕様をアナログ信号入力の設定</span></strong>にすればよいだけです。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">ADコンバータ（Analog-Digital変換）は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">マイコン仕様で決められている範囲レベルのアナログ信号電圧を入力ポートから読み込み、マイコン内部で設定された方式でデジタル値に変換するもの</span></strong>です。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">例えば入力最大電圧が5Vで12ビットの分解能を持つADコンバータに0-5Vのアナログ信号を入力する場合は、分解能は4096(2<sup>12</sup>)なので入力が5Vのとき4096のデジタルデータとなります。半分の2.5Vでは2048です。こうして、マイコン内ではアナログ信号が分解能の範囲でデジタル化されましたので数値として扱えるようになります。</p>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/05/AD.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/AD.jpg" alt="" class="wp-image-1259" width="312" height="215" srcset="https://depfields.com/wp-content/uploads/2020/05/AD.jpg 320w, https://depfields.com/wp-content/uploads/2020/05/AD-300x207.jpg 300w" sizes="(max-width: 312px) 100vw, 312px" /></a><figcaption class="wp-element-caption"><strong>ADコンバータ</strong></figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>マイコン自体はデジタル信号を扱うものですが、アプリケーションにおいては音、光、温度などアナログ的な信号を扱う用途は多々あります。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ADコンバータはアナログ信号をマイコンが処理できるデジタル信号に変換する必要不可欠な機能</span></strong>といえるでしょう。</p>
</div></div></div>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"> 当サイトで採用している<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">STM32のADコンバータ</span></strong>については「<strong><a href="https://depfields.com/adc/" target="_blank" rel="noreferrer noopener" title=" 当サイトで採用しているSTM32のADコンバータについては「ADコンバータ【STM32のADコンバータ詳細】」を参考にしてください。 ">ADコンバータ【STM32のADコンバータ詳細】</a></strong>」を参考にしてください。 </p>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<p><span style="background-color: #003300; color: #ffffff;">　DAコンバータ　<span style="background-color: #ffffff; color: #000000;">：</span></span></p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">DAコンバータ（Digital-Analog変換）は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ADコンバータの逆でマイコン内のデジタル値をアナログ信号に変換して出力するもの</span></strong>です。例えば音声信号を出力したい場合は音声の波形を表現する必要がありますが、波形はまさに連続したアナログ信号です。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">このようなアナログ信号を出力する場合にDAコンバータを使用します。出力基準電圧が5Vで12ビットの分解能を持つDAコンバータでは基準電圧を4096(2<sup>12</sup>)等分していずれかの電圧を出力します。例えば、デジタル値が4096のとき出力は5V、半分の2048では2.5Vです。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">こうして、DAコンバータを使うとマイコン内のデジタル化した数値をアナログ信号として出力できます。</p>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/05/DA.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/DA.jpg" alt="" class="wp-image-1261" width="310" height="220" srcset="https://depfields.com/wp-content/uploads/2020/05/DA.jpg 311w, https://depfields.com/wp-content/uploads/2020/05/DA-300x213.jpg 300w" sizes="(max-width: 310px) 100vw, 310px" /></a><figcaption class="wp-element-caption"><strong>DAコンバータ</strong></figcaption></figure>



<p><span style="background-color: #003300; color: #ffffff;">　シリアル通信　<span style="background-color: #ffffff; color: #000000;">：</span></span></p>



<p>マイコンでは例えば8ビットデータを複数（8個）の端子で<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">一度に伝送するパラレル通信</span></strong>に対してデータを直線に並べて<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">順次伝送する方式のシリアル通信</span></strong>機能をもっています。文字列”ABC”の通信する場合、パラレル通信では各文字を同時に送信するのに対して、シリアル通信では’A’から順に’B’,’C’と1文字ずつ送信するイメージです。</p>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/05/パラレル通信とシリアル通信.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/パラレル通信とシリアル通信.jpg" alt="" class="wp-image-1262" width="341" height="139" srcset="https://depfields.com/wp-content/uploads/2020/05/パラレル通信とシリアル通信.jpg 380w, https://depfields.com/wp-content/uploads/2020/05/パラレル通信とシリアル通信-300x122.jpg 300w" sizes="(max-width: 341px) 100vw, 341px" /></a><figcaption class="wp-element-caption"><strong>パラレル通信とシリアル通信</strong></figcaption></figure>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">シリアル通信は伝送するデータのビット数によらないため端子数は少なくてすみます。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">シリアル通信のなかで非同期（調歩同期）式と呼ばれる開始を意味する「スタートビット」と終わりを意味する「ストップビット」でデータを挟んで伝送する<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">同期信号が不要のUART通信</span></strong>がありモニター用機器や無線LANモジュールなどのインターフェースに一般的に使用されます。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">USART通信はUARTを発展させて同期式通信にも対応したもの</span></strong>でマイコンにはUSART通信がペリフェラルとして内蔵されています。また、産業機器で一般的につかわれているRS232CやRS485,RS422などは信号レベルの規格が異なりますが親戚みたいなものです。レベル変換ICを外付け回路として加えると使用できるようになります。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">同期信号を必要とする<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">クロック同期式シリアル通信にはI<sup>2</sup>CとSPI通信</span></strong>があります。EEPROMなどのインターフェースによく用いられています。</p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>UART-USB変換ケーブルを使用するとPCともつなげてフリーのシリアルターミナルソフトや専用のアプリを作成すると操作やモニターが簡単にできます。このように<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">USART通信は用途がいろいろなアプリケーションに広がるためぜひ習得してほしい機能</span></strong>です。</p>
</div></div></div>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"> 当サイトで採用している<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">STM32のUSART通信</span></strong>については<strong><a href="https://depfields.com/usart/" target="_blank" rel="noreferrer noopener" title="シリアル通信USART【STM32のUSART詳細】">シリアル通信USART【STM32のUSART詳細】</a></strong>、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">I<sup>2</sup>C通信</span></strong>については<strong><a href="https://depfields.com/i2c/" target="_blank" rel="noreferrer noopener" title="シリアル通信I2C【STM32のI2C詳細】">シリアル通信I2C【STM32のI2C詳細】</a></strong>、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">SPI通信</span></strong>については<strong><a href="https://depfields.com/spi/" target="_blank" rel="noreferrer noopener" title="シリアル通信SPC【STM32のSPI詳細】">シリアル通信SPC【STM32のSPI詳細】</a></strong>を参考にしてください。 </p>



<p><span style="background-color: #003300; color: #ffffff;">　割り込み　<span style="background-color: #ffffff; color: #000000;">：</span></span></p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">組み込み制御には割り込みの概念がかかせません。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">例えば<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>不定期に入力される外部からの信号</strong>や<strong>USART通信などで受信完了などの通知</strong></span>を検知するのに<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">割り込み</span></strong>を使用しなければ、常に定期的にその信号の入力や機能終了通知をチェックしなければいけません。割り込みを使うと何らかの処理が発生したとき（イベントが発生）のみ、割り込みとして処理すればよいので<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">プログラムは無駄がなく簡素化し、消費電力も節約できます</span></strong>。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">タイマ、シリアル通信など各ペリフェラルには<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">割り込みイベント</span></strong>と呼ばれる機能が多数あり、ハードウェアによる割り込みが発生するたびに<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">割り込みハンドラ</span></strong>と呼ばれる処理内容を記載した機能ブロックが呼び出されて割り込み処理が実行されます。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">割り込みを使用しない場合は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ポーリング</span></strong>と呼ばれる方式で発生した<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">イベントを定期的に監視</span></strong>して、必要に応じて処理をするものです。これはソフトウェアだけで実装できる気軽さはあるのですが、どんなタイミングで発生するかわからないようなイベントを定期的に監視するのは効率が悪いことに加え、処理タイミングが遅れるデメリットがあります。また、ポーリング監視期間外で発生したイベントには対応できません。</p>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/05/割り込みとポーリング.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/割り込みとポーリング.jpg" alt="" class="wp-image-1264" width="446" height="276" srcset="https://depfields.com/wp-content/uploads/2020/05/割り込みとポーリング.jpg 575w, https://depfields.com/wp-content/uploads/2020/05/割り込みとポーリング-300x186.jpg 300w" sizes="(max-width: 446px) 100vw, 446px" /></a><figcaption class="wp-element-caption"><strong>割り込みとポーリング</strong></figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">定期的で頻繁に起こるようなイベントに対してはポーリング処理</span></strong>でよく、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">発生頻度の低いイベントで確実に処理タイミングを厳密に合わせたい場合はハードウェアによる割り込み</span></strong>が向いています。アプリケーションに合わせて使い分けるとバランスのとれたシステムが構築できます。</p>
</div></div></div>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"> 当サイトで採用している<strong>STM32の割り込み</strong>については「<strong><a href="https://depfields.com/interrupt/" target="_blank" rel="noreferrer noopener" title=" 当サイトで採用しているSTM32の割り込みについては「さまざまな割り込み【STM32の割り込み詳細】」を参考にしてください。 ">さまざまな割り込み【STM32の割り込み詳細】</a></strong>」を参考にしてください。 </p>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<p><span style="background-color: #003300; color: #ffffff;">　DMA　<span style="background-color: #ffffff; color: #000000;">：</span></span></p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">DMA</span></strong>は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">D</span></strong>irect <strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">M</span></strong>emory <strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">A</span></strong>ccessの略で<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">CPUを使わずに、バスを通じて周辺機能（ADコンバータ、UART通信など）とメモリ間（ROM、RAM）のデータ転送を直接行う機能のこと</span></strong>です。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">通常、データ転送はCPUが行いますが、DMAを搭載しているマイコンでは、DMAがCPUに代わって、データを転送してくれます。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">そのためCPUは演算などのCPUでしかできない仕事だけすればよくなります。DMAを搭載することで、マイコンの負担（消費電力）を減らし、パフォーマンスを挙げることになります。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">ADコンバータやUART通信などの周辺機能と組み合わせて使うと効果的です。画像や音声転送など大量のデータを通信で扱う場合にはDMA機能を積極的に使用すればよいです。</p>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/05/DMA.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/DMA.jpg" alt="" class="wp-image-1265" width="321" height="249" srcset="https://depfields.com/wp-content/uploads/2020/05/DMA.jpg 331w, https://depfields.com/wp-content/uploads/2020/05/DMA-300x233.jpg 300w" sizes="(max-width: 321px) 100vw, 321px" /></a><figcaption class="wp-element-caption"><strong>DMA</strong></figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>DMA機能はマイコンアプリケーションを作成する上では必須の機能ではありませんが、CPUの負担を減らし、アプリケーションのパフォーマンスをより向上させたい場合に活用するとよいでしょう。</p>
</div></div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム1</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p><strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">ADコンバータ</span></strong>を使用する用途で<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">複数のチャネルで信号を取り込みたい場合などはDMAとの組み合わせは必須</span></strong>です。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<p>当サイトでは 「<strong><a href="https://depfields.com/usart/" target="_blank" rel="noreferrer noopener" title="シリアル通信USART【STM32のUSART詳細】">シリアル通信USART【STM32のUSART詳細】</a></strong>」 および「<strong><a aria-label=" (opens in a new tab)" href="https://depfields.com/adc/" target="_blank" rel="noreferrer noopener">A</a><a href="https://depfields.com/adc/" target="_blank" rel="noreferrer noopener" title="シリアル通信USART【STM32のUSART詳細】">Dコンバータ【STM32のADコンバータ詳細】</a></strong>」それぞれの周辺機能で<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><a href="https://depfields.com/dma/" target="_blank" rel="noreferrer noopener" title="DMA(Direct Memory Access)【STM32のDMA詳細】">DMAの使い方を解説</a></span></strong>しています。 </p>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<h2 class="wp-block-heading">各ピンの構成する基本回路</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>マイコンの機能は色々あるのですが、各ピンを構成する回路はほぼ共通です。I/Oポート（GPIO）のレジスタを設定することで機能を割り当てます。<strong><a href="https://depfields.com/gpio/" target="_blank" rel="noreferrer noopener" title="汎用入出力【STM32のGPIO使い方詳細 】">これら各機能については後ほど詳細に解説</a></strong>しますのでここでは割愛しますが、これらを利用するための基本回路<strong><a href="https://depfields.com/mc-circuit/" target="_blank" rel="noreferrer noopener" title="マイコン周辺のハードウェア基本回路【初心者・未経験者必見】">[詳細はこちら]</a></strong>をとりあげてみます。</p>
</div></div></div>



<p><span style="background-color: #003300; color: #ffffff;">　入力プルアップ・プルダウン抵抗　<span style="background-color: #ffffff; color: #000000;">：</span></span></p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">ピンを汎用入力ポートと定義したとき入力は電源電圧Vddがかかった状態の1（HIGH)、Vss(GND)につながり0Vになった状態が0（LOW)の2通りです。いわゆる<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">デジタル入力</span></strong>です。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">入力プルアップ・プルダウン抵抗</span></strong>はマイコンにスイッチやセンサーなど外部信号をとしての入力に必要な抵抗です。このとき、プルアップまたはプルダウン抵抗がないと入力が0（L)でも1（H)でもない「<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">浮いている</span></strong>」状態になってしまいます。どっちつかずの場合はノイズなどの影響も受けやすくなるため、誤作動の原因ともなりえます。</p>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/05/入力が浮いた状態.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/入力が浮いた状態.jpg" alt="" class="wp-image-1317" width="481" height="199" srcset="https://depfields.com/wp-content/uploads/2020/05/入力が浮いた状態.jpg 546w, https://depfields.com/wp-content/uploads/2020/05/入力が浮いた状態-300x124.jpg 300w" sizes="(max-width: 481px) 100vw, 481px" /></a><figcaption class="wp-element-caption"><strong>入力が「浮いている」状態</strong></figcaption></figure>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">入力がなくても <strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">1に固定するためのものは入力プルアップ抵抗</span></strong>、 <strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">0に固定するものは入力プルダウン抵抗</span></strong>となります。</p>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/05/プルアップ・プルダウン抵抗簡略図.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/プルアップ・プルダウン抵抗簡略図.jpg" alt="" class="wp-image-1267" width="445" height="226"/></a><figcaption class="wp-element-caption">プルアップ・プルダウン抵抗簡略図</figcaption></figure>



<div class="wp-block-vk-blocks-spacer vk_spacer"><div class="vk_spacer-display-pc" style="height:20px"></div><div class="vk_spacer-display-tablet" style="height:10px"></div><div class="vk_spacer-display-mobile" style="height:5px"></div></div>



<p><span style="background-color: #003300; color: #ffffff;">　プッシュプル出力（電圧出力）・オープンドレイン出力　<span style="background-color: #ffffff; color: #000000;">：</span></span></p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">ピンを汎用出力ポートと定義したとき<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">出力はC-MOSとよばれるスイッチング素子で構成される回路に切り替わり</span></strong>ONかOFFの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">デジタル出力</span></strong>で負荷を駆動します。例えば負荷がLEDの場合は点灯、消灯を切り替えます。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">出力には<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">プッシュプル</span></strong>タイプと<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">オープンドレイン</span></strong>タイプがあります。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">マイコンが出力を0(L)に指定しているとき出力ピンがVss(GND）で、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">1(H)に指定しているとき電源電圧Vddとなるものがプッシュプル</span></strong>タイプです。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">マイコンが出力を0(L)に指定しているとき出力ピンがVss(GND）で、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">1(H)に指定しているとき電源電圧VddでもVss(GND）でもないものがオープンドレイン</span></strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">タイプ</span>です。</p>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/05/プッシュプル・オープンドレイン出力図.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/プッシュプル・オープンドレイン出力図.jpg" alt="" class="wp-image-1268" width="528" height="176" srcset="https://depfields.com/wp-content/uploads/2020/05/プッシュプル・オープンドレイン出力図.jpg 595w, https://depfields.com/wp-content/uploads/2020/05/プッシュプル・オープンドレイン出力図-300x100.jpg 300w" sizes="(max-width: 528px) 100vw, 528px" /></a><figcaption class="wp-element-caption">プッシュプル出力・オープンドレイン出力図</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">通常はプッシュプル出力</span></strong>を使うことが多いですが<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">オープンドレインは<a class="aioseop-link">出力ロジックの電圧レベルの変換</a>やワイヤードOR</span></strong>として使われます。C-MOS出力同士の接続はショート防止のため禁止ですが、オープンドレイン出力の場合はショートしませんのでワイヤードORとして接続できます。</p>
</div></div></div>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム2</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>オープンドレイン出力に<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">プルアップ抵抗を介して別電源をつなぐ</span></strong>と<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">電圧レベルが別電源のレベルに変換</span></strong>されます。</p>
</div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/05/出力ロジックの電圧レベル変換.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/出力ロジックの電圧レベル変換.jpg" alt="" class="wp-image-1269" width="396" height="219" srcset="https://depfields.com/wp-content/uploads/2020/05/出力ロジックの電圧レベル変換.jpg 412w, https://depfields.com/wp-content/uploads/2020/05/出力ロジックの電圧レベル変換-300x166.jpg 300w" sizes="(max-width: 396px) 100vw, 396px" /></a><figcaption class="wp-element-caption">出力ロジックの電圧レベル変換の簡略図</figcaption></figure>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム3</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>ワイヤードORとは<span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b"><strong>実際の結線で論理回路のORと同じ機能を持ったもの</strong></span>です。</p>
</div>
<p>&nbsp;</p>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/06/ワイヤードOR簡略図.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/06/ワイヤードOR簡略図.jpg" alt="" class="wp-image-3326" width="437" height="253" srcset="https://depfields.com/wp-content/uploads/2020/06/ワイヤードOR簡略図.jpg 461w, https://depfields.com/wp-content/uploads/2020/06/ワイヤードOR簡略図-300x174.jpg 300w" sizes="(max-width: 437px) 100vw, 437px" /></a><figcaption class="wp-element-caption">ワイヤードORの簡略図</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ここでC-MOSがでてきましたがこれは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">C</span></strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">omplementary</span><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"> MOS</span></strong>とよばれるもので<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">P型MOSFETとN型MOSFETを相補的に組み合わせた論理回路</span></strong>のスイッチング素子の一種です。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/05/CMOS出力簡略図.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/CMOS出力簡略図.jpg" alt="" class="wp-image-1271" width="465" height="236" srcset="https://depfields.com/wp-content/uploads/2020/05/CMOS出力簡略図.jpg 478w, https://depfields.com/wp-content/uploads/2020/05/CMOS出力簡略図-300x152.jpg 300w" sizes="(max-width: 465px) 100vw, 465px" /></a><figcaption class="wp-element-caption">C-MOS出力簡略図</figcaption></figure>



<p><span style="background-color: #003300; color: #ffffff;">　システムクロック　<span style="background-color: #ffffff; color: #000000;">：</span></span></p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><strong><a href="https://depfields.com/sysclk/" target="_blank" rel="noreferrer noopener" title="システムクロック【STM32のSYSCLK設定詳細 】">マイコンのクロック信号</a></strong>は水晶振動子などの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">外部発振回路</span></strong>から供給される外部クロックタイプと、マイコンに内蔵されているRC発振回路（<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">内部発振回路</span></strong>）から外付け部品なしで供給される内部クロックタイプがあります。内部クロックタイプは外付け部品が少ない分コスト低減などの利点があります。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">ただし、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">内部発振回路は外部水晶振動子に比べて精度のばらづき</span></strong>などで周波数の安定性は多少さがります。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><strong>U<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ART通信など外部機器とのタイミングとの整合が必要な機器のシステムを設計する場合には周波数の安定する外部振動子を使用することをおすすめ</span></strong>します。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">実際に設計の段階で水晶振動子を選択する場合は厳密にいうとマイコンとの相性もありますので試作の段階で動作確認をする必要はあります。</p>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/05/クロック信号源.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/クロック信号源.jpg" alt="" class="wp-image-1272" width="329" height="154" srcset="https://depfields.com/wp-content/uploads/2020/05/クロック信号源.jpg 382w, https://depfields.com/wp-content/uploads/2020/05/クロック信号源-300x141.jpg 300w" sizes="(max-width: 329px) 100vw, 329px" /></a><figcaption class="wp-element-caption">クロック信号源図</figcaption></figure>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">この<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">クロック信号源をベース</span></strong>にタイマ、ADコンバータ、UART通信など各周辺機能には<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">適切に分周した周波数になるクロックを設定</span></strong>します。タイマ、ADコンバータ、UART通信など各周辺機能にはシステムクロック源のままであると高速すぎるために<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">適切に分周した周波数に設定</span></strong>してクロックをコントロールすると<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">消費電力を節約</span></strong>することもできます。</p>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>



<h2 class="wp-block-heading">プログラムの流れ</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>マイコンでは電源投入直後、メモリに書き込まれている<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>プログラムを開始位置から順次実行</strong></span>していきます。<br>実行手順として、初期設定たとえば、ポート定義、使用する周辺機器（ペリフェラル）の定義などを行います。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>準備ができたところで、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">メインループ</span></strong>と呼ばれるところで<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">アプリケーションの処理を定期的に繰り返し実行</span></strong>します。この<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">繰り返しの周期をプログラムのサイクルタイム</span></strong>といいます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>様々なアプリケーションに必要な複数の処理を順次実行してサイクルタイム毎に繰り返します。サイクルタイムは処理の内容によりかわってきます。比較的単純なアプリケーションではこれでも問題ありません。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/05/プログラムの流れ.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/プログラムの流れ.jpg" alt="" class="wp-image-1275" width="271" height="331" srcset="https://depfields.com/wp-content/uploads/2020/05/プログラムの流れ.jpg 271w, https://depfields.com/wp-content/uploads/2020/05/プログラムの流れ-246x300.jpg 246w" sizes="(max-width: 271px) 100vw, 271px" /></a><figcaption class="wp-element-caption">プログラムの流れ</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>割り込み信号を外部から定期的に与えると<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">サブルーチ</span>ン</strong>や<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">割り込みハ</span>ンドラ</strong>と呼ばれる処理ブロックを決まった間隔で実行させることができます。後ほど説明するOS（オペレーションシステム）を使用すると、処理ごとにタスクと呼ばれるブロックにわけて定期的に優先順位を設けて実行させることもできます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>モータ制御などの速度を算出する処理などは比較的高速でサイクルタイムは短めであることが必要ですが（10ms以下）、モニター表示などは長めのものでも問題ありません（100ms程度）。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">さまざまな処理が複雑に絡み合うアプリケーションでは<a href="https://depfields.com/category/learning/embedded/os/" target="_blank" rel="noreferrer noopener" title="OS">OS</a>を使用すると効率よくプログラムが構成できる</span></strong>ようになりますのでOSを使用することは組み込みには必須なスキルでしょう。</p>
</div></div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>


<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/background/" target="_blank" rel="external noopener"><div class="lkc-card"><div class="lkc-info"><img class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=en.depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">Most Powerful Bible to Become an Embedded Engineer</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/pz-linkcard/cache/2768e792dea7e7b25bf273cf8df40c4d4c535f022aa901701c0139671302e3bf.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">Basic knowledge around Microcontroller for Embedded engineers [must-see for b...</div></div><div class="lkc-url">https://en.depfields.com/background/</div><div class="lkc-excerpt">Hardware and Software around MCUWhat is the configuration of the MCU itself and what functions does it have?Before computers existed, the world around us was all about hardware. In the case of electrical products, such as tele</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/background/">組み込みエンジニアのためのマイコン周辺の基礎知識【初心者必見】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>マイコンの選択【電子工作用途でもARM(STM32)を選ぶべき理由】</title>
		<link>https://depfields.com/selection/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=selection</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Wed, 27 May 2020 05:43:50 +0000</pubDate>
				<category><![CDATA[組み込みに使われるマイコン]]></category>
		<category><![CDATA[STM32]]></category>
		<guid isPermaLink="false">https://depfields.com/?page_id=1383</guid>

					<description><![CDATA[<p>さまざまな種類のマイコン ARM Cortex-M3コア搭載マイコン ポイント ARMコアの中でも本サイトではCortex-M3コアを内蔵したSTマイクロエレクトロニクス社のSTM32シリーズのマイコンを採用しています。 [&#8230;]</p>
<p>The post <a href="https://depfields.com/selection/">マイコンの選択【電子工作用途でもARM(STM32)を選ぶべき理由】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img width="408" height="277" src="https://depfields.com/wp-content/uploads/2020/05/マイコン3.jpg" class="attachment-large size-large wp-post-image" alt="" decoding="async" srcset="https://depfields.com/wp-content/uploads/2020/05/マイコン3.jpg 408w, https://depfields.com/wp-content/uploads/2020/05/マイコン3-300x204.jpg 300w" sizes="(max-width: 408px) 100vw, 408px" /></div>






<h2 class="wp-block-heading">さまざまな種類のマイコン</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>マイコンといっても8ビットでDIPタイプ（多数の金属製接続端子が下方へ伸びたタイプ）や32ビットの表面実装タイプなど性能、価格がさまざまな種類のものが数多くのメーカーから発売されています。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>この中からどれを選ぶかは簡単な答えはないのですが、自分の目指している方向性に適しているマイコンを選択するのも一つの方法です。比較的単純なマイコン電子工作だけをしたいのならば8ビットのマイコンで十分で、シリアル通信や産業用モータドライブ、さらには将来的にIoTに発展させたい場合は高性能なマイコンが必要ではないでしょうか。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/マイコンの選択.jpg" alt="" class="wp-image-1385" width="406" height="171" srcset="https://depfields.com/wp-content/uploads/2020/05/マイコンの選択.jpg 509w, https://depfields.com/wp-content/uploads/2020/05/マイコンの選択-300x127.jpg 300w" sizes="(max-width: 406px) 100vw, 406px" /><figcaption class="wp-element-caption">いろいろなマイコン</figcaption></figure>



<h2 class="wp-block-heading">ARM Cortex-M3コア搭載マイコン</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-right vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>マイコンに興味があって電子工作をしながらマイコンを学ぶ人であれば組み込み機器でも大きなシェアを占めているARMコアからはじめることを強くお勧めします。組み込みスキルを身につけてから活躍の場を求める時に、国内にとどまらず海外にも可能性があるのは世界標準であるARMコアを扱うスキルであるからです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-right vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>当サイトではこのような事例を鑑みてこれから取り扱うマイコンとして過不足ないであろう性能をもち<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">将来性、発展性をも考慮したもの</span></strong>を取り上げています。いろいろな産業分野でのアプリケーションに応用できるのはもちろん趣味でいろいろな技術（通信系やモータコントロールなど）に挑戦するにも最適なマイコンです。<br>（学習をはじめるのならばはじめの敷居は高いようですが<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">一度技術を身につけると他に応用するのは容易い</span></strong>です。）</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-right vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>当サイトで取り上げているのは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ARMのCortex-M3コアを内蔵したマイコン</span></strong>です。ARMという名前だけでも耳にしたことがあるのではないでしょうか。ARMコアはARM社（英国）が提供するアーキテクチャをもつCPUコアで今やマイコンの世界ではもっともシェアを占めています。PCの世界では依然としてIntel社のコアが強いですがスマホ・タブレットの世界で大半を占めているのみならず<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">組み込み機器でも大きなシェアを占めているのがARMコア</span></strong>です。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-right vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>これから組み込みの世界に入りマイコンを学ぶ人であれば<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">主流であるARMコアを学ぶのは当然有利</span></strong>です。組み込みスキルを身につけてから活躍の場を求める時に、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">国内にとどまらず海外にも可能性があるのはやはり世界標準であるARMコアを扱うスキル</span></strong>でしょう。実際に業務で使用するマイコンは他のタイプになることは多いと思いますがARMコアは特別なアーキテクチャではないため<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">このマイコンで開発の基礎を十分に身につけていれば他のマイコンに移行するのは問題ないでしょう</span></strong>。</p>
</div></div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div style="display: inline-block; background: #191970; padding: 5px 10px; color: #ffffff; border-radius: 5px 5px 0px 0px;"><strong>ポイント</strong></div>
<div style="background: #ffffea; border-radius: 0px 10px 10px 10px; padding: 10px; border: 3px solid #191970;">
<p>ARMコアの中でも本サイトでは<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">Cortex-M3コアを内蔵したSTマイクロエレクトロニクス社のSTM32シリーズのマイコン</span></strong>を採用しています。<strong>ARMマイコンのなかでも特に情報が多いから</strong>です。STM32マイコンシリーズには上位モデルに浮動小数点プロセッサ付きCortex-M4コアのハイパフォーマンスモデルSTM32F4シリーズなどがありますが、ARMマイコンの入門にはベースモデルの<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">STM32F1シリーズが最適</span></strong>だと考えます。</p>
</div>
<p> </p>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-right vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">STM32マイコン</span></strong>は組み込み技能を身につけたい入門者や初心者にはあまりある高機能・高性能なマイコンなのですが、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">心配は無用</span></strong>です。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">当サイトでは大事なところをピックアップしながら解説</span></strong>していますので努力は必要ですが<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">効率よく基礎が身につき</span></strong>、一度基礎を身につけてしまえばどんなマイコンにも通用するでしょう。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/stm32_board-1.jpg" alt="" class="wp-image-6255" width="522" height="398" srcset="https://depfields.com/wp-content/uploads/2020/05/stm32_board-1.jpg 693w, https://depfields.com/wp-content/uploads/2020/05/stm32_board-1-300x229.jpg 300w" sizes="(max-width: 522px) 100vw, 522px" /><figcaption class="wp-element-caption">STM32マイコン</figcaption></figure>



<h2 class="wp-block-heading">ファームウェアライブラリ</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none vk_block-margin-sm--margin-top"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ST（STマイクロエレクトロニクス）社で取り扱うマイコンの開発を行うにあたって、ほしい情報は世界を含めて極めて多く、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ファームウェアライブラリや開発環境ツールが無料で提供されるのも魅力</span></strong>です。このため必要あれば最新の開発環境にアップデートするのも容易に行なえます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ファームウェアというものはマイコンの各種機能を操作・設定するレジスタを意識することなくいわばおいしいところだけ利用できるように<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">体型よくまとめたものをC言語で利用できるようになったライブラリ</span></strong>です。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">デバイスドライバ</span></strong>ともいいます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ファームウェアを使用すると必要な機能、例えばシリアル通信機能の設定パラメータであるボーレートなどをファームウェアの規則にしたがって記述すればよいだけです。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ファームウェアの内部でパラメータがレジスタに設定されるようになっている</span></strong>のです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-right vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>各種レジスタについてはマイコンのレファレンスマニュアルに詳細に記載していますが、すべて個人のチカラだけでレジスタの性質・機能を理解しプログラムしていくのはよほどプログラミングに長けた人でない限り心が折れると思います。たしかにファームウェアに頼らずレジスタに直接設定できるすごい人もいますができる人のほうがすくないのではないでしょうか。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-right vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">便利で利用できるものは利用する</span></strong>というのがこのファームウェアライブラリ（デバイスドライバ）にもあてはまります。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">大事なことはある程度理解しながら先にすすむこと</span></strong>です。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-right vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>とはいっても、ある程度基礎が身につきゆとりができた場合はファームウェアライブラリの内容をたどっていくとレジスタの働きもよくわかるようになります。また、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ファームウェアライブラリはプロフェッショナルのプログラマーたちによって作成されたもの</span></strong>なので<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">内容をたどって理解することはプログラミングのスキルをあげるのにも参考になります</span></strong>。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>話はファームウェアライブラリのほうへそれましたが、STM32には開発支援のための情報などが豊富に存在するため、自分だけが悩み先にすすめなくなるような可能性が低いと思います。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>採用マイコンは高機能であるゆえに設定項目も多いですが必要に応じて選択できます。搭載されている機能を習得すればほぼ大部分のアプリケーションに応用つまりつぶしがきくようになります。 <br>それではSTM32シリーズのマイコンを手にして組み込みの世界に入っていきましょう。</p>
</div></div></div>



<p>「<strong><a href="https://depfields.com/nucleo/" target="_blank" aria-label=" (opens in a new tab)" rel="noreferrer noopener">マイコン学習の初心者にArduinoでなくSTM32Nucleoをすすめるわけ</a></strong>」に<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">当サイトで採用しているマイコン教材</span></strong>を使った学習方法についての<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">優位なポイントを解説</span></strong>しています。</p>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<p>本サイト記載の社名、製品名について：<br>本サイトに記載されている社名および製品名は一般に開発メーカーの登録商標または商標です。本文中では&#x2122;　®　©の各表記を明記していません。</p>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>


<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/selection/" target="_blank" rel="external noopener"><div class="lkc-card"><div class="lkc-info"><img class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=en.depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">Most Powerful Bible to Become an Embedded Engineer</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/pz-linkcard/cache/4af34572a63bdef737bafc2cd64708bb34414a1e70a597cc75cccb11de9eebeb.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">Microcontroller Selection [Why ARM (STM32) should be chosen even for electron...</div></div><div class="lkc-url">https://en.depfields.com/selection/</div><div class="lkc-excerpt">Various types of microcontrollersA wide variety of MCUs are available from many manufacturers, including 8-bit DIP types (with many metal connection terminals extending downward) and 32-bit surface-mount types, with varying leve</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/selection/">マイコンの選択【電子工作用途でもARM(STM32)を選ぶべき理由】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>組み込みシステムに使われるマイコンとは</title>
		<link>https://depfields.com/what-mc/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=what-mc</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Sat, 23 May 2020 14:25:41 +0000</pubDate>
				<category><![CDATA[組み込みに使われるマイコン]]></category>
		<category><![CDATA[基礎知識]]></category>
		<guid isPermaLink="false">https://depfields.com/?page_id=1138</guid>

					<description><![CDATA[<p>組み込みシステムを習得するにはそこに使われるマイコンを使いこなす知識・経験を身につけることが大切です。この章ではマイコンの基本構成および用途について解説しています。 マイコンの基本構成 マイコンとは一つのICチップの中に [&#8230;]</p>
<p>The post <a href="https://depfields.com/what-mc/">組み込みシステムに使われるマイコンとは</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img width="278" height="251" src="https://depfields.com/wp-content/uploads/2020/05/マイコン０.jpg" class="attachment-large size-large wp-post-image" alt="" decoding="async" /></div>
<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">組み込みシステムを習得するにはそこに使われるマイコンを使いこなす知識・経験を身につけることが大切です。この章ではマイコンの基本構成および用途について解説しています。</p>







<h2 class="wp-block-heading">マイコンの基本構成</h2>



<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">マイコンとは一つのICチップの中に、CPUをはじめ、メモリ、入出力回路および周辺機能が詰め込まれたもの</span></strong>でワンチップマイコンとも呼ばれています。</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/05/マイコン０.jpg" alt="" class="wp-image-902" width="278" height="251"/><figcaption class="wp-element-caption">マイコン</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>そもそもマイコンなる名称はかつてPCが現代ほど普及していない時代にスーパーコンピュータなど大型コンピュータに対して呼ばれた「マイクロコンピュータ」の略からついたものでこの当時のマイコンは現代普及しているPCの前身のようなものです。これに対して、現在マイコンとよばれるものは電気機器の制御に特化したワンチップICのことで「<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">マイクロコントローラ</span></strong>」と呼ぶのがふさわしいです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:42% auto"><figure class="wp-block-media-text__media"><img decoding="async" width="520" height="520" src="https://depfields.com/wp-content/uploads/2020/05/micon_architecture.jpg" alt="" class="wp-image-1076 size-full" srcset="https://depfields.com/wp-content/uploads/2020/05/micon_architecture.jpg 520w, https://depfields.com/wp-content/uploads/2020/05/micon_architecture-300x300.jpg 300w, https://depfields.com/wp-content/uploads/2020/05/micon_architecture-150x150.jpg 150w" sizes="(max-width: 520px) 100vw, 520px" /></figure><div class="wp-block-media-text__content">
<p class="has-normal-font-size">一つのICの中に演算を実行する<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">CPU</span></strong>を中心にプログラムを格納する<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ROM</span></strong>メモリ,演算データを一時保存する<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">RAM</span></strong>メモリ、外部から与えられたパルス信号のカウントや時間を計測するタイマー機能、センサーなどからのアナログ信号を取り込んで処理するADコンバータ、演算したデータをアナログ信号に変換するDAコンバータ、外部機器との通信などの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">周辺機能</span></strong>が<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">オール・イン・ワンのIC</span></strong>です。</p>


</div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>これらの機能がマイコンにはたった一つのパッケージ内にすべて内蔵されており、しかも当時とは比べ物にならないくらい演算処理が高速ですべてが高性能です。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>マイコンの基本さえ知っていればちょっとしたシステムならば思い立ったらすぐに短期間でしかも安価で構築できてしまいます。<br>機能の仕様変更があった場合に、電気回路などのハードウェアで構成されている部分はすべて作り直す必要がありますが、ソフトウェアで構成されている部分はプログラムの変更だけですみます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>つまり、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">製品の中でソフトウェアの占める割合が大きいものほど仕様の変更に柔軟に対応できます</span></strong>。最近のスマートフォンはこの傾向が強く現れています。</p>
</div></div></div>



<div class="wp-block-media-text is-stacked-on-mobile is-vertically-aligned-top"><figure class="wp-block-media-text__media"><img decoding="async" width="328" height="208" src="https://depfields.com/wp-content/uploads/2020/05/mobilephone.jpg" alt="" class="wp-image-1147 size-full" srcset="https://depfields.com/wp-content/uploads/2020/05/mobilephone.jpg 328w, https://depfields.com/wp-content/uploads/2020/05/mobilephone-300x190.jpg 300w" sizes="(max-width: 328px) 100vw, 328px" /></figure><div class="wp-block-media-text__content">
<p class="has-normal-font-size">ひと昔前の携帯電話も組み込み機器の一種ですが操作はハードウェアで構成されているボタンスイッチから行います。デザインなどのちょっとした仕様変更でもすべて作り直しです。<br>対してスマートフォンでは操作はタッチパネルですのでボタンスイッチなどのハードウェアは不要です。</p>
</div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p><strong>タッチパネル</strong>というものも組み込み機器の一種でマイコンやメモリを搭載した製品もあります。画面デザインをメモリに格納しておいて、タッチパネルが押された座標を検知してプログラム（ソフトウェア）で構成された手順で画面を入れ替えたり、スイッチとして機能させたりするのです。<br><br data-rich-text-line-break="true">タッチパネル一つにデザインをはじめとする機能を盛り込めるので<strong>ソフトウェアの書き換えだけで変更は自由自在</strong>です。こうしてスマートフォンはスイッチ類がどんどん減ってソフトウェアの占める割合が大きくなっています。<br><br data-rich-text-line-break="true">ハードウェアのスイッチが少なくなる利点はコストが大幅にさがるなどどちらかといえば製造者側にあるのですが、使い手側からみるとはたして使い勝手はよくなったのでしょうか。時代の流れだからといえばそれまでですが。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>



<h2 class="wp-block-heading">マイコンの用途</h2>



<p>生活のなかでマイコンはどのようなところに使われているのでしょう。身の回りの生活家電、炊飯器、エアコン、テレビ、スマートフォン、シーリングライトなど今ではほぼすべてにマイコンは使用されています。</p>



<p><span style="background-color: #003300; color: #ffffff;">&nbsp;マイコン搭載の炊飯器:&nbsp;</span></p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>炊飯器とマイコンの関わりをみてみましょう。<br>炊飯器は研いだお米に水加減を適切に釜にセットしたものを火加減を調整しながらおいしく炊き上げるものです。</p>
</div></div></div>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:31% auto"><figure class="wp-block-media-text__media"><img decoding="async" width="360" height="300" src="https://depfields.com/wp-content/uploads/2020/05/炊飯器.jpg" alt="" class="wp-image-1152 size-full" srcset="https://depfields.com/wp-content/uploads/2020/05/炊飯器.jpg 360w, https://depfields.com/wp-content/uploads/2020/05/炊飯器-300x250.jpg 300w" sizes="(max-width: 360px) 100vw, 360px" /></figure><div class="wp-block-media-text__content">
<ol>
<li>お米を研いて水加減を適切に釜にセットする</li>



<li>中火で炊飯を開始する</li>



<li>沸騰し、適切なころあいをみて火を止める</li>



<li>一定時間蒸らしをする</li>
</ol>



<div class="wp-block-vk-blocks-spacer vk_spacer"><div class="vk_spacer-display-pc" style="height:20px"></div><div class="vk_spacer-display-tablet" style="height:10px"></div><div class="vk_spacer-display-mobile" style="height:5px"></div></div>
</div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>人の手で炊飯をする場合は火加減と時間をうまく調整することが美味しく炊きあがるコツとなります。<br>電気炊飯器はタイマーや温度を感知するバイメタルのようなセンサーと加熱をするヒーターの組み合わせで構成されています。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>マイコン非搭載の電気炊飯器はタイマーを使って全自動でご飯が炊けるようになったため人の手で炊飯するのに比べ大変便利になったのですが単純な機能のため好みの炊き加減はできません。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>これに対して、マイコン搭載の炊飯器は温度を感知するセンサーと加熱用ヒーターとの間にマイコンがあります。マイコン出力で操作したリレーやSSRなどのスイッチング素子でヒーターへの熱量を操作します。</p>
</div></div></div>



<div class="wp-block-media-text is-stacked-on-mobile is-vertically-aligned-top" style="grid-template-columns:36% auto"><figure class="wp-block-media-text__media"><img decoding="async" width="458" height="491" src="https://depfields.com/wp-content/uploads/2020/05/炊飯窯.jpg" alt="" class="wp-image-1173 size-full" srcset="https://depfields.com/wp-content/uploads/2020/05/炊飯窯.jpg 458w, https://depfields.com/wp-content/uploads/2020/05/炊飯窯-280x300.jpg 280w" sizes="(max-width: 458px) 100vw, 458px" /></figure><div class="wp-block-media-text__content">
<p class="has-normal-font-size">ひとつのシステムとしてみれば温度センサーから得た入力情報をマイコン内のプログラム（ソフトウェア）により最適な火加減になるようにヒーターへの出力を調整するものです。<br>実際のマイコンを使った炊飯器のシステム構成は入力には温度センサー、スタートスイッチ、出力にはヒーター、炊飯器の運転状況を表示するモニターなどです。<br>マイコンによるプログラム（ソフトウェア）で機能を多様化し、いろいろな種類の米にも好みの加減で炊くことができるようになりました。</p>
</div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>余談ですが本当においしく炊くためには、プログラムによる機能だけでなく、特に出力ヒーターや釜の材質など<strong>ハードウェアの性能が重要なポイント</strong>です。<strong>優秀な製品は優れたソフトウェアによる機能だけでなく優れたハードウェアとのバランスよいもの</strong>です。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>



<p><span style="background-color: #003300; color: #ffffff;">&nbsp;マイコン搭載のスイッチ機能:&nbsp;</span></p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none vk_block-margin-sm--margin-top"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>続いてマイコン搭載の例をスイッチの動作でみてみます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>電気製品のスイッチといえば機械的に接点をつなげたり切り離したりするもので回路の電流を直接導通させたり、絶縁させたりして製品機能のオン・オフを切り替えます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>マイコン搭載の電気製品の場合、マイコンの入力に<strong>機械的なスイッチ</strong>をつなげて、マイコン出力をスイッチとして機能させると単なるオン・オフだけでなく、プログラムにより時間と組み合わせて、長押しなどさまざまな機能をもたすことができます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>こうすると見た目は従来どおりの機械的な単機能のスイッチに見えますが<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">多機能な性質をもつスイッチ</span></strong>に化けています。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>例えばLEDをスイッチで点灯する回路についてみてみましょう。<br>アナログLED回路の場合はスイッチをONにしたときに発光、OFFにしたときは消灯の単純な回路(図1）です。これと同様の回路をマイコンで実現すると図2のようになります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>図2のスイッチはマイコンへ入力としてONの状態(1)とOFFの状態(0)のいわゆるデジタル信号を与えるものです。この入力状態をマイコンでチェックしながら何らかの処理をすれば任意の出力つまりLEDに任意の点灯をさせることができるようになるのです。</p>
</div></div></div>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-9 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" width="254" height="223" data-id="1184" src="https://depfields.com/wp-content/uploads/2020/05/led_withoutsw.jpg" alt="" class="wp-image-1184"/><figcaption class="wp-element-caption">図1　アナログLED回路</figcaption></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="317" height="248" data-id="1185" src="https://depfields.com/wp-content/uploads/2020/05/led_withsw.jpg" alt="" class="wp-image-1185" srcset="https://depfields.com/wp-content/uploads/2020/05/led_withsw.jpg 317w, https://depfields.com/wp-content/uploads/2020/05/led_withsw-300x235.jpg 300w" sizes="(max-width: 317px) 100vw, 317px" /><figcaption class="wp-element-caption">図2　マイコン搭載LED回路</figcaption></figure>
</figure>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>マイコンを使用した回路ではLEDの点灯のさせかた、スイッチ機能はすべてプログラムでつくられます。スイッチを1秒間長押ししてから10秒間点灯させ、その後自動消灯させるといった動作が簡単に実現できるのがマイコンの便利なところです。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>


<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/what-mc/" target="_blank" rel="external noopener"><div class="lkc-card"><div class="lkc-info"><img class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=en.depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">Most Powerful Bible to Become an Embedded Engineer</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/pz-linkcard/cache/763f9c139fdec9bdb0c1a0f619765c3d61d1527c35c32537ca0dfbe5bcd8dd10.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">What is Microcontroller(MCU) used in embedded systems? | Most Powerful Bible ...</div></div><div class="lkc-url">https://en.depfields.com/what-mc/</div><div class="lkc-excerpt">To master embedded systems, it is important to acquire knowledge and experience in using the microcontrollers. This chapter describes the basic structure and applications of microcontrollers.Basic microcontroller configurationA</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/what-mc/">組み込みシステムに使われるマイコンとは</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
