STM32F4寄存器初始化:编码器
RCC->APB1ENR|=1<<0; //TIM2时钟使能
RCC->APB1ENR|=1<<1; //TIM3时钟使能
RCC->APB1ENR|=1<<3; //TIM5时钟使能
RCC->APB2ENR|=1<<1; //TIM8时钟使能
GPIO_AF_Set(GPIOD,12,2); //PD12,AF2
GPIO_AF_Set(GPIOD,13,2); //PD13,AF2
static void _TIM2_Configuration(void)
{
TIM2->PSC = 0x0;//预分频器
TIM2->ARR = 65535;//设定计数器自动重装值
TIM2->CR1 &=~(3<<8);// 选择时钟分频:不分频
TIM2->CR1 &=~(3<<5);// 选择计数模式:边沿对齐模式
TIM2->CCMR1 |= 1<<0; //CC1S='01' IC1FP1映射到TI1
TIM2->CCMR1 |= 1<<8; //CC2S='01' IC2FP2映射到TI2
TIM2->CCER &= ~(1<<1); //CC1P='0' IC1FP1不反相,IC1FP1=TI1
TIM2->CCER &= ~(1<<5); //CC2P='0' IC2FP2不反相,IC2FP2=TI2
TIM2->CCMR1 |= 3<<4; // IC1F='1000' 输入捕获1滤波器
TIM2->SMCR |= 3<<0; //SMS='011' 所有的输入均在上升沿和下降沿有效
TIM2->CR1 |= 0x01; //CEN=1,使能定时器
}
static void _TIM3_Configuration(void)
{
TIM3->PSC = 0x0;//预分频器
TIM3->ARR = 65535;//设定计数器自动重装值
TIM3->CR1 &=~(3<<8);// 选择时钟分频:不分频
TIM3->CR1 &=~(3<<5);// 选择计数模式:边沿对齐模式
TIM3->CCMR1 |= 1<<0; //CC1S='01' IC1FP1映射到TI1
TIM3->CCMR1 |= 1<<8; //CC2S='01' IC2FP2映射到TI2
TIM3->CCER &= ~(1<<1); //CC1P='0' IC1FP1不反相,IC1FP1=TI1
TIM3->CCER &= ~(1<<5); //CC2P='0' IC2FP2不反相,IC2FP2=TI2
TIM3->CCMR1 |= 3<<4; // IC1F='1000' 输入捕获1滤波器
TIM3->SMCR |= 3<<0; //SMS='011' 所有的输入均在上升沿和下降沿有效
TIM3->CR1 |= 0x01; //CEN=1,使能定时器
}
static void _TIM5_Configuration(void)
{
TIM5->PSC = 0x0;//预分频器
TIM5->ARR = 65535;//设定计数器自动重装值
TIM5->CR1 &=~(3<<8);// 选择时钟分频:不分频
TIM5->CR1 &=~(3<<5);// 选择计数模式:边沿对齐模式
TIM5->CCMR1 |= 1<<0; //CC1S='01' IC1FP1映射到TI1
TIM5->CCMR1 |= 1<<8; //CC2S='01' IC2FP2映射到TI2
TIM5->CCER &= ~(1<<1); //CC1P='0' IC1FP1不反相,IC1FP1=TI1
TIM5->CCER &= ~(1<<5); //CC2P='0' IC2FP2不反相,IC2FP2=TI2
TIM5->CCMR1 |= 3<<4; // IC1F='1000' 输入捕获1滤波器
TIM5->SMCR |= 3<<0; //SMS='011' 所有的输入均在上升沿和下降沿有效
TIM5->CR1 |= 0x01; //CEN=1,使能定时器
}
static void _TIM8_Configuration(void)
{
TIM8->PSC = 0x0;//预分频器
TIM8->ARR = 65535;//设定计数器自动重装值
TIM8->CR1 &=~(3<<8);// 选择时钟分频:不分频
TIM8->CR1 &=~(3<<5);// 选择计数模式:边沿对齐模式
TIM8->CCMR1 |= 1<<0; //CC1S='01' IC1FP1映射到TI1
TIM8->CCMR1 |= 1<<8; //CC2S='01' IC2FP2映射到TI2
TIM8->CCER &= ~(1<<1); //CC1P='0' IC1FP1不反相,IC1FP1=TI1
TIM8->CCER &= ~(1<<5); //CC2P='0' IC2FP2不反相,IC2FP2=TI2
TIM8->CCMR1 |= 3<<4; // IC1F='1000' 输入捕获1滤波器
TIM8->SMCR |= 3<<0; //SMS='011' 所有的输入均在上升沿和下降沿有效
TIM8->CR1 |= 0x01; //CEN=1,使能定时器
}
//读取
void TIM7_IRQHandler(void) //100ms
{
if( TIM7->SR )
{
_speed_encode[0] = (short)TIM8 -> CNT;
TIM8 -> CNT=0;
_speed_encode[1] = (short)TIM2 -> CNT;
TIM2 -> CNT=0;
_speed_encode[2] = (short)TIM3 -> CNT;
TIM2 -> CNT=0;
_speed_encode[3] = (short)TIM5 -> CNT;
TIM5 -> CNT=0;
TIM7->SR&=~(1<<0);//清除中断标志位
}
}
STM32F4寄存器初始化:编码器的更多相关文章
- 自制反汇编工具使用实例 其二(使用xmm寄存器初始化对象,以及空的成员函数指针)
在反汇编代码中,当看到xmm寄存器,第一反应是将要进行浮点操作或访问,但是更加多的情况是在使用xmm寄存器初始化局部对象. 下面是自制反汇编工具翻译出来的代码: // -[CALayer setAll ...
- STM32F4 SPI2初始化及收发数据【使用库函数】
我的STM32F4 Discovery上边有一个加速度传感器LIS302DL.在演示工程中,ST的工程师使用这个传感器做了个很令人羡慕的东西:解算开发板的姿态.当开发板倾斜时候,处于最上边的LED点亮 ...
- STM32F4寄存器编写跑马灯例程
最近由于在学习STM32看到别人用寄存器编程控制跑马灯,于是自己也想试一试.可是试了好久终究弄不出来.回头看了下库函数的调用关系才搞明白.首先通过查看GPIOA的设置函数发现设置如下: void GP ...
- STM32 STM32F4 寄存器怎么配置不上, 无法往寄存器写入数据
当出现这个问题时,往往是因为你没有在RCC寄存器中把相关的时钟使能打开. 配置寄存器之前记得调用"RCC_AxxxPeriphClockCmd"先打开需要配置的时钟源,别调用了“R ...
- 玩转X-CTR100 l STM32F4 l 电机正交编码器
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器的电机正交编码器,X- ...
- STM32f103 定时器之编码器接口模式
背景 买了个Arduino的旋转编码器模块,配合STM32定时器的编码器模式实现了旋转角度以及圈数的计数.这种旋转编码器我能想到的实际应用场景暂时只有实体音量旋钮,鼠标的滚轮等,所以只实现了计数.阅读 ...
- TFT LCD控制显示总结(硬件概念、初始化相关配置)(转)
源地址:http://nervfzb.blog.163.com/blog/static/314813992011215105432369/ TFT LCD是嵌入式中比较常用的显示器,S3C2440/S ...
- 3.1 PCI设备BAR空间的初始化
在PCI Agent设备进行数据传送之前,系统软件需要初始化PCI Agent设备的BAR0~5寄存器和PCI桥的Base.Limit寄存器.系统软件使用DFS算法对PCI总线进行遍历时,完成这些寄存 ...
- 三叔学FPGA系列之二:Cyclone V中的POR、配置、初始化,以及复位
对于FPGA内部的复位,之前一直比较迷,这两天仔细研究官方数据手册,解开了心中的诸多疑惑,感觉自己又进步了呢..... 原创不易,转载请转原文,注明出处,谢谢. 一.关于POR(Power-On ...
- android kernel控制台初始化过程
对于我们的android平台,控制台被定义到了串口1上,因此初始化过程就是把控制台的输出配置到串口1上 对kernel控制台初始化是在挂载文件系统之前,由于没有串口的设备文件,不能通过打开设备文件来访 ...
随机推荐
- 【云原生 · Kubernetes】Kubernetes Node的隔离与恢复
个人名片: 因为云计算成为了监控工程师 个人博客:念舒_C.ying CSDN主页️:念舒_C.ying Kubernetes Node的隔离与恢复 在硬件升级.硬件维护等情况下,我们需要将某些No ...
- 【Devexpres】spreadsheetControl自动列宽
Worksheet worksheet = this.spreadsheetControl1.ActiveWorksheet; worksheet.Import(datatable, true, 0, ...
- 前端学习 linux —— 软件安装(Ubuntu)
软件安装(Ubuntu) 本篇主要讲解 ubuntu 中软件的安装.apt 的源.内网部署案例(graylog 为例),最后是 python 开发准备. apt 和 rpm 在linux 第一篇我们知 ...
- 3. qtdesinger的使用方法
专栏地址 ʅ(‾◡◝)ʃ windows 上使用 qtdesigner 找到那个路径直接打开就行了 linux 上使用 qtdesigner 打开 qtcreator 软件 1. 启动软件,新建项目 ...
- 第二十五节:scrapy爬虫识别验证码(四)手绘验证码识别
一.介绍 今天主要介绍的是微博客户端在登录时出现的四宫格手绘验证码,不多说直接看看验证码长成什么样. 二.思路 1.由于微博上的手绘验证码只有四个宫格,且每个宫格之间都有有向线段连接,所 ...
- 【大数据课程】高途课程实践-Day02:利用Hive SQL编写离线数仓实现可视化展示
〇.概述 1.实现内容 使用Hive SQL编程,构造分层离线数仓 并可以通过Quick Bi进行展示 2.过程 (1)数据接⼊到ODS层 (2)进⾏ODS到DWD层数据开发 (3)进⾏ODS到DIM ...
- 这玩意也太猛了!朋友们,我在此严正呼吁大家:端好饭碗,谨防 AI!
你好呀,我是歪歪. 最近几天大火的 ChatGPT 你玩了吗? 如果你不知道它是个什么东西,那么我让它给你来个自我介绍: 说白了,就是一个可以对话的人工智能. 我开始以为就是一个升级版的"小 ...
- SpringBoot向Excel模板中写入数据并下载 (无需获取file对象及模板绝对路径)
之前用获取模板路径的方式测试没问题打包后就有问题了 莫名出现一个! 找了很多教程尝试无果 最终使用下面这个方式 无需获取file对象以及模板路径的方式进行写入下载 (那个设置浏览器编码没有测试不知道能 ...
- JavaScript:代码细节和良好编码习惯
这些细节,与语法无关,仅仅是编写代码时需要注意的最最基本的细节和一些良好编码习惯. 注释代码 注释代码分为单行注释和多行注释,如下所示: 严格区分大小写 JS的代码时严格区分大小写的,变量a和A是不同 ...
- WireShark抓包入门教学
wireshark抓包新手使用教程 Wireshark是非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息.常用于开发测试过程各种问题定位.本文主要内容包括: 1.Wiresha ...