Timer 比較模式(compare) 具體會用在哪種狀況目前還沒有這種經驗,但Compare有配置功能pin想必有應用會用到這個模式

從Function Block來看比較模式比基本Timer多了比較這一個流程去控制Output狀態

Timer 具體配置如下 :

 TIM_TimeBaseInitTypeDef TIM3_TimeBase;
TIM_OCInitTypeDef TIM3_OC; TIM3_TimeBase.TIM_ClockDivision = ;
TIM3_TimeBase.TIM_CounterMode = TIM_CounterMode_Up;
TIM3_TimeBase.TIM_Period = ;
TIM3_TimeBase.TIM_Prescaler = TIM_PRESCALER;
TIM_TimeBaseInit(TIM3, &TIM3_TimeBase); TIM3_OC.TIM_OCMode = TIM_OCMode_Toggle;
TIM3_OC.TIM_OutputState = TIM_OutputState_Enable;
TIM3_OC.TIM_OCPolarity = TIM_OCPolarity_Low;
TIM3_OC.TIM_Pulse = TIM3_PULSE;
TIM_OC1Init(TIM3, &TIM3_OC);
TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Disable);
TIM_Cmd(TIM3, ENABLE);
TIM_ITConfig(TIM3, TIM_IT_CC1, ENABLE);

第13行

TIM3_OC.TIM_Pulse = TIM3_PULSE;

這一行主要是配置給Compare Register CCR1顧名思義就是Timer Counter要比較的數值。

 void TIM3_IRQHandler(void)
{
if (TIM_GetITStatus(TIM3, TIM_IT_CC1) != RESET)
{
TIM_ClearITPendingBit(TIM3, TIM_IT_CC1);
current_count = TIM_GetCapture1(TIM3);
TIM_SetCompare1(TIM3, current_count + TIM3_PULSE);
}
}

其中第6, 7行我的理解是,TIM->CNT計數到設定值之後會發IRQ但是我們會希望下次也是計數一樣的數值在發IRQ

所以我們必須把現在的counter累加達到我們要的效果。

舉例來說 比較值 = 2000

第一次發IRQ CNT = 2000, 下一次發IRQ會是 4000,所以原本的2000必須加上最原始的設定值 2000

所以說 Interrup Frequency = TIM計數頻率 / Compare Reg Value

(STM32F4) Timer Compare mode 操作的更多相关文章

  1. STM32F4 Timer Internal Trigger Connection

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

  2. 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 ...

  3. C# task和timer实现定时操作

    C#中,定时器,或者叫作间隔器,每隔一段时间执行一个操作. 1.Timer本身就是多线程 C#中为不同场合下使用定时器,提供了不同的Timer类,在asp.net中一般使用System.Timers. ...

  4. (STM32F4) Timer 基本操作

    Timer (計時器) 就是慢慢數時間,在timer內部有一個計數器. 而計數器會數到Register的value當數值數到設定值Timer就會發起IRQ 而程式就會轉跳到中斷向量裡頭去執行想要做的事 ...

  5. STM32F4 Timer External Clock TI2 Both Edges Demo

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

  6. Java并发编程:Timer和TimerTask(转载)

    Java并发编程:Timer和TimerTask(转载) 下面内容转载自: http://blog.csdn.net/xieyuooo/article/details/8607220 其实就Timer ...

  7. java Timer(定时调用、实现固定时间执行)

    最近需要用到定时调用的功能.可以通过java的Timer类来进行定时调用,下面是有关Timer的一些相关知识. 其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个 ...

  8. Timer与TimerTask的真正原理&使用介绍

    转载: Timer与TimerTask的真正原理&使用介绍 其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来 ...

  9. Java并发编程:Timer和TimerTask

    Java并发编程:Timer和TimerTask 下面内容转载自: http://blog.csdn.net/xieyuooo/article/details/8607220 其实就Timer来讲就是 ...

随机推荐

  1. crontab学习笔记

    一.crond与crontab简介 在Linux系统中,循环运行的例行性计划任务,是由 cron (crond) 这个系统服务来控制的,而crontab命令则被用来提交和管理用户的需要周期性执行的任务 ...

  2. http协议简析(一)

    HTTP:hype-text transfer protocol,超文本传输协议,超文本(html)在网络间(电脑与电脑之间)传输过程中所遵循的一些规则. 两台电脑之间要实现数据传输的条件 1.两台电 ...

  3. 测试URL

    http://localhost:8080/dmonitor-webapi/monitor/vm/342?r=1410331220921&indexes=cpu&indexes=mem ...

  4. [C++] printf pitfall

    printf pitfal l

  5. Python手机开发调用DLL实现部分ADB功能-乾颐堂

    近期学了一点Python,然后正好有一个手机同步工具方面的预研工作要完成. 要实现PC与手机的通信,首先要找到他们的通信协议,还好的是Android有完善的协议:ADB ADB的代码是开源的,而且支持 ...

  6. cmake3.2.2 在Ubuntu14.04下的安装

    参考:http://askubuntu.com/questions/610291/how-to-install-cmake-3-2-on-ubuntu-14-04 1.判断相关软件是否安装 sudo  ...

  7. u盘安装Linux系统详细教程

    2012-05-06 02:30:44 分类: LINUX 想不想体验一下Linux下呢?刻盘太浪费钱,而U盘却可以多次利用.本文就是要介绍如何通过U盘安装Linux系统的.只要用Universal- ...

  8. dapper利用DynamicParameters构建动态参数查询

    public static int GetTotalLogin(string username,DateTime start, DateTime end) { using (var _connecti ...

  9. ACM 媛在努力 华山论剑

    媛在努力 描述在多媒体数据处理中,数据压缩算法尤为重要.小媛上完课后就想自己发明一个数据压缩算法.她想呀想,终于想到一个方法.在多媒体数据中有很多数据都是重复的,所以她想把连续相同的数据用数据出现的次 ...

  10. ACM 超级楼梯 发工资

    超级楼梯 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法? Input 输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M( ...