完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
本人所搭建的平台包括电源,STM32F103开发板,copley驱动器和maxon伺服直流电机,开发板通过驱动器读取电机编码器的信号,所用定时器为定时器8,同时读取编码器AB相,自动重装载值为3999,故电机轴旋转一圈,定时器从0计数到3999,但由于电机前端安装有减速箱,即输出轴为减速器的轴,减速比为128:1,故输出轴旋转一圈,定时器8的计数值应为128X4000=512000。
代码如下: void TIM8_Encoder_Init(void) { GPIO_InitTypeDef GPIO_InitTypestruct; TIM_TimeBaseInitTypeDef TIM_TimeBaseInitTypestruct; TIM_ICInitTypeDef TIM_ICInitTypestruct; NVIC_InitTypeDef NVIC_InitTypestruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_TIM8,ENABLE); // RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); GPIO_InitTypestruct.GPIO_Mode=GPIO_Mode_IPD; GPIO_InitTypestruct.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7; GPIO_InitTypestruct.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOC,&GPIO_InitTypestruct); TIM_TimeBaseInitTypestruct.TIM_Period=3999; TIM_TimeBaseInitTypestruct.TIM_Prescaler=0; TIM_TimeBaseInitTypestruct.TIM_CounterMode=TIM_CounterMode_Up; TIM_TimeBaseInitTypestruct.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseInitTypestruct.TIM_RepetitionCounter=0; TIM_TimeBaseInit(TIM8,&TIM_TimeBaseInitTypestruct); TIM_EncoderInterfaceConfig(TIM8,TIM_EncoderMode_TI12,TIM_ICPolarity_Rising,TIM_ICPolarity_Rising); // TIM_ICStructInit(&TIM_ICInitTypestruct); TIM_ICInitTypestruct.TIM_Channel=TIM_Channel_1; TIM_ICInitTypestruct.TIM_ICFilter=15; // TIM_ICInitTypestruct.TIM_ICPolarity=TIM_ICPolarity_BothEdge; TIM_ICInitTypestruct.TIM_ICPolarity=TIM_ICPolarity_Rising; TIM_ICInitTypestruct.TIM_ICPrescaler=TIM_ICPSC_DIV1; TIM_ICInitTypestruct.TIM_ICSelection=TIM_ICSelection_DirectTI; TIM_ICInit(TIM8,&TIM_ICInitTypestruct); // TIM_ICInitTypestruct.TIM_Channel=TIM_Channel_2; // TIM_ICInitTypestruct.TIM_ICFilter=15; TIM_ICInitTypestruct.TIM_ICPolarity=TIM_ICPolarity_BothEdge; // TIM_ICInitTypestruct.TIM_ICPolarity=TIM_ICPolarity_Rising; // TIM_ICInitTypestruct.TIM_ICPrescaler=TIM_ICPSC_DIV1; // TIM_ICInitTypestruct.TIM_ICSelection=TIM_ICSelection_DirectTI; // TIM_ICInit(TIM8,&TIM_ICInitTypestruct); // TIM8->CR1&=~(3<<5); // TIM8->CCMR1|=1<<0; // TIM8->CCMR1|=1<<8; // TIM8->CCER&=~(2<<0); // TIM8->CCER&=~(1<<5); NVIC_InitTypestruct.NVIC_IRQChannel=TIM8_UP_IRQn; NVIC_InitTypestruct.NVIC_IRQChannelCmd=ENABLE; NVIC_InitTypestruct.NVIC_IRQChannelPreemptionPriority=0; NVIC_InitTypestruct.NVIC_IRQChannelSubPriority=0; NVIC_Init(&NVIC_InitTypestruct); TIM_ARRPreloadConfig(TIM8,ENABLE); TIM_ClearFlag(TIM8,TIM_FLAG_Update); TIM_ClearITPendingBit(TIM8,TIM_IT_Update); TIM_ITConfig(TIM8,TIM_IT_Update,ENABLE); TIM_SetCounter(TIM8,0); TIM_Cmd(TIM8,ENABLE); } |
|
|
|
只有小组成员才能发言,加入小组>>
2435 浏览 0 评论
9100 浏览 4 评论
36773 浏览 19 评论
5026 浏览 0 评论
24745 浏览 34 评论
1528浏览 2评论
1743浏览 1评论
2193浏览 1评论
1553浏览 0评论
524浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 21:20 , Processed in 1.217187 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号