【记录】定时器
2016-07-09 16:02
232 查看
特性
计数器模式
通用计时器支持向上计数,向下计数,向上向下双向计数三种模式。向上计数模式
计数器从0计数到自动加载值,然后重新从0开始计数,并产生一个计数器溢出事件
向下计数模式
计数器从自动装载值开始向下计数到0,然后从自动装载值重新开始,并产生一个向下溢出事件
中央对其模式(向上/向下计数)
计数器从0开始计数到(自动载入值-1)产生一个计数器溢出事件,然后向下计数到1,产生一个计数器溢出事件,然后再从0开始重新计数
通用定时器框图
框图由五部分组成产生时钟源CK_PSC
时钟来源
内部RCC
外部引脚TIMx_ETR
内部触发输入口(ITR0~ITR3),用于定时器级联
外部通道引脚TIMx_CH1,TIMx_CH
实基单元(time-base unit)
根据向上向下的设定,进行技术,并从自动重载寄存器中加载计数值
输入捕获
四个输入通道
输出比较
根据比较值,输出事件
相关寄存器
操作步骤
使能定时器时钟设置定时器计数值和分频系数
使能定时器中断
使能定时器
设置定时器中断分组
编写定时器中断服务函数
定时器中断事件比较多,在中断服务函数中对特定事件进行判断,处理。注意处理完成后,清除中断标志位。
void TIM3_IRQHandler(void) { if(TIM3->SR & 0x0001) { LED1 = !LED1; } TIM3->SR &= ~(1<<0); } void TIM3_Init(u16 arr, u16 psc) { RCC->APB1ENR |= 1<<1; TIM3->ARR = arr; TIM3->PSC = psc; TIM3->DIER |= 1<<0; TIM3->CR1 |= 0x01; MY_NVIC_Init(1, 3, TIM3_IRQn, 2); }
int main(void) { sys_init(); while(1) { LED0 = !LED0; delay_ms(200); } } static void sys_init(void) { Stm32_Clock_Init(336, 8, 2, 7); delay_init(168); led_init(); TIM3_Init(5000-1, 8400-1); }
参考
STM32F3与 F4 系列 Cortex M4 内核编程手册STM32F4xxx中文参考手册
STM32F4xxx英文参考手册
STM32F4 开发指南(寄存器版)
相关文章推荐
- 前景检测算法(十)--SOBS算法
- PAT考试座位号的两种方法
- java基础二:创建方法、使用类(类成员)
- Android SwipeRefreshLayout 官方下拉刷新控件
- UVa 12342 Tax Calculator (水题,纳税)
- 数学计数原理(Pólya,高精度):SGU 294 He's Circles
- MyBatis和Hibernate
- 每天一个linux命令(39)--ifconfig命令
- struts2进阶篇(2)
- DEDE一些必要的修改,以提高安全性
- 从网络接口获取json数据不完全
- hadoop2.6.4+Ubuntu14.04的单机模式和伪分布模式环境搭建
- 哪个瞬间让你突然觉得读书真有用?
- 二叉树中和为某一值的路径
- equals和==的区别
- Ubuntu无法登录的bug解决方案
- 【转载精品】Web Service到底是什么?
- Apache+mod_jk+Tomcat+Memcached win32集群环境搭建
- SimpleAdapter.ViewBinder方法的感受
- 浅谈树状数组