#include "stm32f10x.h"
#include "encode.h"
#include "misc.h"
#include "nvic.h"
#include "sys.h"
#include "delay.h"
void TIM4_Mode_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_ICInitTypeDef TIM_ICInitStructure;
//PB6 ch1 A,PB7 ch2
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);//使能TIM4时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//使能GPIOA时钟
GPIO_StructInit(&GPIO_InitStructure);//将GPIO_InitStruct中的参数按缺省值输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//PA6 PA7浮空输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_14;//PE2~4
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //设置成上拉输入
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOE2,3,4
TIM_DeInit(TIM4);
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
TIM_TimeBaseStructure.TIM_Period = 359*4; //设定计数器重装值 TIMx_ARR = 359*4
TIM_TimeBaseStructure.TIM_Prescaler = 0; //TIM3时钟预分频值
TIM_TimeBaseStructure.TIM_ClockDivision =TIM_CKD_DIV1 ;//设置时钟分割 T_dts = T_ck_int
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
TIM_EncoderInterfaceConfig(TIM4, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising ,TIM_ICPolarity_Rising);
TIM_ICStructInit(&TIM_ICInitStructure);//将结构体中的内容缺省输入
TIM_ICInitStructure.TIM_ICFilter = 6; //选择输入比较滤波器
TIM_ICInit(TIM4, &TIM_ICInitStructure);//将TIM_ICInitStructure中的指定参数初始化TIM3
//TIM_ARRPreloadConfig(TIM4, ENABLE);//使能预装载
//TIM_ClearFlag(TIM4, TIM_FLAG_Update);//清除TIM3的更新标志位
//TIM_ITConfig(TIM4, TIM_IT_Update, DISABLE);//运行更新中断
//Reset counter
TIM4->CNT = 0;//
TIM_Cmd(TIM4, ENABLE); //启动TIM4定时器
关键字:stm32 空编码器 tim4初始化
引用地址:
stm32 中空编码器tim4初始化
推荐阅读最新更新时间:2024-03-16 16:13
STM32的库如何实现对同一组IO口的一部分引脚进行读写
以写数据为例,提供的函数有 GPIO_SetBits GPIO_ResetBits GPIO_WriteBit GPIO_Write 比如我在PD口的高八位接了个并行的数据线,低八位为控制,有输入有输出。怎么实现对高八位写任意数而第八位不受影响呢。 前两个函数肯定都不可以。 第三个也不行,是对一个或多个IO口置位或复位。 第四个是写整个口,势必影 响到第八位的控制信号啊。 能想到的是写一个for循环,判断每一位然后调用八次 GPIO_SetBits GPIO_ResetBits 是不是太麻烦了。。。。 知道一个方法,读输出再写输入就可以了。 GPIO的寄存器BSRR和BRR 端口位设置/
[单片机]
利用STM32的TIM1/TIM8输出可以移相的互补PWM
前言:TIM1、TIM8是STM32的高级定时器,在高容量的STM32芯片中含有TIM8,低容量芯片只有TIM1。这两个定时器是完全独立工作的。在实际工作中,我们希望他们有时间上的联系。比如做全桥移相的时候,需要两个PWM之间有一个相位差,并且可以调整相位宽度。这点STM32是可以做到的。 思路:TIM1作为主定时器,TIM8作为从定时器。TIM1_CH1/CH1N、TIM8_CH1/CH1N互补输出。另取通道TIM1_CH2产生的OC2REF作为触发源TRGO。设置TIM1_CH2的比较寄存器TIM1_CCR2,设定延时时间。当TIM1_CH2比较溢出,产生OC2REF上升沿,TIM8作为从模式收到TRGI上升沿,产生复位,从头
[单片机]
在Mac OS X中使用VIM开发STM32(3)
在上一篇文章中,我们安装了ctags插件,ctags能对我们的源代码文件中的元素建立索引表,但是只有索引表是不够的,我们希望以一种更直观的方式显示出当前文件中定义的变量、函数等信息,所以我们需要一个新的插件taglist。 (三)安装代码浏览插件taglist 3.1 下载taglist 首先我们要前往网站 http://vim-taglist.sourceforge.net/ 下载taglist,这个项目已经很久没有更新了,你下载到的应该是taglist_46.zip这个文件,我们把它解压到任意目录,会看到它的文件目录如下: 3.2 安装taglist taglist作为vim插件,安装非常简单,我们只需要将doc和
[单片机]
【STM32】SysTick滴答定时器(delay延时函数讲解)
STM32F1xx官方资料: 《Cortex-M3权威指南-中文》-第8章最后一个小节:Systick定时器 SysTick定时器 Systick定时器,是一个简单的定时器,对于CM3、CM4内核芯片,都有Systick定时器。Systick定时器常用来做延时,或者实时系统的心跳时钟。这样可以节省MCU资源,不用浪费一个定时器。比如UCOS中,分时复用,需要一个最小的时间戳,一般在STM32+UCOS系统中,都采用Systick做UCOS心跳时钟。 Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器,计到0 时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使
[单片机]
初学stm32-Systick滴答时钟定时
滴答定时器概述 Systick定时器,是一个简单的定时器,对于CM3,CM4内核芯片,都有Systick定时器。常用来做延时,或者实时系统的心跳时钟。这样可以节省MCU资源,不用浪费一个定时器。比如uCOS中,分时复用,需要一个最小的时间戳,一般在STM32+UCOS系统中,都采用Systick做uCOS心跳时钟。 Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器,计到0 时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作。 SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。
[单片机]
基于STM32的平衡小车设计过程分享(2)
一、简介 续上文,电机驱动部分完成,接下来我们给他加上一个OLED的显示功能和MPU6050的姿态检测功能 二、姿态角显示开发 2.1 MPU6050简介 MPU6050是一种集成了3轴陀螺仪和3轴加速度计的数字运动处理器。它由英飞凌公司开发,可用于测量物体的角速度、加速度和方向,广泛应用于机器人、无人机、游戏手柄、智能手机和运动监测等领域。MPU6050采用I2C接口进行通信,具有低功耗、高精度、小尺寸等特点,是一款非常优秀的运动传感器。 2.2 OLED简介 OLED(Organic Light Emitting Diode)是有机发光二极管,是一种新型的显示技术。与传统的液晶显示屏相比,OLED显示
[单片机]
意法半导体新STM8和STM32手机应用软件优化微控制器选型
中国,2021年8月11日——为帮助开发者轻松快捷地找到适合项目的微控制器,意法半导体在主要应用商店和公司官网st.com发布了先进的手机应用。 STM8 Finder和STM32 Finder替代以前的ST MCU Finder手机应用,利用最新的应用软件设计技术,为用户提供稳健和便利的使用体验。新功能包括强大的搜索筛选器,让用户更细致地描述所需的外围设备。自适应图形界面能够根据智能手机或平板电脑的触屏以及屏幕方向自动优化显示效果,内容缓存支持离线搜索。此外,新的增量数据库管理功能在数据更新时可大限度地减少数据使用量和等待时间。 这两款应用软件可以查看STM8 8位微控制器、STM32 32位Arm®Cortex®
[嵌入式]
STM32的一些基本知识总结
Cortex-M3缩略语 AMBA:先进单片机总线架构 ADK:AMBA设计套件 AHB:先进高性能总线 AHB-AP:AHB访问端口 APB:先进外设总线 ARM ARM:ARM架构参考手册 ASIC:行业领域专用集成电路 ATB :先进跟踪总线 BE8:字节不变式大端模式 CPI:每条指令的周期数 DAP:调试访问端口 DSP:数字信号处理(器) DWT:数据观察点及跟踪 ETM:嵌入式跟踪宏单元 FPB:闪存地址重载及断点 FSR:fault状态寄存器 HTM:Core Sight AHB跟踪宏单元 ICE:在线仿真器 IDE:集成开发环境 IRQ:中断请求(通常是外中断请求) ISA:指令系统架构 ISR:中断服务例程 I
[单片机]