stm32寄存器版学习笔记06 输入捕获(ETR脉冲计数)
STM32外部脉冲ETR引脚:TIM1-->PA12;TIMER2-->PA0;TIMER3-->PD2;TIMER4-->PE0…
1.TIM2 PA0计数 配置步骤
①开启TIM2时钟,配置PA0输入
APB1外设复位寄存器 (RCC_APB1RSTR)

APB2外设时钟使能寄存器(RCC_APB2ENR)

置1开启。清0关闭。
Eg:RCC->APB1ENR|=1<<0; //使能TIM2时钟
RCC->APB2ENR|=1<<2; //使能PORTA时钟
配置I/O口: 参见stm32寄存器版学习笔记01 GPIO口的配置。
Eg:GPIOA->CRL&=0XFFFFFFF0; //PA0 清除之前设置
GPIOA->CRL|=0X00000008; //PA0 输入
GPIOA->ODR|=0<<0; //PA0 下拉
②设置TIM2的ARR和PSC
自动重装载寄存器(TIMx_ARR)

预分频器(TIMx_PSC)

③设置TIM2的CCMR1
TIM2_CCMR1寄存器控制着输入捕获1和2的模式,包括映射关系、滤波和分频等。这里需要设置通道1为输入模式,且IC1映射到TI1(通道1)上,并且不使用滤波(提高响应速度)器。
捕获/比较模式寄存器1(TIMx_CCMR1)

输入捕获模式:

Eg:TIM2->CCMR1|=1<<0; //CC1S=01 选择输入端 IC1映射到TI1上
TIM2->CCMR1|=1<<4; //IC1F=0001 配置输入滤波器 以Fck_int采样,2个事件后有效
TIM2->CCMR1|=0<<10; //IC2PS=00 配置输入分频,不分频
④设置TIM2的CCER,开启输入捕获,并设置上升沿捕获
TIM2_CCER寄存器是定时器的开关,并且可以设置输入捕获的边沿。
捕获/比较使能寄存器(TIMx_CCER)

Eg: TIM2->CCER|=0<<1; //CC1P=0 上升沿捕获
TIM2->CCER|=1<<0; //CC1E=1 允许捕获计数器的值到捕获寄存器中
⑤设置TIM2的DIER,使能捕获和更新中断,并编写中断服务函数
DMA/中断使能寄存器(TIMx_DIER)


Eg:TIM2->DIER|=1<<1; //允许捕获中断
TIM2->DIER|=1<<0; //允许更新中断
⑥设置TIM2的CR1使能定时器
最后打开定时器的计数器开关,启动TIM2计数器,开始输入捕获。
控制寄存器1(TIMx_CR1)


2.TIM2 PA0计数应用
//定时器2通道1输入捕获配置
//arr:自动重装值
//psc:时钟预分频数
void TIM2_Cap_Init(u16 arr,u16 psc)
{
RCC->APB1ENR|=<<; //TIM2 时钟使能
RCC->APB2ENR|=<<; //使能PORTA时钟 GPIOA->CRL&=0XFFFFFFF0; //PA0 清除之前设置
GPIOA->CRL|=0X00000008; //PA0 输入
GPIOA->ODR|=<<; //PA0 下拉 TIM2->ARR=arr; //设定计数器自动重装值
TIM2->PSC=psc; //预分频器 TIM2->CCMR1|=<<; //CC1S=01 选择输入端 IC1映射到TI1上
TIM2->CCMR1|=<<; //IC1F=0001 配置输入滤波器 以Fck_int采样,2个事件后有效
TIM2->CCMR1|=<<; //IC2PS=00 配置输入分频,不分频 TIM2->CCER|=<<; //CC1P=0 上升沿捕获
TIM2->CCER|=<<; //CC1E=1 允许捕获计数器的值到捕获寄存器中 TIM2->DIER|=<<; //允许捕获中断
TIM2->DIER|=<<; //允许更新中断
TIM2->CR1|=0x01; //使能定时器2
MY_NVIC_Init(,,TIM2_IRQn,);//抢占2,子优先级0,组2
} //定时器2中断服务程序
void TIM2_IRQHandler(void)
{
u16 tsr;
tsr=TIM2->SR;
if(tsr&0x02)//捕获1发生捕获事件
{
cishu++; }
TIM2->SR=;//清除中断标志位
}
//测试.c
TIM2_Cap_Init(,);
while()
{
printf("cishu:%d us\r\n",cishu); }
//不知为何cnt读数为0.。。
stm32寄存器版学习笔记06 输入捕获(ETR脉冲计数)的更多相关文章
- stm32寄存器版学习笔记07 ADC
STM32F103RCT有3个ADC,12位主逼近型模拟数字转换器,有18个通道,可测量16个外部和2个内部信号源.各通道的A/D转换可以单次.连续.扫描或间断模式执行. 1.通道选择 stm32把A ...
- stm32寄存器版学习笔记05 PWM
STM32除TIM6和TIM7外都可以产生PWM输出.高级定时器TIM1和TIM8可以同时产生7路PWM,通用定时器可以产生4路PWM输出. 1.TIM1 CH1输出PWM配置步骤 ①开启TIM1时钟 ...
- stm32寄存器版学习笔记03 外部中断
stm32的每个I/O口都可以作为中断输入,要把I/O口设置为外部中断输入,必须将I/O口设置为上拉/下拉输入 或 浮空输入(但浮空的时候外部一定要带上拉或下拉电阻,否则可能导致 中断不停的触发),干 ...
- stm32寄存器版学习笔记08 DMA
DMA(Direct Memory Access),直接存储器访问.DMA传输方式无需CPU直接控制传输,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU效率大大提高.stm32f10 ...
- stm32寄存器版学习笔记04 定时计数器中断
STM32共有8个定时计数器,其中TIME1和TIME8是高级定时器,TIME2~TIME5是通用定时器,TIME6和TIME7是基本定时器.以TIME3为例总结定时计数器的基本用法. 1.TIM3的 ...
- stm32寄存器版学习笔记01 GPIO口的配置(LED、按键)
STM32的I/O口可以由软件配置成如下8种模式:输入浮空.输入上拉.输入下拉.模拟输入.开漏输出.推挽输出.推挽式复用功能及开漏复用功能.每个I/O口由7个寄存器来控制:配置模式的端口配置寄存器CR ...
- stm32寄存器版学习笔记10 SPI
SPI(Serial Peripheral Interface),串行外围设备接口.SPI是一种高速的.全双工.同步的通信总线. SPI接口一般使用4条线通信: MISO 主设备数据输入,从设备数据输 ...
- stm32寄存器版学习笔记02 串口通信
stm32F103RCT6提供5路串口.串口的使用,只要开启串口时钟,设置相应的I/O口的模式,然后配置下波特率.数据位长度.奇偶校验等信息,即可使用. 1.串口的配置步骤 ①串口时钟使能 APB2外 ...
- stm32寄存器版学习笔记09 IIC
I²C(Inter-Integrated Circuit)总线是一种两线式串行总线,用于连接微控制器及其外设,是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据. IIC总线在传送数据过程中 ...
随机推荐
- R-模式(mode)和类(class)
数据模式:mode函数显示任何对象的模式.常见的单个的对象模式是逻辑型(Logical).数值型(Numeric).字符型(Character). 常用到的数据模式是列表(list). 逻辑型:TRU ...
- Spring Cloud实战
Spring Cloud实战(一)-Spring Cloud Config Server https://segmentfault.com/a/1190000006149891 https://seg ...
- 各种数据库对应的jar包、驱动类名和URL格式
1.1. 各种数据库对应的jar包 具体如下: 数据库类型 对应的Jar文件 Oracle 8i classes12.zip 或 ojdbc14.jar Sybase jconn2.jar ...
- linux 使用dd命令清空文件
- Hibernate[延迟加载] [三种状态] [脏检查] [缓存机制]
一.持久化对象的唯一标识 java中按内存地址不同区分同一个类的不同对象,关系数据库用主键区分同一条记录,Hibernate使用OID来建立内存中的对象和数据库中记录的对应关系 什么是OID? 解析: ...
- express中的错误处理
错误处理 定义错误处理中间件和定义其他中间件一样,除了需要 4 个参数,而不是 3 个,其格式如下 (err, req, res, next).例如: app.use(function(err, re ...
- python 黑客书籍 ——扫描+暴力破解
https://legacy.gitbook.com/book/germey/net-security/details 网络安全 介绍 构建一个端口扫描器 利用Pexpect模拟SSH连接 利用Pxs ...
- MYSQL中的日期转换
MYSQL中的日期转换 网址: http://www.eygle.com/digest/2006/09/mysql_date_convert.html 对于每个类型拥有的值范围以及并且指定日期何时间值 ...
- angularJS---service
service ng的服务是这样定义的: Angular services are singletons objects or functions that carry out specific ta ...
- 跨域问题Java方式解决及Nginx方式解决【亲测可行】
这两天和前端同事调试微信公众号项目,就遇到了跨域问题:网上相关博客也挺多的,但有很多细节没有点到,在此呢我也再次记录一下解决方式: (算是踩坑日记吧~ ~ ~) !问题发现: 页面加载不出来,控制 ...