void Knob_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_ICInitTypeDef TIM_ICInitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
GPIO_PinRemapConfig(GPIO_FullRemap_TIM1, ENABLE);
GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOE,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOE,&GPIO_InitStructure);
TIM_DeInit(TIM1);
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
TIM_TimeBaseStructure.TIM_Period = MAX_DISTANCE-1;
TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
//TIM_ARRPreloadConfig(TIM1, ENABLE);//
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
TIM_EncoderInterfaceConfig(TIM1, TIM_EncoderMode_TI12,
TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
TIM_ICStructInit(&TIM_ICInitStructure);
TIM_ICInitStructure.TIM_ICFilter = 6;//ICx_FILTER;
TIM_ICInit(TIM1, &TIM_ICInitStructure);
TIM_ClearFlag(TIM1, TIM_FLAG_Update);
//TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
TIM_SetCounter(TIM1, 0);
TIM_Cmd(TIM1, ENABLE);
}
直接调用以下函数获得计数值
n_Counter1 = TIM_GetCounter(TIM1);
关键字:STM32F107 高级定时器 TIM 增量编码器 接口配置
引用地址:
STM32F107高级定时器TIM1使用 增量编码器接口配置
推荐阅读最新更新时间:2024-03-16 16:14
STM32F107定时器4用作外部计数器的配置方法
不用配置引脚为输入模式,TIM_TIxExternalCLK1Source_TI2为PB7引脚 void TIM4_Init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); TIM_TimeBaseStructure.TIM_Period = 0xffff; TIM_TimeBaseStructure.TIM_Prescaler = 0; TIM_TimeBaseStructure.TIM_ClockDivision = 0;
[单片机]
STM8的TIM1定时器简单使用
STM8的TIM1是16位高级控制定时器,简单的定时溢出中断。功能实现LED1亮500ms,灭500ms,循环往复。 #i nclude iostm8s103f3.h void CLK_init(void) { CLK_CKDIVR = 0x08; // 16M内部RC经2分频后系统时钟为8M } void GPIO_init(void) { PD_DDR = 0x08; // 配置PD端口的方向寄存器PD3输出 PD_CR1 = 0x08; // 设置PD3为推挽输出 } void TIM1_init(void) { TIM1_PSCRH = 0x1F; // 8M系统时钟经预分频f=fck/(PSCR+1) TIM1_PS
[单片机]
AMD称桌面四核CPU圣诞节上市 代号"Agena FX"
上周,AMD终于揭开了四核桌面处理器的神秘面纱,该产品代号为Agena FX,该处理器采用单、双接口socket配置,双接口socket配置标志着AMD首次展示八核桌面处理器。预计该产品今年圣诞节上市。AMD详细制定了明年的桌面处理器产品计划,最终计划较此前的计划推后一个月时间。 据国外媒体报道,本周一,AMD将正式发布Agena FX处理器的商品品牌Phenom FX,但正式的发布日期仍然没有确切的消息。AMD公司执行副总裁兼CFO 罗伯特-瑞维特表示:四核心Barcelona将在今年夏天上市,预计在7、8月份左右,然后是桌面版的Agena FX。 AMD在演示了Phenom FX系统的性能,将1080p 高画质电影拖车编码几乎实
[焦点新闻]
stm32 TIM输出pwm有些通道不能输出的问题
今天晚上在玩舵机,看了一下例程的代码,于是想换个通道实践一下,于是想把TIM1的通道由ch1换到ch2,于是就把搞了PA8换成了PA9(数据手册上有),把TIM_OC1PreloadConfig换成了TIM_OC2PreloadConfig,试了一下不行,后来又找哪里的OC1没换成OC2,发现TIM_OC1Init没换,于是换成TIM_OC2Init,试了一下还是不行,又在pwm.c里找了好久找不到,网上找答案,以为ch2是默认关闭的,发现不是,后来终于发现主函数里的TIM_SetCompare1没换成TIM_SetCompare2,这种粗心花了我一个小时找答案。。。
[单片机]
STM32_TIM延时讲解
今天讲解STM32F103定时器延时功能,TIM的功能很强大,后续慢慢讲解。今天从简单开始讲解定时器,以下面软件工程实例来讲述。 软件工程下载地址(360云盘): https://yunpan.cn/cP5utM7kxIReM 访问密码 6f12 工程现象:间隔(定时器延时)500ms LED变化一次, 并且串口打印 STM32F103ZE有8个定时器(TIM1 – TIM8), 这里工程使用TIM4为例。 STM32F10x的资料可以在我360云盘下载: https://yunpan.cn/crBUdUGdYKam2 访问密码 ca90 关于TIM延时,我把重要的几点在下面分别讲述,工程中没有在这里
[单片机]
STM8S的TIM1定时器====总览
STM8S单片机内部集成了6个定时器模块,分别是高级控制型(TIM1)、通用型(TIM2、TIM3)和基本型(TIM4)。 高级控制型和通用型都是16位结构定时器,而基本定时器是8位结构。本文重点讲解TIM1类型定时器。 高级控制型定时器TIM1是STM8S208R单片机内部最强大的定时器,它是一个16位的自动装载计数器,可以实现向上、向下计数。计数的时钟可以软件选择片内系统时钟或外部时钟信号计数,并同过可编程的预分频器驱动。 TIM1定时器具有4个独立的捕捉/比较通道,可以实现基本的定时功能,测量输入信号的脉冲宽度、产生输出PWM波形功能。 TIM1带有互补输出、死区控制和中心对齐的PWM功能,可以应用与马达控制
[单片机]
STM32F107 USB作为device的插拔检测
在USB的协议里,只有主机和HUB具有设备移出检测功能,作为从设备(device)往往不具有设备断开连接的检测,需要自己设计一种检测机制,判断USB主设备是否与之断开。STM32的USB是OTG设备,既可以作为主机也可以作为设备,当其作为设备通过USB与PC通信时,可能会需要STM32检测是否与PC断开连接,这时候不可以向PC发数据,在PC连接上时,可以继续USB通信。 检测USB断开连接的方法有多种,USB在断开时会有SUSPEND中断,但是USB总线上没有数据时,主机也可以将其挂起,产生SUSPEND中断,所以这种方法不可靠,另外就是PC定时向USB device发送数据,当USB device没有收到数据时即可认
[单片机]
W806-ADC-PWM-TIM尝鲜
本文使用环境: 电脑:windows10 主控:W806(240MHZ) 编译环境:平头哥的CDK 注意:本文默认已经搭建好平台。 前言 写这篇问章的目的是记录一下自己的ADC使用路程,前期这个ADC我是一直没有看明白,后面才搞的是懂非懂。 当然本文肯定不止使用ADC,那样显得没有技术水平,SO,为了提升技术难度,在adc的基础上加了一点点东西: 使用PB0产生100KHZ动态变化的的PWM,然后由PA1的ADC获取到,并转化成实际的电压。B0产生的PWM通过不断的改变比较值可以输出不同的电压,所以就能够满足ADC的采集要求,这里需要注意的是,不能直接测量电源电压,要不然要烧。。。。。 完整程序下载: https://down
[单片机]