国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

STM32F407 基本定時(shí)器使用

發(fā)布者:WhisperingWinds最新更新時(shí)間:2024-08-09 來(lái)源: elecfans關(guān)鍵字:STM32F407  基本定時(shí)器 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

介紹STM32F407基本定時(shí)器的配置方法,分別介紹輪詢方式、中斷方式使用定時(shí)器完成定時(shí)。


【1】定時(shí)器介紹

定時(shí)器相關(guān)的章節(jié)在STM32F4xx參考手冊(cè)第14、15、16、17章節(jié)。

img

img

img

img

img

【2】基本定時(shí)器配置示例

增加一個(gè)Timer.c文件,代碼如下


#include 'timer.h'

 /*

 函數(shù)功能:基本定時(shí)器7初始化配置

 函數(shù)形參:

 psc  :預(yù)分頻系數(shù)

 arr  :重載值

 說(shuō)明:定時(shí)器的視頻頻率為84MHZ ,是APB1時(shí)鐘頻率的2倍

 */

 void Time7_InitConfig(u16 psc,u16 arr)

 {

   /*1. 開(kāi)時(shí)鐘*/

   RCC- >APB1ENR|=1< < 5;    //開(kāi)啟定時(shí)器7的時(shí)鐘

   RCC- >APB1RSTR|=1< < 5;   //開(kāi)啟復(fù)位時(shí)鐘  

   RCC- >APB1RSTR&=~(1< < 5);//關(guān)閉  

 

   /*2. 配置定時(shí)器的核心寄存器*/

   TIM7- >PSC=psc-1;     //預(yù)分頻

   /*計(jì)數(shù)器的時(shí)鐘頻率CK_CNT等于fCK_PSC/(PSC[15:0]+1)*/

   TIM7- >ARR=arr;       //重裝載寄存器

   TIM7- >CR1|=1< < 0;     //使能計(jì)數(shù)器

 }

 

Main.c文件中代碼如下


#include 'stm32f4xx.h' // Device header

 #include 'led.h'

 #include 'delay.h'

 #include 'key.h'

 #include 'usart.h'

 #include 'sys.h'

 #include 'exti.h'

 #include 'timer.h'

 

 int main(void)

 {

 LED_Init();

 KEY_Init();

 USART1_Init(84,115200);

 KEY_EXTI_Init();

   /*

 1/84000000得到定時(shí)器加的1的時(shí)間單位us

 1/84000得到定時(shí)器加的1的時(shí)間單位ms

 1/84得到定時(shí)器加的1的時(shí)間單位s   =0.0119047619047619

   */

 Time7_InitConfig(84,1000); //定時(shí)器7初始化

 /*

     分頻84,最終頻率1HMZ  計(jì)數(shù)器CNT+1的時(shí)間是1us

 */

   while(1)

 {

   if(TIM7- >SR&1< < 0)       //判斷時(shí)間是否到達(dá)

 {

   TIM7- >SR&=~(1< < 0);  //清除標(biāo)志位

 LED0=!LED0;

 LED1=!LED1;

 }

 }

 }

 

【3】基本定時(shí)器中斷配置示例

在timer.c文件增加以下代碼


 #include 'timer.h'

 /*

 函數(shù)功能:基本定時(shí)器7初始化配置

 函數(shù)形參:

 psc  :預(yù)分頻系數(shù)

 arr  :重載值

 說(shuō)明:定時(shí)器的視頻頻率為84MHZ ,是APB1時(shí)鐘頻率的2倍

 */

 void Time7_InitConfig(u16 psc,u16 arr)

 {

   /*1. 開(kāi)時(shí)鐘*/

   RCC- >APB1ENR|=1< < 5;    //開(kāi)啟定時(shí)器7的時(shí)鐘

   RCC- >APB1RSTR|=1< < 5;   //開(kāi)啟復(fù)位時(shí)鐘  

   RCC- >APB1RSTR&=~(1< < 5);//關(guān)閉  

 

   /*2. 配置定時(shí)器的核心寄存器*/

 TIM7- >DIER|=1< < 0; //開(kāi)啟中斷

   SetNVICPriorityGrouping(TIM7_IRQn,1,1);  //設(shè)置中斷優(yōu)先級(jí)

 TIM7- >PSC=psc-1;     //預(yù)分頻

   /*計(jì)數(shù)器的時(shí)鐘頻率CK_CNT等于fCK_PSC/(PSC[15:0]+1)*/

   TIM7- >ARR=arr;       //重裝載寄存器

   TIM7- >CR1|=1< < 0;     //使能計(jì)數(shù)器

 }

 

 /*

 函數(shù)功能:定時(shí)器中斷服務(wù)函數(shù)

 */

 void TIM7_IRQHandler(void)

 {

 TIM7- >SR=0x0;

     LED0=!LED0;

 LED1=!LED1;

 }


Main.c文件代碼如下


#include 'stm32f4xx.h' // Device header

 #include 'led.h'

 #include 'delay.h'

 #include 'key.h'

 #include 'usart.h'

 #include 'sys.h'

 #include 'exti.h'

 #include 'timer.h'

 

 int main(void)

 {

 LED_Init();

 KEY_Init();

 USART1_Init(84,115200);

 KEY_EXTI_Init();

   /*

 1/84000000得到定時(shí)器加的1的時(shí)間單位us

 1/84000得到定時(shí)器加的1的時(shí)間單位ms

 1/84得到定時(shí)器加的1的時(shí)間單位s   =0.0119047619047619

   */

 Time7_InitConfig(84,65000); //定時(shí)器7初始化

 

 /*

     分頻84,最終頻率1HMZ  計(jì)數(shù)器CNT+1的時(shí)間是1us

 */

   while(1)

 {

   

 }

 }


關(guān)鍵字:STM32F407  基本定時(shí)器 引用地址:STM32F407 基本定時(shí)器使用

上一篇:怎樣調(diào)試STM32硬件錯(cuò)誤HardFault
下一篇:詳細(xì)的STM32啟動(dòng)配置流程解析

小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車(chē)開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved