Timer (計時器) 就是慢慢數時間,在timer內部有一個計數器。

而計數器會數到Register的value當數值數到設定值Timer就會發起IRQ

而程式就會轉跳到中斷向量裡頭去執行想要做的事情。

Timer 計時器配置

 TIM_TimeBaseInitTypeDef TIM3_TimeBase;
TIM3_TimeBase.TIM_ClockDivision = ;
TIM3_TimeBase.TIM_CounterMode = TIM_CounterMode_Up;
TIM3_TimeBase.TIM_Period = ;
TIM3_TimeBase.TIM_Prescaler = - ;
TIM_TimeBaseInit(TIM3, &TIM3_TimeBase);
TIM_Cmd(TIM3, ENABLE);
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);

在這段配置裡頭比較重要的是知道啟動Timer的輸入頻率,以及Timer的計數頻率,與設定的週期

有了這些資訊之後我們就知道如何去觸發Timer 的 IRQ

這邊提及一下Timer的輸入頻率跟RCC配置有相關,我們透過Clock Tree可以知道假設啟動Timer的APBx (x = 1/2)

有設定除頻的話,Timer的輸入頻率會是APBx * 2

STM32F407 System clock = 168MHz

APB2 = 42MHz, APB2 = 84MHz

所以我們的初始設定TIM3輸入頻率是 42MHz * 2 = 84MHz

 /* HCLK = SYSCLK / 1*/
RCC->CFGR |= RCC_CFGR_HPRE_DIV1; /* PCLK2 = HCLK / 2*/
RCC->CFGR |= RCC_CFGR_PPRE2_DIV2; /* PCLK1 = HCLK / 4*/
RCC->CFGR |= RCC_CFGR_PPRE1_DIV4;

這段程式碼在startup_stm32f4xx.s 已經先配置過一次RCC所以在初始狀態APB1/2頻率如上敘述。

回到Timer多久觸發一次IRQ的計算,目前已知最重要的輸入頻率所以接下來的計算都是靠我們設定的Register去計算

首先在配置IRQ觸發頻率時,通常我們會先確定要用怎樣的頻率去計數這段時間。所以我們會去配置除頻系數

TIM3_TimeBase.TIM_Prescaler = - ;

以這行程式碼而言,我的除頻系數填的是83而我的計數頻率會變成1Mhz

計數頻率 = 84MHz / (83 + 1) = 1Mhz

再來是我要計數的數值就是決定觸發IRQ的關鍵

TIM3_TimeBase.TIM_Period = ;

IRQ觸發頻率 = 1Mhz / (20 + 1) = 47.63KHz

頭過上面的配置Timer就會開始啟動了,但實際要發起IRQ還是要透過中斷機制,所以還是必須配置中斷向量

 NVIC_TIM3.NVIC_IRQChannel                   = TIM3_IRQn;
NVIC_TIM3.NVIC_IRQChannelPreemptionPriority = ;
NVIC_TIM3.NVIC_IRQChannelSubPriority = ;
NVIC_TIM3.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_TIM3);

在Function Block 只用到一小部分 Timer 很強大還有很多細節須要去學習

(STM32F4) Timer 基本操作的更多相关文章

  1. STM32F4 Timer simplified block diagram

    Timers TIM1 and TIM8 use 16-bit counters and are the most complex timers of all timers included in t ...

  2. STM32F4 Timer Internal Trigger Connection

    The Timers can be cascaded to make more complex timing relationships, or longer periods. Internally ...

  3. (STM32F4) Timer Compare mode 操作

    Timer 比較模式(compare) 具體會用在哪種狀況目前還沒有這種經驗,但Compare有配置功能pin想必有應用會用到這個模式 從Function Block來看比較模式比基本Timer多了比 ...

  4. STM32F4 Timer External Clock TI2 Both Edges Demo

    #define CLK_FREQ ( 10000 ) #define CORE_FREQ ( 168000000 ) static void TIM_GPIO_Config( void ) { GPI ...

  5. (STM32F4) 精準的Delay不透過Timer

    從一個厲害的國外工程師看來的delay寫法,使用while loop會使用幾個指令去計算,可能會需要多少時間. while(variable--); 這行代碼執行一次預估會消耗MCU 4 clock ...

  6. 使用SVG基本操作API

    前面的话 本文将详细介绍SVG基本操作API,并使用这些API操作实例效果 基础API 在javascript中,可以使用一些基本的API来对SVG进行操作 [NS地址] 因为SVG定义在其自身的命令 ...

  7. Linux时间子系统之二:Alarm Timer

    一.前言 严格来讲Alarm Timer也算POSIX Timer一部分,包含两种类型CLOCK_REALTIME_ALARM和CLOCK_BOOTTIME_ALARM.分别是在CLOCK_REALT ...

  8. STM32F4 SPI with DMA

    STM32F4 SPI with DMA A few people have requested code, so I thought I’d post the code showing how I’ ...

  9. 78-WS2812-Library (STM32F4)

    78-WS2812-Library (STM32F4) //-------------------------------------------------------------- // File ...

随机推荐

  1. linux系统命令行基本组成元素

    一.shell prompt(PS1) 命令行提示符 1. 游标(coursor) 当你成功登录进一个文字界面之后,大部份情形下,你会在荧幕上看到一个不断闪烁的方块或底线(视不同版本而别),我们称之为 ...

  2. CentOS JAVA安装及查看路径方法

    一.安装: 方法一:手动解压JDK的压缩包,然后设置环境变量 1.在/usr/目录下创建java目录 [root@localhost ~]# mkdir/usr/java[root@localhost ...

  3. CentOS压力测试工具Tsung安装和图形报表生成Tsung安装配置

    Tsung 是一个压力测试工具,可以测试包括HTTP, WebDAV, PostgreSQL, MySQL, LDAP, and XMPP/Jabber等服务器.针对 HTTP 测试,Tsung 支持 ...

  4. Google-优秀移动站点设计10招

    Google-优秀移动网站设计10招 1)添加一个醒目的搜索条:在移动终端上,人们希望能够快速找到自己需要的东西 2)把大表格拆分成小块:别搞一个长长的表格页面,上面包含各种输入框 3)允许用户匿名浏 ...

  5. Ubuntu14.04下 安装xhprof

    1.下载xhprof包: wget http://pecl.php.net/get/xhprof-0.9.4.tgz 2.解压 进入扩展目录 .tgz cd /home/justphp/xhprof- ...

  6. java中jar打包的方法

    jar 应用 先打开命令提示符(win2000或在运行筐里执行cmd命令,win98为DOS提示符),输入jar -help,然后回车(如果你盘上已经有了jdk1.1或以上版本),看到什么:用法:ja ...

  7. 使用word写CSDN博客文章

    目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...

  8. 五)使用 easyui-tabs 遭遇错误 Unexpected Exception caught setting '_' on

    十月 10, 2015 3:08:35 下午 com.opensymphony.xwork2.interceptor.ParametersInterceptor error 严重: Developer ...

  9. SOAP协议初级指南 (二)

    XML 作为一个更好的网络数据表达方式(NDR) HTTP是一个相当有用的RPC协议,它提供了IIOP或DCOM在组帧.连接管理以及序列化对象应用等方面大部分功能的支持.( 而且URLs与IORs和O ...

  10. XJOI 3629 非严格次小生成树(pqq的礼物)

    题目描述: 有一天,pqq准备去给×i×准备礼物,他有一些礼品准备包装一下,他用线将这些礼物连在一起,不同的礼物因为风格不同所以连接它们需要不同价值的线.风格差异越大,价格越大(所以两个礼物之间只有一 ...