STM32は必須の機能として中断し、その重要性は自明であるため、優れたストップ学習の基本です。
今日はコンフィギュレーションを食べるについての十分な知識を中断するので、諺に:Quickenの仕事を。それはどのような問題がある?プロジェクト私はタッチキーボードのTTP229を使用し、結果のキーボードをテストするときは、パスワードを入力することはできません?最後に、デバッガは、優先順位のバグが中断による影響を受けています。
このプロジェクトは、MCUのSTM32F030C8型を使用することで、我々はこのタイプMCUの外部割り込みベクタテーブルを表示し、アセンブリファイルを開始するには、標準のライブラリファイルへの公式からダウンロードすることができます。(下図)
まず、私たちが見て何NVIC市、中core_cm0.h標準ライブラリ・ファイル内のNVIC構造。
その中で、我々は一般的ISER、ICER、IPこれらの3つのレジスタを使用します。ISERが割り込みをクリアするために、割り込みを有効にするためにICERを使用し、IPは、割り込み優先順位を設定するために使用されます。
第二に、我々は、割り込み優先順位を見て、割り込み優先度がNVIC_IPRxを登録し、このレジスタは、各外部割り込み優先度は合理実際には、それだけで高い使用して、0〜255の範囲で設定することができ、原則的には、8ビットであり、4ビット。これらの4ビットと、2つの優先順位プリエンプション優先に分割され、それに応答して、その後、割り込み優先順位は、以下の状況に分けました:
図1は、異なる先取り優先順位は、ネストされた割込みを含むであろう、先取り優先順位の高い優先度が優先度が実現される、より低い優先順位を先取りします。(注:優先順位を下げ、より高い優先度)
図2に示すように、同一の優先順位プリエンプションはなく、異なる優先順位、応答に優先度の高い応答に応答して、ネストされた割り込みに関連します。(例:それは最初の応答割り込み高い優先度を実行する対応しながら2つの割り込み、)(注:優先順位番号が低いほど、優先順位が高いです)
図3に示すように、優先順位および先取り優先順位に応答が同じで、数、ハードウェア割り込み、より少ない数の割り込み、優先度の高いです。(それらを参照するには、割り込みベクタテーブルから数割り込みハードウェア)
割り込み優先グループは、4割り込み優先順位の用途だけ高いので、その割り込み優先パケットそれぞれの状況を次のとおりです。
最後に、割り込みプログラムの三部作を総括するには:
最初のステップ:具体的に対応するビットをイネーブル割り込みから、周辺割り込みイネーブル。
(:クロックはGPIOを使用するために、我々GPIOポートの前にオンにする必要があり、使用EXTIは、例えば事実ゆえafioクロックをオンにする必要があります)
第二步:初始化NVIC_InitTypeDef结构体,配置中断优先级分组,设置抢占优先级和响应优先级,使能中断请求。
库函数:
NVIC_IRQChannel()设置不同的中断源,在IRQn_Type IRQn结构体寻找自己对应的中断源。
NVIC_IRQChannelPreemptionPriority()设置抢占优先级
NVIC_IRQChannelCmd() 中断使能或者取消使能
第三步:编写中断服务函数,在stm32f0xx_it.c文件中,都有一个根据中断向量表,实现的一个空的中断服务函数,需要我们自己重新编写。
stm32相关的视频资料
(stm32直流电机驱动)
http://www.makeru.com.cn/live/1392_1218.html?s=45051
(时钟系统)
http://www.makeru.com.cn/live/1392_1082.html?s=45051
STM32中断系统
http://www.makeru.com.cn/live/3523_1745.html?s=45051
STM32可以这样玩
http://www.makeru.com.cn/live/4034_1460.html?s=45051
分析STM32的的开发方式
http://www.makeru.com.cn/live/3523_1673.html?s=45051