<?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/tag/sysclk/feed/" rel="self" type="application/rss+xml" />
	<link>https://depfields.com</link>
	<description>組み込み（マイコン）スキルを楽しんで学びながら身につけて短期間で効率よく自由自在に扱えるようになりたいと思いませんか？</description>
	<lastBuildDate>Mon, 11 Apr 2022 07:23:03 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.3</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>脈拍センサーとSTM32Nucleoで心拍数を測ってみる</title>
		<link>https://depfields.com/heartbeat/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=heartbeat</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Thu, 27 Aug 2020 14:38:47 +0000</pubDate>
				<category><![CDATA[計測アプリ]]></category>
		<category><![CDATA[計測]]></category>
		<category><![CDATA[AD変換]]></category>
		<category><![CDATA[システムクロック・割り込み]]></category>
		<guid isPermaLink="false">https://depfields.com/?p=5749</guid>

					<description><![CDATA[<p>低速パルスである脈拍をカウントして一分間あたりの心拍数を表示するアプリケーションに挑戦してみましょう。 フォトリフレクタおよびオペアンプを使った脈拍センサーの作成 脈拍センサ信号および出力モニター用LEDをマイコンに接続 [&#8230;]</p>
<p>The post <a href="https://depfields.com/heartbeat/">脈拍センサーとSTM32Nucleoで心拍数を測ってみる</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img fetchpriority="high" width="640" height="414" src="https://depfields.com/wp-content/uploads/2020/09/banner-1133782_640.jpg" class="attachment-large size-large wp-post-image" alt="" decoding="async" srcset="https://depfields.com/wp-content/uploads/2020/09/banner-1133782_640.jpg 640w, https://depfields.com/wp-content/uploads/2020/09/banner-1133782_640-300x194.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /></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">パルスである脈拍をカウントして一分間あたりの心拍数</span></strong>を表示するアプリケーションに挑戦してみましょう。 </p>







<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マイコンのGPIO、割り込みおよびシリアル通信など学習に必要な要素がバランス良く盛り込まれています。</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>このフォトリフレクタは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">赤外線を発光するLED</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-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>オペアンプは1段でも機能するかもしれませんがここでは2段使用しています。フォトリフレクタ信号の変化分だけパルスとしてとりだしたいので直流分をカットする<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">コンデンサCと抵抗Rを組み合わせたRCハイパスフィルタ</span></strong>(カットオフ周波数：約1kHz)を入り口にいれています。</p>
</div></div></div>



<figure class="wp-block-image size-full is-resized"><a href="https://depfields.com/wp-content/uploads/2020/09/脈拍センサ.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/09/脈拍センサ.jpg" alt="" class="wp-image-5750" width="480" height="337" srcset="https://depfields.com/wp-content/uploads/2020/09/脈拍センサ.jpg 479w, https://depfields.com/wp-content/uploads/2020/09/脈拍センサ-300x210.jpg 300w" sizes="(max-width: 480px) 100vw, 480px" /></a><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><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">LTSpice®</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>を使用して上記回路の特性を調べてみます。入力信号には振幅1mV、オフセット2.5V、周期1sの矩形波としています。妥当な波形が出力にあらわれているのでこれで回路を構成することにします。</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/10/heartbeat-simulation.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/10/heartbeat-simulation.jpg" alt="" class="wp-image-6457" width="536" height="402" srcset="https://depfields.com/wp-content/uploads/2020/10/heartbeat-simulation.jpg 640w, https://depfields.com/wp-content/uploads/2020/10/heartbeat-simulation-300x225.jpg 300w" sizes="(max-width: 536px) 100vw, 536px" /></a><figcaption>LTspiceによる回路シミュレーション</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>ことにしています。</p>
</div></div></div>



<h2 class="wp-block-heading">脈拍センサ信号および出力モニター用LEDをマイコンに接続</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>オペアンプ出力のVINを直接マイコンに入力として接続するので<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">入力最大電圧がマイコン電源電圧を超えないようにオペアンプの電源をマイコン電源と共通</span></strong>のものにしています。（STM32では端子により５V入力が可能なものもありますが、すべてではありません。<strong>STM32F103RBの仕様書で確認</strong>してください。）</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/09/脈拍connection.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/09/脈拍connection.jpg" alt="" class="wp-image-5772" width="505" height="379"/></a><figcaption>心拍数モニターの配線</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>オペアンプにより増幅した<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">脈拍センサ信号は電圧パルス信号としてPA8に入力</span></strong>します。心拍モニターとして入力パルスに同調した<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">LED点灯するためにPB6を汎用プッシュプル出力</span></strong>に設定をします。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/09/gpio-setting-1.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/09/gpio-setting-1.jpg" alt="" class="wp-image-5966" width="615" height="466" srcset="https://depfields.com/wp-content/uploads/2020/09/gpio-setting-1.jpg 615w, https://depfields.com/wp-content/uploads/2020/09/gpio-setting-1-300x227.jpg 300w" sizes="(max-width: 615px) 100vw, 615px" /></a><figcaption>GPIO設定</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">PA8は外部割り込み信号</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>割り込み設定は「<strong><a href="https://depfields.com/interrupt/" target="_blank" aria-label=" (opens in a new tab)" rel="noreferrer noopener">さまざまな割り込み【STM32の割り込み詳細</a>】</strong>」で詳細を解説しています。</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/09/interrupt-setting.jpg" alt="" class="wp-image-5759" width="525" height="482" srcset="https://depfields.com/wp-content/uploads/2020/09/interrupt-setting.jpg 525w, https://depfields.com/wp-content/uploads/2020/09/interrupt-setting-300x275.jpg 300w" sizes="(max-width: 525px) 100vw, 525px" /><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>RTOSを使って役割毎にタスクに分類します。脈拍パルス間隔を計測するためのタスク<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">prvTask_pulse</span></strong>（10ms毎に実行）、LED点灯用のタスク<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">prvTask_led</span></strong>（100ms毎に実行） 、そして演算して得た心拍数をPCに送る<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">タスクprvTask_monitor</span></strong>（1000ms毎に実行） です。</p>
</div></div></div>



<p>リアルタイムOS(FreeRTOS)のタスクの使い方は「<strong><a href="https://depfields.com/task/" target="_blank" aria-label=" (opens in a new tab)" rel="noreferrer noopener">FreeRTOSタスク管理の基本【学習・実践向け：具体的な使い方】</a></strong>」で詳細を解説しています。</p>



<figure class="wp-block-image size-large"><a href="https://depfields.com/wp-content/uploads/2020/09/main-procedure.jpg"><img decoding="async" width="680" height="311" src="https://depfields.com/wp-content/uploads/2020/09/main-procedure.jpg" alt="" class="wp-image-5760" srcset="https://depfields.com/wp-content/uploads/2020/09/main-procedure.jpg 680w, https://depfields.com/wp-content/uploads/2020/09/main-procedure-300x137.jpg 300w" sizes="(max-width: 680px) 100vw, 680px" /></a></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>脈拍パルス数計測のタイムチャートです。PA8の割り込み入力パルス立ち上がりで割り込みが発生して割り込みハンドラEXTI9_5_IRQHandlerが呼び出されます。ここでフラグtriger_flag=1として、割り込みが発生したことを通知します。</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ごとに実行している 脈拍パルス間隔を計測するためのタスク<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">prvTask_pulse</span></strong>がtrigger_flag=1で割り込み発生の通知を受けると 10msごとに<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">(10msクロックのカウント)</span></strong> <strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">した値（count_interval_cycle)を取得</span></strong>して<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">心拍数(pulse_count)を演算</span></strong>します。演算処理後、割り込み通知用フラグtrigger_flagとカウント値count_interval_cycleをリセットします。 <strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">心拍数は割り込み入力の1分間における回数</span></strong>がわかればよく10msごとの クロックカウント値count_interval_cycle の場合は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">6000を count_interval_cycle で割ったもの</span></strong>になります。 </p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/09/time_chart.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/09/time_chart.jpg" alt="" class="wp-image-5777" width="475" height="339"/></a><figcaption>脈拍パルスカウントのタイムチャート</figcaption></figure>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/09/pulse-frequency.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/09/pulse-frequency.jpg" alt="" class="wp-image-5761" width="576" height="485" srcset="https://depfields.com/wp-content/uploads/2020/09/pulse-frequency.jpg 575w, https://depfields.com/wp-content/uploads/2020/09/pulse-frequency-300x253.jpg 300w" sizes="(max-width: 576px) 100vw, 576px" /></a><figcaption>割り込み入力による心拍数演算</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>実際に構成した回路で脈拍センサー検知部のフォトリフレクタ-に指先をあてると脈拍を検知して信号がオペアンプで適度に増幅されている様子がわかります。シミュレーション結果と実際の回路による結果が同じようなものであることがわかります。</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-media-text is-stacked-on-mobile" style="grid-template-columns:76% auto"><figure class="wp-block-media-text__media"><video controls src="https://depfields.com/wp-content/uploads/2022/02/heartbeat0.mp4"></video></figure><div class="wp-block-media-text__content">
<p class="has-large-font-size"></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>



<h2 class="wp-block-heading">LEDおよびモニター出力</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>脈拍パルスに同調したLED発光はprvTask_ledで行っています。実行頻度は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>演算して得られた心拍数をシリアルUSART通信で心拍数をモニターするためのタスクがprvTask_monitorです。演算値を文字列に変換して1000msごとにPCモニターに表示させます。PC側のターミナルソフトで値が確認できます。</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は脈拍に同調して発光しています。</p>
</div></div></div>



<p>シリアル通信USARTの使い方は「<strong><a href="https://depfields.com/usart/" target="_blank" aria-label=" (opens in a new tab)" rel="noreferrer noopener">シリアル通信USART【STM32のUSART詳細】</a></strong>」および「<strong><a href="https://depfields.com/monitor-debug-apl/">シリアルモニター【STM32シリアル通信】</a></strong>」で詳細を解説しています。</p>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/09/ledoutput-and-monitor.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/09/ledoutput-and-monitor.jpg" alt="" class="wp-image-5763" width="513" height="416" srcset="https://depfields.com/wp-content/uploads/2020/09/ledoutput-and-monitor.jpg 512w, https://depfields.com/wp-content/uploads/2020/09/ledoutput-and-monitor-300x243.jpg 300w" sizes="(max-width: 513px) 100vw, 513px" /></a><figcaption>LEDおよびモニター出力</figcaption></figure>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/09/heartbeat-monitor.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/09/heartbeat-monitor.jpg" alt="" class="wp-image-6474" width="580" height="462" srcset="https://depfields.com/wp-content/uploads/2020/09/heartbeat-monitor.jpg 539w, https://depfields.com/wp-content/uploads/2020/09/heartbeat-monitor-300x239.jpg 300w" sizes="(max-width: 580px) 100vw, 580px" /></a><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>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:76% auto"><figure class="wp-block-media-text__media"><video controls src="https://depfields.com/wp-content/uploads/2022/02/heatbeat1.mp4"></video></figure><div class="wp-block-media-text__content">
<p class="has-large-font-size"></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>以上が 基本的な心拍数モニターのプログラム構成です。LEDの点滅をPWM出力の調光にしてみたり、シリアル通信をWiFiで実現してみたり、いろいろと組み合わせて発展していくとよいでしょう。</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='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/heartbeat-monitor/'>心拍数モニター</a></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 7.49 KB</div>
            </div>
            <div class="ml-3">
                <a href='#unlock' class='wpdm-download-link wpdm-download-locked btn btn-primary ' data-package='5780'>ダウンロード</a>
            </div>
        </div>
    </div>
</div>

</div>



<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/heartbeat/" 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/2704a55c0b9e70c62144f796c598a94c1f543c3a467c53d743637b07b23743b4.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">Heart rate monitor using pulse sensor and STM32 Nucleo | Most Powerful Bible ...</div></div><div class="lkc-url">https://en.depfields.com/heartbeat/</div><div class="lkc-excerpt">Try an application that counts the pulse, which is a slow pulse, and displays the heart rate per minute.  Creating a pulse rate sensor using a photo reflector and operational amplifierThis section provides an explanation of</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/heartbeat/">脈拍センサーとSTM32Nucleoで心拍数を測ってみる</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		<enclosure url="https://depfields.com/wp-content/uploads/2022/02/heartbeat0.mp4" length="13090962" type="video/mp4" />
<enclosure url="https://depfields.com/wp-content/uploads/2022/02/heatbeat1.mp4" length="14265864" type="video/mp4" />

			</item>
		<item>
		<title>外部入力割り込みアプリ【STM32のEXTI】</title>
		<link>https://depfields.com/ext-it-apl/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ext-it-apl</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Sun, 14 Jun 2020 02:56:44 +0000</pubDate>
				<category><![CDATA[外部割り込みを使ったアプリ]]></category>
		<category><![CDATA[システムクロック・割り込み]]></category>
		<guid isPermaLink="false">https://depfields.com/?page_id=3348</guid>

					<description><![CDATA[<p>外部入力信号による割り込みアプリケーションの例です。外部割り込み特有部分の解説をします。 設定仕様：入力：PC13　フローティング入力&#160;押しボタンスイッチ出力：PA5　プッシュプル出力+500Ω+LED ポイン [&#8230;]</p>
<p>The post <a href="https://depfields.com/ext-it-apl/">外部入力割り込みアプリ【STM32のEXTI】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img width="640" height="427" src="https://depfields.com/wp-content/uploads/2020/06/2783744_s.jpg" class="attachment-large size-large wp-post-image" alt="" decoding="async" srcset="https://depfields.com/wp-content/uploads/2020/06/2783744_s.jpg 640w, https://depfields.com/wp-content/uploads/2020/06/2783744_s-300x200.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /></div>
<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><a href="https://depfields.com/interrupt/" target="_blank" rel="noreferrer noopener" title="STM32マイコンの外部割り込みEXTI">STM32マイコンの外部割り込みEXTI</a></strong>のアプリケーションです。押ボタンスイッチを割り込み入力として、出力LEDのON/OFFを切り替える応用例です。割り込み入力は敏感なので使用時にはチャタリング防止などの注意が必要です。 </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: #ffffea; padding: 8px 19px; margin: 2em 0; border-top: solid 10px #00ccff; solid 5px #1a66ff; box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.33); word-break: break-all;">
<p><strong>設定仕様：</strong><br><strong>入力</strong>：<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">PC13</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>&nbsp;押しボタンスイッチ<br><strong>出力</strong>：<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">PA5</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>+500Ω+LED</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>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/06/gpio_NUCLEO.jpg" alt="" class="wp-image-5156" width="323" height="265"/><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><a>サンプルプログラム Exti.c</a>では<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">押しボタンSW入力による割り込み</span></strong>が入るたびにフラグinterrupt_flag状態を切り替え、その状態に応じて出力LEDを点灯させたり、消灯させたりするプログラムです。</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>割り込みを使用するためのNVIC設定を行い、優先度や使用する割り込みチャネルを指定します。PC13からの入力による割り込みの場合は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">EXTI5_10_IRQn</span></strong>(EXTIライン[I5:10]割り込み)を割り込みチャネルに指定します。</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>割り込み入力は敏感で押しボタンSWでは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">チャタリングが発生</span></strong>するので割り込み入力後の1000ms間は次の割り込みを受け付けないようにしています。プログラム無限ループのサイクルタイムをdelay_ms関数で1msとして1000msをカウントしています。</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>EXTI_GetITStatus(EXTI_Line13)</strong>で<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ピン13</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>外部割り込みを使用する場合は<strong><span class="vk_highlighter" style="background-image: linear-gradient(transparent 60%, rgba(255, 253, 107, 0.7) 0px); background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;" data-color="#fffd6b">GPIO</span></strong>に加えて、<strong><span class="vk_highlighter" style="background-image: linear-gradient(transparent 60%, rgba(255, 253, 107, 0.7) 0px); background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;" data-color="#fffd6b">AFIOにクロックを供給</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='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/exti/'>外部入力割り込み</a></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 3.78 KB</div>
            </div>
            <div class="ml-3">
                <a href='#unlock' class='wpdm-download-link wpdm-download-locked btn btn-primary ' data-package='3357'>ダウンロード</a>
            </div>
        </div>
    </div>
</div>

</div>



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



<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/ext-it-apl/" 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/152030e09ca39c4c4db1815fd0b1dc3183a99ce32e503f1a6d70c915c89a266e.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">External input interrupt application [EXTI for STM32] | Most Powerful Bible t...</div></div><div class="lkc-url">https://en.depfields.com/ext-it-apl/</div><div class="lkc-excerpt">This is an example of an interrupt application with an external input signal. The following is an explanation of the unique part of external interrupts. This is an application of the EXTI external interrupt for the STM32 MCU. This is</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/ext-it-apl/">外部入力割り込みアプリ【STM32のEXTI】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>SysTick割り込みアプリ【STM32のSysTick】</title>
		<link>https://depfields.com/systick-it-apl/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=systick-it-apl</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Sun, 14 Jun 2020 00:49:30 +0000</pubDate>
				<category><![CDATA[SYSTIC割り込みを使ったアプリ]]></category>
		<category><![CDATA[システムクロック・割り込み]]></category>
		<guid isPermaLink="false">https://depfields.com/?page_id=3342</guid>

					<description><![CDATA[<p>ペリフェラルを使わないARMコアに備わったSysTickタイマを利用した割り込みのアプリケーションです。 設定仕様：出力：PA5: プッシュプル出力+500Ω+LED コラム SysTick割り込みを使用することができる [&#8230;]</p>
<p>The post <a href="https://depfields.com/systick-it-apl/">SysTick割り込みアプリ【STM32のSysTick】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img width="423" height="400" src="https://depfields.com/wp-content/uploads/2020/06/2783744_t.jpg" class="attachment-large size-large wp-post-image" alt="" decoding="async" srcset="https://depfields.com/wp-content/uploads/2020/06/2783744_t.jpg 423w, https://depfields.com/wp-content/uploads/2020/06/2783744_t-300x284.jpg 300w" sizes="(max-width: 423px) 100vw, 423px" /></div>
<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">ペリフェラルを使わないARMコアに備わった<strong><a href="https://depfields.com/systimer/" target="_blank" rel="noreferrer noopener">SysTickタイマ</a></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><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">Systick割り込み</span></strong>をつかったLED点滅プログラムです。<br><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">Systickタイマで割り込みを1秒毎に発生</span></strong>させてLEDのON/OFFを切り替えています。</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>システムクロック72MHzを8分周したクロックをsystickタイマとして割り込みを発生させて処理させるプログラムです。</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>割り込みハンドラSysTick_Handler内ではトグルフラグを切り替えるだけのシンプルなプログラムです。メインプログラム内でトグルフラグの状態に応じて出力LEDを切り替えます。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/06/gpio_NUCLEO.jpg" alt="" class="wp-image-5156" width="323" height="265"/><figcaption>SysTick割り込み出力LED</figcaption></figure>



<div style="background: #ffffea; padding: 8px 19px; margin: 2em 0; border-top: solid 10px #00ccff; solid 5px #1a66ff; box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.33); word-break: break-all;">
<p><strong>設定仕様：</strong><br><strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">出力：PA5: プッシュプル出力</span></strong>+500Ω+LED</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='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/systick/'>SysTick割り込み</a></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 2.01 KB</div>
            </div>
            <div class="ml-3">
                <a href='#unlock' class='wpdm-download-link wpdm-download-locked btn btn-primary ' data-package='3346'>ダウンロード</a>
            </div>
        </div>
    </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 style="text-align: left;">SysTick割り込みを使用することができるのは<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">FreeRTOSを使用しない環境であることが条件</span></strong>です。FreeRTOS自体がOSのタイマにSysTickをすでに使用しているからです。当サイトでの開発環境はFreeRTOSを使用する設定となっていますので、<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">SysTick割り込みを使用する場合は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><strong>「Project」</strong>- <strong>「Properties」</strong>-<strong>「C/C++ General」</strong>-<strong>「Paths and Symbols」</strong>の順で<strong>「<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">Source Location</span>」</strong>タブを選択します。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">…\Sourceフォルダのパスを一時的に外してFreeRTOSを無効</span></strong>にしておきます。アプリプログラム内にFreeRTOS関連のヘッダファイルを含んでいなくても、このパスが通っているとどうもSysTickはFreeRTOSと干渉して動作しないようです。</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> あるいは、「Source」フォルダにあるFreeRTOSConfig.h内でシステム割り込みハンドラ名をFreeRTOS用(SVC_Handler/PendSV_Handler/SysTic_Handlerの3行）に書き替えているものを<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-sm--margin-top"></div></div>


<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/systick-it-apl/" 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/3b25561414765a9ba3e56a374f54dac1d7eb64835c125782b2c9ab3fa4f7ef33.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">SysTick interrupt application [SysTick for STM32] | Most Powerful Bible to Be...</div></div><div class="lkc-url">https://en.depfields.com/systick-it-apl/</div><div class="lkc-excerpt">This is an application for interrupts using the SysTick timer provided in the ARM core without using peripherals.This is a program for blinking LEDs using Systick interrupts.The Systick timer generates an interrupt every second to swi</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/systick-it-apl/">SysTick割り込みアプリ【STM32のSysTick】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>さまざまな割り込み【STM32の割り込み詳細】</title>
		<link>https://depfields.com/interrupt/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=interrupt</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Sat, 06 Jun 2020 13:43:35 +0000</pubDate>
				<category><![CDATA[各周辺機能(ペリフェラル)詳細]]></category>
		<category><![CDATA[システムクロック・割り込み]]></category>
		<guid isPermaLink="false">https://depfields.com/?page_id=2432</guid>

					<description><![CDATA[<p>ハードウェアを制御する組み込みプログラミングでは割り込み処理を避けては通れないでしょう。STM32マイコンの割り込み処理はARMコアCortex-M3のルールに基づいているため、ルールの仕組みを理解して割り込み処理設定や [&#8230;]</p>
<p>The post <a href="https://depfields.com/interrupt/">さまざまな割り込み【STM32の割り込み詳細】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img width="640" height="427" src="https://depfields.com/wp-content/uploads/2020/06/2783744_s.jpg" class="attachment-large size-large wp-post-image" alt="" decoding="async" srcset="https://depfields.com/wp-content/uploads/2020/06/2783744_s.jpg 640w, https://depfields.com/wp-content/uploads/2020/06/2783744_s-300x200.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /></div>
<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">ハードウェアを制御する組み込みプログラミングでは割り込み処理を避けては通れないでしょう。STM32マイコンの割り込み処理はARMコアCortex-M3のルールに基づいているため、ルールの仕組みを理解して割り込み処理設定や処理内容を記述する必要があります。この章ではARMコアCortex-M3特有の割り込みについてプログラム例を使用して解説しています。</p>







<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">割り込み</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/06/interrupt.jpg" alt="" class="wp-image-2435" width="412" height="300" srcset="https://depfields.com/wp-content/uploads/2020/06/interrupt.jpg 420w, https://depfields.com/wp-content/uploads/2020/06/interrupt-300x219.jpg 300w" sizes="(max-width: 412px) 100vw, 412px" /><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>割り込み機能はタイマをはじめ、ADコンバータ、UARTシリアル通信などのペリフェラルにもそれぞれ備わっていますので組み合わせて使用すれば、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>ここでは前章のながれでタイマに備わった割り込みの機能を使って解説していきます。</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>前章ではタイマを出力比較モードで入力クロックのカウント数をキャプチャコンペアレジスタ（CCR）で設定した値と比較してGPIO出力ポートを操作していました。ここでは<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>割り込みを利用するためにはどのペリフェラルを使う場合も共通することですが、各ペリフェラルの設定の他に<br>① <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><br>③<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>それではプログラムでの設定を解説していきましょう。</p>
</div></div></div>



<figure class="wp-block-image size-large"><img decoding="async" width="571" height="522" src="https://depfields.com/wp-content/uploads/2020/06/interrupt-setting.jpg" alt="" class="wp-image-2510" srcset="https://depfields.com/wp-content/uploads/2020/06/interrupt-setting.jpg 571w, https://depfields.com/wp-content/uploads/2020/06/interrupt-setting-300x274.jpg 300w" sizes="(max-width: 571px) 100vw, 571px" /><figcaption>割り込み初期化設定</figcaption></figure>



<p><span style="background-color: #003300; color: #ffffff;">&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>ペリフェラル（周辺機能）の割り込みはARMコアマイコンでは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">NVIC</span></strong>（<strong>N</strong>ested <strong>V</strong>ectord <strong>I</strong>nterrupt <strong>C</strong>ontoller）が管理しています。NVICとは<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">ベクタ</span>は割り込みの要因を示す<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>によって、<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>ARM Cortex-M3コアマイコンでは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">NVICがペリフェラルの割り込みをすべて管理</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">NVICの設定により行われます</span></strong>。<strong>NVICは各ペリフェラルで発生した割り込みをどの優先順位でどう処理するかの設定をする部分</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>NVICの設定は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">NVIC_Init関数</span></strong>で行います。指定するパラメータは構造体変数のメンバで4種類あります。</p>
</div></div></div>



<figure class="wp-block-image size-large"><img decoding="async" width="720" height="132" src="https://depfields.com/wp-content/uploads/2020/06/nvic-setting-parameter.jpg" alt="" class="wp-image-2443" srcset="https://depfields.com/wp-content/uploads/2020/06/nvic-setting-parameter.jpg 720w, https://depfields.com/wp-content/uploads/2020/06/nvic-setting-parameter-300x55.jpg 300w" sizes="(max-width: 720px) 100vw, 720px" /><figcaption>NVIC設定パラメータ</figcaption></figure>



<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>NVIC_IRQChannel</strong>に設定するのは使用する割り込み種別で<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">NVIC_IRQChannel一覧表から選択</span></strong>します。これらは<strong>ライブラリ<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">stm32f10x.h内に定義されたマクロ</span></strong>です。例えば、TIM5のCH4キャプチャコンペア割り込みでは<strong>TIM5_IRQn</strong>（TIM5グローバル割り込み）が相当しています。</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>です。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">NVIC_IRQChannelPreemptionPriority</span></strong>に 0から15まで指定でき、数値が小さくなるほど優先度は高くなります。<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>
</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>例えば、グループ優先度1の割り込み処理Aを実行中にグループ優先度0の割り込み処理Bが発生すると処理Aを中断して処理Bに移ります。また、グループ優先度0の割り込み処理Bの実行中にグループ優先度1の割り込み処理Aが発生しても、割り込み処理Bは継続します。割り込み処理Aを実行中に同じグループ優先度の割り込み処理Cが発生すると、割り込み処理Aは継続し、終了後処理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>同じグループ優先度を持つ複数の割り込み処理が同時に発生していて実行待ちになっている場合に次にどの割り込み処理から処理するかを決めるのが<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">NVIC_IRQChannelSubPriority</span></strong>に0から15まで指定でき、数値が小さくなるほど優先度は高くなります。<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>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/06/priority.jpg" alt="" class="wp-image-2446" width="384" height="402" srcset="https://depfields.com/wp-content/uploads/2020/06/priority.jpg 384w, https://depfields.com/wp-content/uploads/2020/06/priority-287x300.jpg 287w" sizes="(max-width: 384px) 100vw, 384px" /><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>優先度は4ビット分の16通り(0 – 15)の割り当てができるのですが、STM32ではグループ優先度、サブ優先度の割り当ては組み合わせに指定があり、それぞれが0から15までの16通りで割り当てできるのではなく、グループ優先度とサブ優先度合わせて4ビット分つまり、16通りの割り当てをするようになっています。</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>NVIC_IRQChannelPreemptionPriority関数で指定</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>NVIC_PriorityGroup_4</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-full"><img decoding="async" width="539" height="331" src="https://depfields.com/wp-content/uploads/2020/06/priority-group.jpg" alt="" class="wp-image-11457" srcset="https://depfields.com/wp-content/uploads/2020/06/priority-group.jpg 539w, https://depfields.com/wp-content/uploads/2020/06/priority-group-300x184.jpg 300w" sizes="(max-width: 539px) 100vw, 539px" /><figcaption>NVICグループ優先度</figcaption></figure>



<p>NVIC_IRQChannelPreemptionPriority()関数の実行例：<br>NVIC_IRQChannelPreemptionPriority(NVIC_PriorityGroup_4);</p>



<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>割り込みの優先度設定は複数の割り込みが同時に発生するような場合に使われるものですが、比較的単純な割り込みの場合は、グループ優先度のみ(NVIC_PriorityGroup_4)の設定でよいと思います。</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><span style="background-color: #003300; color: #ffffff;">&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>割り込みの初期化でNVICを設定した後は、各ペリフェラルで割り込みを発生させてNVICに対してどんな割り込みが発生したかを通知するための設定を行います。タイマ割り込みの例では<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">TIM_ITConfig関数</span></strong>を使用します。</p>
</div></div></div>



<p>TIM_ITConfig()関数の実行例：<br>TIM_ITConfig (TIM5, TIM_IT_CC4, <em>ENABLE</em>);</p>



<p><strong>第1引数</strong>は<strong>設定対象タイマ</strong>を指定します。<br>■　設定対象タイマ : TIM1 – TIM8</p>



<p><strong>第２引数</strong>は<strong>有効にする割り込みを下記いずれかのマクロで指定</strong>します。</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/06/timer-intrrupt.jpg" alt="" class="wp-image-2449" width="400" height="242" srcset="https://depfields.com/wp-content/uploads/2020/06/timer-intrrupt.jpg 408w, https://depfields.com/wp-content/uploads/2020/06/timer-intrrupt-300x182.jpg 300w" sizes="(max-width: 400px) 100vw, 400px" /></figure>



<p><strong>第３引数</strong>は<strong>有効か無効を指定</strong>します。<br>■　ENABLE : 有効<br>■　DISABLE : 無効<br>以上でペリフェラルの割り込みは有効になりました。</p>



<p><span style="background-color: #003300; color: #ffffff;">&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>割り込みが発生すると<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>おりこれもNVIC_IRQChannel一覧表に記載していますので参照してください。ここでは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">TIM5_IRQHandler()関数</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>TIM5の場合、割り込みが発生するたびに<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">割込みハンドラ関数TIM5_IRQHandler()関数</span></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>対象の割り込みが発生しているかどうかを<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">TIM_GetITStatus関数</span></strong>を使用します。</p>
</div></div></div>



<p>割り込みステータスの実行例：<br>if(<strong>TIM_GetITStatus</strong>(TIM5, TIM_IT_CC4) != RESET){<br><strong>TIM_ClearITPendingBit</strong>(TIM5, TIM_IT_CC4);<br><strong>&nbsp; [割り込み時の処理]</strong><br>}</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">関数の第1、第2引数はTIM_ITConfit関数と同じです。この関数はステータスフラグを示す戻り値があって、<br>■　SET : 割り込みが発生している<br>■　RESET : 割り込みは発生していない</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">ステータスフラグがRESETでないならばTIM5のCH4キャプチャコンペア割り込みが発生</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>があります。割り込みステータスフラグをクリアにするには<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">TIM_ClearITPendingBit関数を使用</span></strong>します。</p>
</div></div></div>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">割り込みステータスフラグクリア関数の実行例 : <strong>TIM_ClearITPendingBit(TIM5,</strong><strong> TIM_IT_CC4)</strong>;</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">この関数の第1、第2引数もTIM_ITConfit関数と同じです。</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>を記述するだけです。通常、<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>例えば、シリアル通信の受信があったときに割り込みを発生させる場合には割り込み処理で受信処理すべてを実行するのではなく、受信通知フラグ（受信時に1、それ以外では0）をたてるだけで、フラグの状態に応じて処理自体はメインプログラムで行うようにすれば割り込み処理の負担はなくなります。</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>これまでは汎用タイマTIM5で割り込み動作の例を紹介してきました。次に外部入力による割り込みを紹介します。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/06/interrupt-input.jpg" alt="" class="wp-image-2499" width="451" height="223" srcset="https://depfields.com/wp-content/uploads/2020/06/interrupt-input.jpg 451w, https://depfields.com/wp-content/uploads/2020/06/interrupt-input-300x148.jpg 300w" sizes="(max-width: 451px) 100vw, 451px" /><figcaption><br>外部入力割り込み</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>PD10の入力を割り込みとするアプリでは入力ポートPD10に信号がはいると通常処理が中断して割り込みハンドラEXTxxxx_IRQHandler()関数に処理が移ります。</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><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">割り込み信号ピンに使用するGPIOにもクロックを供給し、ピンを入力に設定しておきます</span></strong>。(PD_10)</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/06/interrupt-application.jpg" alt="" class="wp-image-2503" width="562" height="595"/><figcaption>外部入力割り込み</figcaption></figure>



<p><span style="background-color: #003300; color: #ffffff;">&nbsp;①　AFIOクロックの供給：</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><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">EXTIを使用する場合はAFIOクロックを供給しておく必要</span></strong>があります。</p>
</div></div></div>



<p><span style="background-color: #003300; color: #ffffff;">&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>まず、GPIO_EXTILineConfig関数を実行して指定のGPIOポートをEXTIラインに接続します。関数の第1引数にはポートx（AからG）まで（GPIO_PortSourceGPIOx）を指定、第2引数にはピン番号y(0から15)まで(GPIO_PinSourcey)を指定します。</p>
</div></div></div>



<p>GPIO_EXTILineConfig関数実行例（PD10）：　<br><strong>GPIO_EXTILineConfig(GPIO_PortSourceGPIOD, GPIO_PinSource10);</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><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">初期化はEXT_Init関数を実行</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>外部入力割り込みEXTI初期化関数実行例：　<strong>EXTI_Init(&amp;EXTI_InitStructure);</strong></p>



<figure class="wp-block-image size-large"><img decoding="async" width="609" height="215" src="https://depfields.com/wp-content/uploads/2020/06/exti_line.jpg" alt="" class="wp-image-2456" srcset="https://depfields.com/wp-content/uploads/2020/06/exti_line.jpg 609w, https://depfields.com/wp-content/uploads/2020/06/exti_line-300x106.jpg 300w" sizes="(max-width: 609px) 100vw, 609px" /></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>EXTI_Line</strong>メンバでは割り込みに使用する入力ポートを指定します。EXTIラインは20本あり、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ピンx（0-15）までの16本はピン番号に相当したEXTI_Linexを指定</span></strong>します。他の4本EXTIライン16-19はイベントラインによるウェイクアップを行う場合に使用します。</p>
</div></div></div>



<figure class="wp-block-image size-large"><img decoding="async" width="602" height="117" src="https://depfields.com/wp-content/uploads/2020/06/exti_mode.jpg" alt="" class="wp-image-2457" srcset="https://depfields.com/wp-content/uploads/2020/06/exti_mode.jpg 602w, https://depfields.com/wp-content/uploads/2020/06/exti_mode-300x58.jpg 300w" sizes="(max-width: 602px) 100vw, 602px" /></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>EXTI_Mode</strong>メンバではEXTIを割り込みモードで使用するかイベントモードで使用するかを指定します。</p>
</div></div></div>



<figure class="wp-block-image size-large"><img decoding="async" width="616" height="118" src="https://depfields.com/wp-content/uploads/2020/06/exti_trigger.jpg" alt="" class="wp-image-2458" srcset="https://depfields.com/wp-content/uploads/2020/06/exti_trigger.jpg 616w, https://depfields.com/wp-content/uploads/2020/06/exti_trigger-300x57.jpg 300w" sizes="(max-width: 616px) 100vw, 616px" /></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>EXTI_Trigger</strong>メンバでは割り込み・イベントを発生させるラインエッジを指定します。</p>
</div></div></div>



<figure class="wp-block-image size-large"><img decoding="async" width="594" height="118" src="https://depfields.com/wp-content/uploads/2020/06/exti_linecmd.jpg" alt="" class="wp-image-2459" srcset="https://depfields.com/wp-content/uploads/2020/06/exti_linecmd.jpg 594w, https://depfields.com/wp-content/uploads/2020/06/exti_linecmd-300x60.jpg 300w" sizes="(max-width: 594px) 100vw, 594px" /></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><strong>EXTI_LineCmd</strong>メンバではEXTIラインの有効・無効を指定します。</strong></p>
</div></div></div>



<p><span style="background-color: #003300; color: #ffffff;">③　割り込みの初期化：</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>外部入力割り込みの場合は、構造体変数のメンバのNVIC_IRQChannel に ピン番号に応じたIRQチャネルを指定します。ピン10の場合はEXTI15_10_IRQnです。その他の設定は他の割り込みと同様です。</p>
</div></div></div>



<p><span style="background-color: #003300; color: #ffffff;">④　割り込みハンドラに処理内容を記述：</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>割り込みにより呼び出された関数(割り込みハンドラ)に処理したい内容を記述します。</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>呼び出されるハンドラは割り込みラインにより特定のハンドラが呼び出されます。<a><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">割り込みNVIC_IRQChannel一覧表</span></strong></a>に記載したとおりです。</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">ピン0 から 4までは</span></strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">それぞれに対する</span><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">割り込みハンドラEXTI0_IRQHandler()</span></strong><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">EXTI4_IRQHandler()</span></strong>が<strong>独立して</strong>呼び出されるのですが、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ピン5から9まではEXTI9_5_IRQHandler()</span></strong>が、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ピン10から15まではEXTI15_10_IRQHander()</span></strong>が呼び出されます。したがって、ピン5から15までの場合は呼び出された割り込みハンドラ内でどのピンからの割り込みなのかの<strong>識別のために、EXTI_GetITStatus(EXTI_Linex)ピン番号x(5-15）で確認</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">EXTI_ClearITPendingBit関数を使用</span></strong>します。</p>
</div></div></div>



<p>割り込みステータスフラグクリア関数の実行例 : EXTI_ClearITPendingBit(EXTI_Line10);</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>この関数の引数もEXTI_GetITStatus関数と同じです。</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>割り込みにはほかにADコンバータ、UARTシリアル通信などの割り込みがあります。<strong>ペリフェラルライブラリでの関数名や、引数名は異なりますが使い方の流れはタイマのときとほぼ同じ</strong>です。実際の使用方法につきましては改めて、<strong>アプリケーションと実際の章</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">割り込みNVIC_IRQChannel一覧表</h2>



<figure class="wp-block-image size-large"><img decoding="async" width="742" height="621" src="https://depfields.com/wp-content/uploads/2020/06/nvic1.jpg" alt="" class="wp-image-2460" srcset="https://depfields.com/wp-content/uploads/2020/06/nvic1.jpg 742w, https://depfields.com/wp-content/uploads/2020/06/nvic1-300x251.jpg 300w" sizes="(max-width: 742px) 100vw, 742px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="740" height="539" src="https://depfields.com/wp-content/uploads/2020/06/nvic2.jpg" alt="" class="wp-image-2461" srcset="https://depfields.com/wp-content/uploads/2020/06/nvic2.jpg 740w, https://depfields.com/wp-content/uploads/2020/06/nvic2-300x219.jpg 300w" sizes="(max-width: 740px) 100vw, 740px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="741" height="573" src="https://depfields.com/wp-content/uploads/2020/06/nvic3.jpg" alt="" class="wp-image-2462" srcset="https://depfields.com/wp-content/uploads/2020/06/nvic3.jpg 741w, https://depfields.com/wp-content/uploads/2020/06/nvic3-300x232.jpg 300w" sizes="(max-width: 741px) 100vw, 741px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="750" height="556" src="https://depfields.com/wp-content/uploads/2020/06/nvic4.jpg" alt="" class="wp-image-2463" srcset="https://depfields.com/wp-content/uploads/2020/06/nvic4.jpg 750w, https://depfields.com/wp-content/uploads/2020/06/nvic4-300x222.jpg 300w" sizes="(max-width: 750px) 100vw, 750px" /></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="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/interrupt/" 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/152030e09ca39c4c4db1815fd0b1dc3183a99ce32e503f1a6d70c915c89a266e.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">Various interrupts [Interrupt details in STM32] | Most Powerful Bible to Beco...</div></div><div class="lkc-url">https://en.depfields.com/interrupt/</div><div class="lkc-excerpt">Interrupt processing is unavoidable in embedded programming that controls hardware.  Interrupt processing in the STM32 MCU is based on the rules of the ARM Core Cortex-M3, so it is necessary to understand how the rules work and to write th</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/interrupt/">さまざまな割り込み【STM32の割り込み詳細】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>システムタイマ【STM32のSysTickタイマ詳細】</title>
		<link>https://depfields.com/systimer/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=systimer</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Thu, 04 Jun 2020 15:01:59 +0000</pubDate>
				<category><![CDATA[各周辺機能(ペリフェラル)詳細]]></category>
		<category><![CDATA[システムクロック・割り込み]]></category>
		<guid isPermaLink="false">https://depfields.com/?page_id=2240</guid>

					<description><![CDATA[<p>&#160;分周した9MHzのシステムクロックをSysTickタイマとした割り込み： &#160;①　SysTickタイマのカウンタ値を設定&#160; &#160;②　システムクロック源を指定&#160; 引数にはAH [&#8230;]</p>
<p>The post <a href="https://depfields.com/systimer/">システムタイマ【STM32のSysTickタイマ詳細】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img width="640" height="480" src="https://depfields.com/wp-content/uploads/2020/06/stopwatch-2624277_640.jpg" class="attachment-large size-large wp-post-image" alt="" decoding="async" srcset="https://depfields.com/wp-content/uploads/2020/06/stopwatch-2624277_640.jpg 640w, https://depfields.com/wp-content/uploads/2020/06/stopwatch-2624277_640-300x225.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /></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><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">SysTickタイマ</span></strong>と呼ばれARM Cortex-M3シリーズに<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">CPUコアの一部</span></strong>として備えているシンプルなタイマです。次章で解説するペリフェラルの汎用タイマはとても高機能ですが反面、設定も多岐項目にわたるため、設定も多岐項目にわたるため、ちょっとした用途にはSysTickタイマを使うと便利です。</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>SysTickタイマ</strong>はSTMマイコンの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">AHBクロックHCLK</span></strong>をカウントします。SysTickタイマはダウンカウンタで値を設定するとカウントダウンしていき、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><strong>SysTickタイマ</strong>は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">設定した期間のサイクルで割り込みを発生</span></strong>させますのでちょっとした用途、例えばある処理を1秒ごと周期的に実行させるのにSysTickタイマを使うと簡単です。SysTickタイマの割込み機能を1秒ごと発生させてそのたびに割り込み処理を実行させるのです。例を示して解説します。</p>
</div></div></div>



<p><span style="background-color: #003300; color: #ffffff;">&nbsp;分周した9MHzのシステムクロックをSysTickタイマとした割り込み：</span></p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/06/systic-timer.jpg" alt="" class="wp-image-2242" width="446" height="277" srcset="https://depfields.com/wp-content/uploads/2020/06/systic-timer.jpg 442w, https://depfields.com/wp-content/uploads/2020/06/systic-timer-300x187.jpg 300w" sizes="(max-width: 446px) 100vw, 446px" /><figcaption>SysTickタイマを使った1 秒ごとの割り込み</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>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/06/SysTickタイマの設定手順.jpg" alt="" class="wp-image-2248" width="434" height="300" srcset="https://depfields.com/wp-content/uploads/2020/06/SysTickタイマの設定手順.jpg 434w, https://depfields.com/wp-content/uploads/2020/06/SysTickタイマの設定手順-300x207.jpg 300w" sizes="(max-width: 434px) 100vw, 434px" /><figcaption>SysTickタイマによる割り込み設定</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">72MHzのシステムクロックの場合</span></strong>はデフォルト設定値(<strong>SystemCoreClock</strong>)が<strong>72M</strong>(7200万)のため、そのまま<strong>SystemCoreClock</strong>を設定値としてしまうと1秒間72M回のカウントを繰り返します。</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">SysTickタイマについているカウンタは24ビット</span></strong>なのでカウントできる上限は最大2<sup>24</sup>の16,777,216でこの制限値を超えないように設定しなければいけません。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">8分の1に分周したもの</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>システムクロックが72MHz</strong>の場合は<strong>カウンタ上限を超えています</strong>ので<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">8分の1に分周したもの</span></strong>を使用します。</p>
</div></div></div>



<p><span style="background-color: #003300; color: #ffffff;">&nbsp;①　SysTickタイマのカウンタ値を設定&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>SysTickタイマのカウンタ値を設定するには<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">SysTickConfig()関数</span></strong>を使用します。1秒サイクルの割込みを発生させるにはシステムクロックそのままの場合には関数の引数はカウンタ設定値<strong>SystemCoreClock</strong>となりますが、8分周したクロックを使用する場合は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">SystemCoreClock/8</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>プログラムでは実行例でSysTick_Config関数の戻り値（正常の場合は0、タイマのカウント上限を超えるなど不正なtickが与えられると1）をチェックして正常実行を確認してから次の処理に進んでいます。</p>
</div></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"><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">SysTick_CLKSourceConfig()関数</span></strong>を使用します。</p>
</div></div></div>



<p><strong>引数には<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">AHBクロックそのまま</span>か、<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">8分周したクロック</span>を指定</strong>します。</p>



<p>■　<strong>SysTick_CLKSource_HCLK</strong> : AHBクロックそのまま<br>■　<strong>SysTick_CLKSource_HCLK_Div8</strong> : AHBクロックを8分周したもの</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;③　割り込み処理の記述&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><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">SysTickConfig()関数を実行</span></strong>したことで<strong>割り込みは有効</strong>となりました。SysTickクロックによる割り込みが発生した場合には<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">専用割り込み処理関数SysTick_Handler()関数</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>上記プログラム例では1秒サイクルの割り込みを発生させるものでした。<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">SysTick_Config()関数の引数（カウント設定値）を変える</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>例えば上記プログラムの条件でSysTick_Config(SystemCoreClock/8 /1000)とすると、1msサイクルで割り込みが発生し、割り込み関数SysTick_Hander()が呼び出されますので、そのたびに1だけ値を増やすか、減らすかの処理を記述しておけば、簡単に<strong>1msタイマ</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>この章で紹介して解説したSysTickクロックを利用した簡単なタイマ機能を使えばマイコンプログラムでよく使用するdelay関数などを簡単に最低限のコードで作成できるようになります。</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/systimer/" 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/eb7fffe1ee4d24da8e47090d0c9c5481b6b931ced1c6e540b5bd579152c3d5d8.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">System timer[SysTick timer details for STM32] | Most Powerful Bible to Become...</div></div><div class="lkc-url">https://en.depfields.com/systimer/</div><div class="lkc-excerpt">The system timer is called the SysTick timer and is a simple timer provided in the ARM Cortex-M3 series as part of the CPU core. The general-purpose peripheral timers described in the next chapter are very sophisticated, but on the ot</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/systimer/">システムタイマ【STM32のSysTickタイマ詳細】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>システムクロック【STM32のSYSCLK設定詳細 】</title>
		<link>https://depfields.com/sysclk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sysclk</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Thu, 04 Jun 2020 11:01:04 +0000</pubDate>
				<category><![CDATA[各周辺機能(ペリフェラル)詳細]]></category>
		<category><![CDATA[システムクロック・割り込み]]></category>
		<guid isPermaLink="false">https://depfields.com/?page_id=2157</guid>

					<description><![CDATA[<p>システムクロックはマイコン固有のものですので一度設定すると変更するものではありませんが、しっかり理解することで他のマイコンへの応用ができるようになります。 マイコンのクロック クロック源の種類 クロックの設定 &#038;nbsp [&#8230;]</p>
<p>The post <a href="https://depfields.com/sysclk/">システムクロック【STM32のSYSCLK設定詳細 】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img width="640" height="476" src="https://depfields.com/wp-content/uploads/2020/06/clock-691143_640.jpg" class="attachment-large size-large wp-post-image" alt="" decoding="async" srcset="https://depfields.com/wp-content/uploads/2020/06/clock-691143_640.jpg 640w, https://depfields.com/wp-content/uploads/2020/06/clock-691143_640-300x223.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /></div>
<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">システムクロックはマイコン固有のものですので一度設定すると変更するものではありませんが、しっかり理解することで他のマイコンへの応用ができるようになります。</p>







<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><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">クロック</span></strong>とは組み込み技術の基本の章で説明しましたがマイコンのCPUを始めとし、すべての回路のタイミングとなるパルス信号のことです。組み込み機器でのクロック設定は<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>クロック設定の機能をまとめたブロック関数を作成してしまえば、あとは<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>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/06/clock.jpg" alt="" class="wp-image-2159" width="345" height="162" srcset="https://depfields.com/wp-content/uploads/2020/06/clock.jpg 351w, https://depfields.com/wp-content/uploads/2020/06/clock-300x141.jpg 300w" sizes="(max-width: 345px) 100vw, 345px" /><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>STM32マイコンではクロック信号を供給するのに水晶振動子やセラミック振動子による<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">外部の振動子による発振回路</span></strong>の他に、抵抗器RとコンデンサCで構成される<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">RC発振回路を内蔵</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>です。UART通信など非同期で外部機器と接続する場合にはクロックが不安定であると通信速度が不安定となり通信障害が発生する可能性もあるため、クロックは正確であることが求められます。「<strong><a href="https://depfields.com/extclock/" target="_blank" rel="noreferrer noopener">マイコンの外部クロック</a></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/06/quarts.jpg" alt="" class="wp-image-2163" width="181" height="129"/><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>クロック源を内部にするか外部から与えるかはアプリケーション用途にもよりますので最終的には設計者の判断で行います。</p>
</div></div></div>



<figure class="wp-block-gallery has-nested-images columns-default 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="429" height="191" data-id="2161" src="https://depfields.com/wp-content/uploads/2020/06/clock-supply1.jpg" alt="" class="wp-image-2161" srcset="https://depfields.com/wp-content/uploads/2020/06/clock-supply1.jpg 429w, https://depfields.com/wp-content/uploads/2020/06/clock-supply1-300x134.jpg 300w" sizes="(max-width: 429px) 100vw, 429px" /><figcaption>水晶振動子によるクロック供給1</figcaption></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="374" height="228" data-id="2162" src="https://depfields.com/wp-content/uploads/2020/06/clock-supply2.jpg" alt="" class="wp-image-2162" srcset="https://depfields.com/wp-content/uploads/2020/06/clock-supply2.jpg 374w, https://depfields.com/wp-content/uploads/2020/06/clock-supply2-300x183.jpg 300w" sizes="(max-width: 374px) 100vw, 374px" /><figcaption>水晶振動子によるロック供給２</figcaption></figure>
</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>STMマイコンで利用できるクロック源は4種類あります。<br>ここでは外部発振源を使用した<strong>HSEクロック</strong>から<strong>システムクロック</strong>を生成し、<strong>各ペリフェラルに供給するクロックを設定する方法</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/06/clock-source.jpg" alt="" class="wp-image-2186" width="480" height="152"/><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>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-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>高速の動作周波数を実現するのに例えば200MHzのシステムクロックで動作させたいために200MHzの外部発振源を使用すれば簡単のようですが、<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とは違って放熱性の悪い環境での使用に耐えなければならない場合も多いので<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">PLL回路（位相同期回路）</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-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>PLL回路</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/06/pll-circuit.jpg" alt="" class="wp-image-2165" width="524" height="190" srcset="https://depfields.com/wp-content/uploads/2020/06/pll-circuit.jpg 553w, https://depfields.com/wp-content/uploads/2020/06/pll-circuit-300x109.jpg 300w" sizes="(max-width: 524px) 100vw, 524px" /><figcaption>PLL回路によるクロックの逓倍と分周</figcaption></figure>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/06/clock-tree.jpg" alt="" class="wp-image-2166" width="609" height="573" srcset="https://depfields.com/wp-content/uploads/2020/06/clock-tree.jpg 735w, https://depfields.com/wp-content/uploads/2020/06/clock-tree-300x282.jpg 300w" sizes="(max-width: 609px) 100vw, 609px" /><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>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>が作成されます。</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-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>で<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>です。このクロックの構成はSTM32マイコンに限られたものではなく<strong>どのマイコンでも使われているもの</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/06/clock-code.jpg" alt="" class="wp-image-2167" width="623" height="178" srcset="https://depfields.com/wp-content/uploads/2020/06/clock-code.jpg 622w, https://depfields.com/wp-content/uploads/2020/06/clock-code-300x86.jpg 300w" sizes="(max-width: 623px) 100vw, 623px" /><figcaption>クロックコード</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>それでは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">外部発振HSE</span></strong>に<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">8MHzの水晶振動子</span></strong>を使用した場合の例で解説していきます。システムクロック<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">SYSCLK</span></strong>を72MHz,APB1ペリフェラルクロック<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">PCLK1</span></strong>を18MHz, APB2ペリフェラルクロック<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">PCLK2</span></strong>を72MHzのクロック設定手順は以下の通りです。</p>
</div></div></div>



<figure class="wp-block-image size-large"><img decoding="async" width="612" height="476" src="https://depfields.com/wp-content/uploads/2020/06/clock-setting-procedure.jpg" alt="" class="wp-image-2237" srcset="https://depfields.com/wp-content/uploads/2020/06/clock-setting-procedure.jpg 612w, https://depfields.com/wp-content/uploads/2020/06/clock-setting-procedure-300x233.jpg 300w" sizes="(max-width: 612px) 100vw, 612px" /><figcaption>クロック設定の手順</figcaption></figure>



<p><span style="background-color: #003300; color: #ffffff;">&nbsp;①　RCCシステムリセット&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>まず<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">RCC_DeInit関数</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 vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><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>初期状態（内部HSI:8MHz）</strong>ですので、この関数は実行しなくてもよいのですが、<strong>フェールセーフのため実行</strong>しておきます。</p>
</div></div></div>



<p><span style="background-color: #003300; color: #ffffff;">&nbsp;②　外部クロックHSEを有効化&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><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">外部クロックHSEを有効化</span></strong>します。HSE有効化関数<strong>RCC_HSEConfig</strong>の引数は<strong>RCC_HSE_ON</strong>でHSE有効、<strong>RCC_HSE_OFF</strong>でHSE無効となります。</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>RCC_HSE_Bypass</strong>という引数もありますが、これは水晶振動子やセラミック振動子を使わずにOSC_IN端子に外部クロックソースを入力し、HSEをバイパスするときに使用します。</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 vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><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>内部クロックHSI(8MHz)を使用する場合はRCC_HSEConfig()の実行は必要ありません。</p>
</div></div></div>



<p><span style="background-color: #003300; color: #ffffff;">&nbsp;③　HSE準備完了まで待機&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>外部振動子はコンデンサと組み合わせた発振回路ですので起動してからクロックが安定するまでわずかながら時間がかかります。安定するまで待機させるのに<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">RCC_WaitForHSEStartUp関数を実行</span></strong>させて戻り値の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">HSEStartUpStatusを取得</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 vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><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>HSEStartUpStatus </strong>が<strong>SUCCESS(1)</strong>になったら次の過程に進みます。</p>
</div></div></div>



<p><span style="background-color: #003300; color: #ffffff;">&nbsp;④　PLL回路によるPLLCLKの設定&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><strong>PLL回路によるPLLCLKの設定</strong>をします。<br><strong>PLLCLK</strong>は<strong>RCC_PLLConfig関数</strong>を実行させて作成します。</p>
</div></div></div>



<p>設定例：分周比１, 逓倍率９<br>RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);</p>



<p><strong><strong>第1引数には分周比を指定</strong></strong>します。<br>■　RCC_PLLSource_HSI_Div2 : HSIを2分の1に分周し、PLLに供給<br>■　RCC_PLLSource_HSE_Div1 : HSEをそのままPLLに供給<br>■　RCC_PLLSource_HSE_Div2 : HSEを2分の1に分周し、PLLに供給</p>



<p><strong><strong>第２引数には<strong>PLL回路に指定する逓倍を指定</strong>します。</strong></strong><br>■　RCC_PLLMul_x: 2 - 16の整数（<strong>マイコンの上限以下で設定</strong>）</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 vk_block-margin-sm--margin-bottom"><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>上のプログラム例ではHSEクロック8MHzで分周比1、逓倍率9なのでPLLCLKは72MHzとなります。</p>
</div></div></div>



<p><span style="background-color: #003300; color: #ffffff;">&nbsp;⑤　HCLK、PCLK1、PCLK2の分周設定&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>次に、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>HCLK、PCLK1、PCLK2</strong>の分周設定</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>HCLK</strong>は<strong>SYSCLK</strong>を<strong>RCC_HCLKConfig関数</strong>で引数に分周比を指定実行して生成します</p>
</div></div></div>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><strong><strong>引数の分周比：</strong></strong><br>■　RCC_SYSCLK_Div1 : 分周しない<br>■　RCC_SYSCLK_Div2 : 2分の1<br>■　RCC_SYSCLK_Div4 : 4分の1<br>■　RCC_SYSCLK_Div8 : 8分の1<br>■　RCC_SYSCLK_Div16 : 16分の1<br>■　RCC_SYSCLK_Div64 : 64分の1<br>■　RCC_SYSCLK_Div128 : 128分の1<br>■　RCC_SYSCLK_Div256 : 256分の1<br>■　RCC_SYSCLK_Div512 : 512分の1</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 vk_block-margin-sm--margin-bottom"><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">PCLK1</span></strong>、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">PCLK2</span></strong>はHCLKをそれぞれ<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>RCC_PLCK1Config関数</strong>,<strong>RCC_PLCK2Config関数</strong></span>で引数に分周比を指定実行して生成します。</p>
</div></div></div>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><strong><strong>引数の分周比：</strong></strong><br>■　RCC_HCLK_Div1 : 分周しない<br>■　RCC_HCLK_Div2 : 2分の1<br>■　RCC_HCLK_Div4 : 4分の1<br>■　RCC_HCLK_Div8 : 8分の1<br>■　RCC_HCLK_Div16 : 16分の1</p>



<p><span style="background-color: #003300; color: #ffffff;">&nbsp;⑥　PLL回路を有効化する&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>PLL_PLLConfig()関数でPLL回路の逓倍率を設定しましたがこのままではまだ、PLL回路は作動していません。PLL回路の作動開始に<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">RCC_PLLCmd関数</span></strong>を使用します。引数が<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ENABLE</span></strong>でPLL回路を作動させ、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">DISABLE</span></strong>で回路を停止させます。</p>
</div></div></div>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">設定例：<br>RCC_PLLCmd(<em>ENABLE</em>);</p>



<p><span style="background-color: #003300; color: #ffffff;">&nbsp;⑦　SYSCLKソースを選択&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>PLL回路を作動設定しても正常に開始するには多少の時間かかるのでPLL回路の準備が完了したかを確認する<strong>RCC_GetFlagStatus関数</strong>を使用して、この関数の戻り値フラグが<strong>RESET</strong>から<strong>SET</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>RESETの間待機</strong>させています。<strong>RCC_GetFlagStatus関数</strong>はPLL回路以外のさまざまな状態の確認に用いることができます。</p>
</div></div></div>



<p>設定例：<br>RCC_GetFlagStatus(RCC_FLAG_PLLRDY);</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>引数に指定するRCC_FLAGマクロでクロック設定に関するものを記します。設定例ではPLLの準備完了を確認しています。</p>
</div></div></div>



<p><strong><strong>引数（フラグステータス）：</strong></strong><br>■　RCC_FLAG_HSIRDY: HSI準備完了<br>■　RCC_FLAG_HSERDY: HSE準備完了<br>■　RCC_FLAG_PLLRDY: PLL準備完了<br>■　RCC_FLAG_LSIRDY: LSI準備完了<br>■　RCC_FLAG_LSERDY: LSE準備完了</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>その他、RCC_FLAG_PINRST、RCC_FLAG_PRTRST、RCC_FLAG_SFTRST、RCC_FLAG_IWDGRST、RCC_FLAG_WWDGRST、RCC_FLAG_LPWRSTなどがありますので必要に応じて使用します。</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">PLLCLK</span></strong>をシステムクロックの動作周波数<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">SYSCLKに指定</span></strong>します。これは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">RCC_SYSCLKConfig関数を実行して設定</span></strong>します。</p>
</div></div></div>



<p>引数：<br>■　RCC_SYSCLKSource_HSI : PLL回路を経由していないHSIを使用<br>■　RCC_SYSCLKSource_HSE : PLL回路を経由していないHSEを使用<br>■　RCC_SYSCLKSource_PLLCLK : PLL回路を使用</p>



<p>設定例：<br>RCC_SYSLKConfig(RCC_SYSCLKSource_PLLCLK);</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>最後にSYSCLKにPLLCLKが設定されているかどうかを確認するために<strong>RCC_GetSYSCLKCource関数</strong>の戻り値を確認して設定したとおりものであったら完了としています。このプログラムでは<strong>PLLCLK</strong>を設定したので戻り値が0x08になれば設定完了です。</p>
</div></div></div>



<p>戻り値：<br>■　0x00 : HSIが使用されている<br>■　0x04 : HSEが使用されている<br>■　0x08 : PLLCLKが使用されている</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>これまでプログラムを例に設定を解説してきましたが、実際にはこの設定プログラムをそのまま使用し、パラメータ部分だけを変更すればよいとおもいます。設定の流れを理解してもらえばよいと思います。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/06/clock-setting-flow.jpg" alt="" class="wp-image-2177" width="702" height="387" srcset="https://depfields.com/wp-content/uploads/2020/06/clock-setting-flow.jpg 708w, https://depfields.com/wp-content/uploads/2020/06/clock-setting-flow-300x165.jpg 300w" sizes="(max-width: 702px) 100vw, 702px" /><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>



<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/sysclk/" 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/c435f402b7fa51ad0c5e56134605e647ea1bcfe85a23687985ddf45f15480991.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">System Clock[SysClk setting details for STM32] | Most Powerful Bible to Becom...</div></div><div class="lkc-url">https://en.depfields.com/sysclk/</div><div class="lkc-excerpt">The system clock is microcontroller-specific, so once it is set, it is not something that should be changed. However, a thorough understanding of the system clock will enable its application to other microcontrollers.Clock of MCU</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/sysclk/">システムクロック【STM32のSYSCLK設定詳細 】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
