(STM32F4) Timer Compare mode 操作
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 操作的更多相关文章
- STM32F4 Timer Internal Trigger Connection
The Timers can be cascaded to make more complex timing relationships, or longer periods. Internally ...
- 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 ...
- C# task和timer实现定时操作
C#中,定时器,或者叫作间隔器,每隔一段时间执行一个操作. 1.Timer本身就是多线程 C#中为不同场合下使用定时器,提供了不同的Timer类,在asp.net中一般使用System.Timers. ...
- (STM32F4) Timer 基本操作
Timer (計時器) 就是慢慢數時間,在timer內部有一個計數器. 而計數器會數到Register的value當數值數到設定值Timer就會發起IRQ 而程式就會轉跳到中斷向量裡頭去執行想要做的事 ...
- STM32F4 Timer External Clock TI2 Both Edges Demo
#define CLK_FREQ ( 10000 ) #define CORE_FREQ ( 168000000 ) static void TIM_GPIO_Config( void ) { GPI ...
- Java并发编程:Timer和TimerTask(转载)
Java并发编程:Timer和TimerTask(转载) 下面内容转载自: http://blog.csdn.net/xieyuooo/article/details/8607220 其实就Timer ...
- java Timer(定时调用、实现固定时间执行)
最近需要用到定时调用的功能.可以通过java的Timer类来进行定时调用,下面是有关Timer的一些相关知识. 其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个 ...
- Timer与TimerTask的真正原理&使用介绍
转载: Timer与TimerTask的真正原理&使用介绍 其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来 ...
- Java并发编程:Timer和TimerTask
Java并发编程:Timer和TimerTask 下面内容转载自: http://blog.csdn.net/xieyuooo/article/details/8607220 其实就Timer来讲就是 ...
随机推荐
- Mysql中自定义函数编程
1.语法 1.1 新建函数 Create function function_name(参数列表) returns 返回值类型 函数体 (1)函数名,应该合法的标识符,并且不应该与已有的关键字冲突. ...
- [C++] c Struct VS c++ Struct
c Struct c语言生命变量要加上struct c语言结构体内部不能有函数 C语言结构体没有共有,私有和继承
- 注意for循环中变量的作用域-乾颐堂
1 2 for e in collections: pass 在for 循环里, 最后一个对象e一直存在在上下文中.就是在循环外面,接下来对e的引用仍然有效. 这里有个问题容易被忽略,如果在循 ...
- idea 提示Resource registered by this uri is not recognized (Settings | Languages & Frameworks | Schemas and DTDs)
idea出现如上图所示的错误提示时,可以用如下方式解决 点击红色代码部分,鼠标悬停后出现红色灯泡,如下图所示 点击灯泡后,选择第一个选项就可以解决了
- sql server锁检测
有时候系统运行老感觉效率不高,并且有时候sql还有超时的报错,但是并发量并不高.通过排查定位sql是否有执行效率问题 -- 开事务, 以保持锁 BEGIN TRAN -- 更新 update tabl ...
- 编写高质量代码改善C#程序的157个建议——建议136:优先使用后缀表示已有类型的新版本
建议136:优先使用后缀表示已有类型的新版本 加后缀在某些情况下是很奇怪的形式,我们都不愿意看到OrderProcessor2这样的类型.但是,有的时候仍旧有必要这样做.最典型的是FCL中关于数字证书 ...
- 编写高质量代码改善C#程序的157个建议——建议95:避免在构造方法中调用虚成员
建议95:避免在构造方法中调用虚成员 在构造方法中调用虚方法会带来一些意想不到的错误,虽然这种方法不常见,但还是需要注意这类陷阱. static void Main() { American amer ...
- mybatis SqlMapConfig.xml
一.SqlMapConfig.xml 1.属性properties 在入门时,以抽取出连接数据库的属性得到properties文件. a.可以通过resource和url来获得属性. b.proper ...
- 学习python4
文件系统实现文件的增删改查 UnicodeDecodeError: 'gbk' codec can't decode byte 0x9a in position 8: illegal multibyt ...
- [转]一次Delete&Insert引发的Mysql死锁
近日遇到一个比较奇怪的deadlock错误, 错误详情: Deadlock found when trying to get lock; try restarting transaction; nes ...